-Beta 1.0 milestone-
I am surprised to acknowledge 11.000 lines of code !!
I have 36 php files, the most complex are of course the ones handling the fight, tournaments, running the tick, displaying the town, and the data files. Everything has been typed stroke by stroke by my little fingers :)
All code files total 360 ko, the whole game is now 3.4 mo large. Beta has been reached in two months. I evaluate the workload at around 250-300 hours of code, thats still 37 lines per hour, or 200 lines a day. This includes debug, of course, which doesnt produce many new lines :)
I could compared this to UCK (Ultima Construction Kit), about 12.000 lines of pascal, done in 6 months over 5 years (91-95), total 15 mo (lots of graphics). Realms has also around 12.000 lines in pascal, done in 4-5 months (98), total 43 mo (lots of graphics and save copies). I coded them both by myself.
I have to say that php coding is very strange. Its basically a C syntax, but with the web environment, and some language specificities, it is a very relax coding, which isnt exactly an advantage. With no compiler, its very hard to get a clean code. Impossible to debug with Netscape, which doesnt display anything at the slightest problem. In the end, I got used to it, and with the use of a database, it forces new habits and technics.
27th october 2000
Some more talents have been implemented, and those using karma actually do. You can "buy" karma using the Karma Ritual talent. Talents are also limited to specific classes now. The precise distribution will be tweaked over time.
The code for buildings has been revamped but you wont see any difference :) Now each possible action is clearly a different piece of code (a separate php file), and any building can call any type and any number of actions.
Likewise the code for shops has been revamped, and any kind of objects can be sold at any place. The shops simply need to have a storage. Items have different types, I use the types I designed for UCK, thats WAFETOM : Weapon Armor Food Enlight (torchs and all) Treasure Objects Magical.
The magic system is working, and a few spells are implemented. However I wont use the Earthdawn system here. It doesnt fit battles. You have two ways of casting a spell. Use the spellcasting talent anytime, or thread the spell into a matrix in advance, and release it without test when you want. In any case you must learn the spell before, and the effect happens on the casting round.
Tournaments now accept any number of people, beyond 4. A pool system selects players, down to a multiple of two. It is all automated (number of pools, winners by pool, fights inside each pool...). Quite a complex code design, I have to say, but very few lines in the end ! :)
Fights can now be played up to first blood (one fighter is hit), wound, knockout or death.
Any damage now need the use of recovery tests. You have a number of tests depending on your attribute Toughness (1, 2, 3 or more a day). This is played automatically at the start of each new day. In the future, this will be linked to a night's rest.
Death leaves a penalty. If you die, you suffer a penalty of one point on all tests. You recover from this penalty after you gain 5% of your current experience points. For instance, if you die at 1000 XP, the penalty fades away when you gain 50 more XPs. This is basically the Asherons Call principle, which I find very good.
When you are unconscious, you are carried to the temple, where you can pay for resurrection, cure or cure wounds. You cant exit the building when unconscious.
Graphically speaking, more buildings have been done, and can now use animations. Smokes, fires, waterfalls, whatever can be done. The system is designed so that any number of animations can be placed where you want on any building (on separate gifs). Whats more, the game or game masters can alter the state of buildings, and thus decide which animation set to use. This will be used for instance for night and day animations, or during tournaments (flags in the wind !). The same system will also be used to have different pictures for buildings for different day phases.
I shouldnt say so now, but I started coding the "world view", where you will be able to exit the town and roam the landscape :) fight wandering monsters, enter dungeons, other towns... I decided to do that before the "dungeons" phase. The view will be an ultima-style display, probably. Close to what I did in UCK.
This is not Arena-specific, but is extremely useful for all web development. I did a small module that grabs the file tree on the server and retrieves any file location when I need one (file inclusion, image, save file...). Technically I dont need to know a file directory anymore in advance. I can move them around as I wish. Constraints : all pages need to load this code at the start, and no two files can have the same name.
13th october 2000
Almost there !
Another bunch of things have been added. The beta milestone is in sight (need to beef up the tournaments, implement basic magic, design a penalty for death, use of karma).
Most melee talents are implemented. Thats the melee weapon talents only, not throwing or unarmed combat. Their balance and counter-effects have to be tuned, but the system is working.
Players do not see "turns" anymore. The turn value is translated into a more roleplay date and hour, taken out of Asheron's Call mostly. There is still 24 hours a day. Regarding plannings, you can only choose now from unused slots, from common unused slots when provoking an opponent, and longer-than-one-turn actions are now working (example : improving an attribute).
Clicking on a character sprite opens a summary display with the character's basic values, and allows to send him a message. You access your own message list through the main display, and the list of your characters.
When inside a building, you see who's there, and you can enter a chat window ! This is a php chat system, using the refresh principle. Its not realtime, but it doesnt use java, and is compatible with absolutely all browsers (provided they can display a text string !). I also started a npc dialog system : when typing the name of a npc and words he recognizes, he will parse the string and answer ! Will probably get deeper into this NLP (natural langage processing) field. Will perhaps limit to one chat room per town, plus possibility to open a temporary one per building for private sessions.
Been working a bit on the combat : you suffer wounds, need to recover them as well as damage, and are limited by the number of recovery tests you are entitled to. Could be interesting to describe the wounds, and leave scars ?
Easier than talent tactics, there is also now stance tactics, where you simply decide to be defensive, neutral or aggressive, with bonus and penalties depending on the balance.
Code-wise, I have at last got rid of the enslavement of the file tree. Now a function lists all files and their location, and when calling a file, its directory is added, so now I can put files anywhere, neatly. The disadvantage is that all pages need to make the list each time, but its server-side workload.
Shops now have a storage, and only offer what they really have around. They also display all items at once graphically, and not through a dropdownlist. Needed to workaround netscape's deficiencies again here, with java and forms...
Battle reports have their own file, and linked from the story page. This lighten the story, and will allow other people to see the battles, for instance in the arena.
I added the bids ! You can bid on any fight in the tavern or the arena. Bid values depend on what everyone decided to bid.
A hall of fame page has been added.
Tournaments are now created by a host, and the winners share the purse, while the host gets the entry fees. Semi-finals and finals are implemented, need to work the start of large tournaments to get fighters down to a multiple of 2.
22nd september 2000
This is not really a development step, but a lot of things have been done and improved.
Character creation has been refined, and graphics added. Talents choice are thrown out and must be learnt during the game. Race bonuses/maluses are displayed.
XP value is calculated at the start of each fight now, and you gain xp again. You also gain levels, and can use the xp to learn and improve talents.
Most important, tactics are integrated. You can learn battle situations and reactions in the Tactic Center, and also define / alter your tactics there. Talents also start to get into the game, a few are actually working, but the structure is almost complete, with clash effects, bonuses, durations, strain, etc. They really affect battle outcomes a lot, even at this early stage.
All characters now have a planning instead of a single action for the next turn. So you can decide ahead what you will do, buy items, learn talents, battle an opponent... Actions all have a delay of one turn only, but some will need longer than that.
Decision was taken to tick the turns each hour, with a world hour = a game hour. This will definitely make a more dynamic game, and introduce interesting factors like night activities.
I will soon include an attitude definition for each character. You will decide for instance to refuse all fights in the tavern, or accept them. Right now fights are always accepted by default, to speed up the tests.
Late 6th september 2000
The Earthdawn system is starting to be integrated ! Character creation has been modified, and now uses a java counter for attributes value. Races are also part of the pictures, although the original Windling was replaced by a more common Halfling.
The main change from the Earthdawn rules will be the classes. It will be closer to a career system, as in Warhammer. You have five type of careers : fighter, rogue, wildman, caster and believer, and progress in one type, possibly switching along the way. Talents will be redistributed among the new 35 (!) classes, compared to about 10 in Earthdawn.
The font display for links was made clearer...
Combats are now played along the Earthdawn rules. Tournaments should be quick to be put back in. Experience will be longer to do, as this will have to be written down first.
Visiting the town you now see little people representing all the active characters in the game !
Fighting along with someone now requires that he accepts the fight. This is a step away from the standard turn by turn structure, but is necessary to avoid missed encounters.
Thinking about the messaging system now... You will probably click on the sprite of the character to send a message to him. Being in the tavern you will be able to offer a drink to someone in order to know more about his attributes and stuff. Fights will be posted in the tavern, allowing bets to be taken (as it will be for the tournaments probably). Things like this.
31st august 2000
Tournaments are basically integrated now. They work well but need a multiple of 2 number of opponents. They dont randomize the first round and put the first registered against the second and so on... They go on until there is only one :) He grabs the full price for himself.
I tried to move the whole site to multi frames to allow for a different background on the sides and behind the text, but this an updating nightmare. And the tags -table- and -td- support the background argument, which gave a good solution. Netscape allows this argument for -tr- too, but not IE !! I also revamped the font and had to give a point-precise size, as both browsers give different calculations otherwise.
Late 30th august 2000
About 60 coding hours total
The action system has been revamped to get near the final look. There is now a "Town" page where all possible activities are a hotspot on the map. Clicking on one will offer the option and its parameters, like for instance buying an object.
The tick is now completely independant from any character or action. It has to be generated in a "game master" page that would ultimately be private.
Players can now access only their own characters and fight only other players'...
And much interesting, some graphics are now coming on the site, giving a much friendlier atmosphere :)
Oh, and an option to delete a character was added. I will perhaps add the cemetary where dead and destroyed characters would lay...
New ideas : create an html file for each character with his own "story", eliminating the need to stock that in the database, and the need to erase it regularly. With some nice wording it would be closer to a real reading.
Game system : will probably use the EarthDawn system.
Late 27th august 2000
Every action of the game has now been linked to a turn being generated. A battle is not resolved automatically, your action is logged in and will be resolved at the next turn. Once the turn is complete, you can see the result on the "Story" page. When you have read the Story it is erased. The game checks if a turn must be generated each time any user checks the story page. Currently a turn delay is one second, so each time you check the story the turn is calculated :).
Visiting a shop is also linked to generating a turn. You can buy one type of object only each turn. In the end each shop will be completely independant.
27th august 2000
Shops have been added, you can buy weapons and armors. Huh you dont gain much gold so your choice is limited. You will gain money in tournaments.
Experience is also accumulating, levels are increased, and with each level you gain one point to increase your stats.
Late 26th august 2000
Battle between two warriors is now complete, the system is very simple and rude, but its technically working.
26th august 2000
Character creation is complete, with a choice of classes, and your values for attributes. Quite straightforward, but it will be made more complex later.