Progress Reports (2002)

»» 2002 | 2003 | 2004 | 2005 | 2006 | 2007 | 2008 | 2009 | 2010 | 2011 | 2012 |

Week 52

ending Sunday 29th December


Unfortunately I wasn't able to install cygwin on my father's PC - and even if I had, I wouldn't have had very much time to do anything, due to a very hectic Christmas. I did manage to scribble down some ideas for several new combat techniques, but unfortunately that was all I had time for.

Week 51

ending Sunday 22nd December


Several new log messages have been added to provide better tracking of what's happening within the mud, and a "users" admin command has been implemented which displays the IP addresses of all currently connected accounts.

A Primal cap has been put in place, which is currently set to double the number of Primal you need to train a stat. This may have some interesting implications when it comes to using Primal to train up Powers as well, but for the time being I think it'll be okay. I've also corrected a minor bug whereby Primal wasn't being properly decremented when you trained a stat.

Fixed a minor bug with the parser, and corrected some oddities with air-based fighting techniques (jumping kicks, jumping spinning kicks, etc) which were allowing you to leap into the air and throw off dozens of kicks before landing back on the ground.

The stat system has been redesigned slightly to improve some balance issues that were worrying me. STA, SIZ and DIS have each lost +2 HEALTH and gained +1 RESISTANCE. AUR has lost +1 MANA and gained +1 SPELL-RANGE (a new stat which adjusts the range of spells you cast). In addition, the "Athletics" and "Meditation" skills now each provide percentage bonuses to HEALTH and MANA respectively - so if you have a base HEALTH of 50 and 200 in Athletics, for example, you would gain a 200% bonus, giving you a HEALTH of 150.

The stance-related messages now say "style" instead of "stance", and the combat tables have been updated to include two new columns - one for two handed techniques, the other for stance-specific techniques.

I've reorganised the score layout to (hopefully) make it more intuitive.

I've got objects saving, but they don't yet load. It shouldn't take too much to get that working as well though.

I've also put together designs for four of the Mage Disciplines, based on discussions I've had with Rotain over the last few months.

This weekend I'm flying back to the UK to spend Christmas with my parents. While there, I hope to get some more parts of the mud tidied up, but it really depends on whether or not I can get cygwin installed on my father's PC.

Week 50

ending Sunday 15th December


Added a new MakeMonster() function which creates a mob of a specified power level at a specified location. The mob will always have a power level of at least 90 stat points, but a higher level may be specified. The "make" command now uses this new function, and generates a power level for the mob based on it's creation point in the world. These mobs are also given a random class (vampire, werewolf or demon) which determines what sort of stats they're likely to have. When I get the time I'll actually put together some monster "classes" - but as they are fully compatible with the player classes, it doesn't really matter for the time being.

Many of the fighting technique functions were resulting in duplicated code, so the "standard" attack functionality has now been moved into a single generic function. I thought it was a good idea to do this now, before we start adding all the combo techniques to each weapon table.

The "thrown dagger" combat table has been implemented - you can now change a dagger into throwing mode through the "flip" command for that location (and the same command in thrown mode will change it back to melee mode). A thrown dagger will reappear back in your inventory for the time being - we're going to need to decide the best way to handle this (obviously if you lose your dagger, nobody is ever going to throw them, but equally we want to avoid giving people unlimited ammo).

To prevent too much confusion (and character hijacking) the creation system has had some restrictions placed on it. You can no longer create an account if there is already a character with that name, and you can no longer create a character if there is already an account with that name (unless you also own the account).

Instead of displaying all possible commands when you type an invalid command, you are now simply adviced to use the new "commands" command, which displays a nicely-formatted list of currently available commands.

The initial draft for the werewolf powers has been completed and posted to the forums for feedback.

Week 49

ending Sunday 8th December


The score now displays your ATTACK and DAMAGE for each hand, and for your feet, rather than just giving one overall stat for each. This means I'm now able to include the bonuses for combat tables and weapon skills, which are each specific to the location being used. While fiddling around with this I also located and fixed a minor bug with stances, and corrected weapon skills so that they are saved when they improve. The combat code has also been adjusted slightly to take into account the new method for calculating location-based ATTACK and DAMAGE.

The skill improvement has been adjusted slightly as well, so that there is now a chance of your Shield skill increasing when you get hit, not just when you hit others (because after all, how often do you actually hit someone with a shield?). In addition, the weapon skills also combine with your Combat skill, which in turn has a chance of increasing every time a regular weapon skill increases.

I've made a number of modifications to the magical item generator, including fixing a minor bug in the bonus calculation, and balancing some of the bonuses a bit better. I've also updated the "class" class to include functions for dropping treasure and displaying decapitation messages. This functionality has now been integrated into the combat system along with Jobo's Primal calculator, so that when you kill a mob (or a player) it drops some random equipment and awards you Primal. The train command has also been updated to use more accurate Primal costs.

I fixed a nasty bug whereby if you picked someone up, they could then pick up and wear equipment you were wearing. Now they can only pick things up from your inventory. Following on from this, I've also added a new Thing method called PutInternal(), which allows a Thing to send a message to everything inside itself.

I've added several more cosmetic changes, such as informing people inside you whenever your inventory changes, letting other people know when you change stance or gender, and so on. In addition, whenever you do something, everyone else is informed of your location relative to themselves (eg "Five feet north of you, KaVir draws an iron longsword").

The "chat" command can now be used as soon as you've created or loaded an account - you no longer need to have a character in the game (the chat itself uses your account name rather than your character name, as well). The messages from "chat" are no longer displayed to people who haven't yet created or loaded an account. Equally, the "who" command has been modified to display account names rather than character names, and it's now available as soon as you've created or loaded your account.

Because of the way the dynamic descriptions work, the "help" command only used to be available after you'd loaded or created a character. It has now been adjusted so that you can access it at any time when you are connected (even before you load your account).

I've added a "tell" command, which allows one account to send a message to another account. I've also added a simple "emote" command, which works for characters (not accounts).

The parser has been modified to accept an optional number at the front of an argument. For example you can now "get 2 sword" to pick up the second sword on the ground, or "target 4.vampire" to target the fourth vampire you can see, or "wear 3helm" to wear the third helmet in your inventory.

Prompts have been put back - they were removed originally because of display problems (if someone sent you a message it would appear at the end of your prompt). For such a simple problem, it was actually quite fiddly to fix, but I finally got around to doing it. It is also now possible to customise your prompt, although it doesn't save yet.

Thanks also go out to SaGe and several people from Deus (particularly Unifex), who helped me pin down a really annoying bug on Sunday.

Week 48

ending Sunday 1st December


Once again I've had a very busy week, as I suspected I would, and have thus not been able to do as much as I'd have liked. Still, I was able to make up some extra time on Sunday, so I've got most of what I wanted in place.

The basic magical item generator has now been implemented, although it doesn't yet include all bonus types, nor does it take into account the wear location of the object. However it is now in a separate module, fairly cleanly coded, and includes both item category (Legendary, Relic, etc) and rarity (common, uncommon or rare), as well as calculating the radiation (which currently doesn't affect you in any way). These stats are displayed to the player when they look at the item.

I've updated the GetNearby() Thing method so that it takes into account distance, and overloaded it so that if no specific target is specified, it will return a vector of everything nearby. I've also added two new Brain methods called GetKnowledge() and SetKnowledge(), which allow the Brain to be informed or queried regarding information - currently it is only informed when it's body comes under attack, but this can be easily expanded later. This functionality has been added for Kastagaar's new mob AI code, so that mobs can look around for appropriate targets and respond when attacked.

Some minor cosmetic changes have been made to the mud as well, in terms of the layout of feedback generated by user commands (most notibly the "who" command, but several others have been updated as well). This has been done utilising three simple gw2 library functions I've added.

A few minor bugs have been fixed, including one which Jobo told me about months ago but which I never got around to fixing.

I've also started putting together a design for Werewolves, like I did previously for Vampires. It is currently about one third complete.

Week 47

ending Sunday 24th November


Unfortunately I had practically no free time this week. Other than finalising the design for magical items, I only had time to integrate Jobo's Primal-calculation function into the mud, and fix a bug in the socket code which he had pointed out to me earlier in the week. This coming week looks like it's going to be hectic as well, but I'm going to try and find the time to at least get the magical item generator in place.

Week 46

ending Sunday 17th November


You can now have any capitalisation you like within your character or account name, although the first letter will always be in upper case. There is no way to change the capitalisation after you've created the character - so if I call my character "KaVir", from that point on that character will always have the same capitalisation.

The combat tables have been updated to include "level" - the ability level at which you can use a particular technique. In addition, the block/miss/parry message has been converted from a string to an enum. When you attempt to perform an invalid command with a location, the mud will now display the valid commands, along with a list of which techniques (fighting combinations) you know, how long they take to perform, any what bonuses they give to ATTACK, DEFENCE and DAMAGE. In addition, I've added three new weapon tables - clubs, flails and polearms - along with three new items to utilise them (cudgel, whip and halberd). Like the other weapon tables, they currently only have basic fighting techniques available.

Each Object now has a number of hit points, and takes damage from being struck (but not yet for doing the striking), and their descriptions are dynamically updated to indicate their current damage status. Objects cannot actually be destroyed yet though, and the damage is purely for cosmetic purposes. In addition, there is a chance of increasing your weapon skill when you attempt to strike something.

I've also been working on the design for magical items. The design is fairly complete, but I haven't yet started on the implementation.

Tepic has temporarily set aside work on the MWI protocol and started looking into the weapon tables, as they have a much higher priority right now.

Kastagaar has started investigating into mobs, and we've already had a number of discussions about how the AI could be implemented.

Jobo has implemented a formula for calculating the Primal gained for killing mobs.

Week 45

ending Sunday 10th November


When you wear things in your hand, your right hand now has priority rather than the left. There is also now a "swap" command which allows you to swap stuff between hands (not that it really matters, as both hands can be used equally).

Combat now includes the reach of different weapons. In addition, your natural reach of 0 increases by 1 for every full 3 points of SIZe. To help balance this out, your DEFENCE is also reduced by 3 for every full 3 points of SIZe (reflecting the fact that you are larger and are thus easier to hit).

I've added a couple of new weapon tables ("axe" and "shield"), and some new weapons to take advantage of them, along with a selection of new worn items (helmet, boots, shoes, etc).

The "look" command now shows the direction (not just the distance) of other things around you.

When you kill a mob, it now stays dead (previously it would resurrect, like a Supernaturalis). Corpses do not yet decompose, though.

I've fixed a couple of "strange" movement messages. The trouble is that there are two states of moving - the first is based on your speed, and the second is based on your destination. If you are in a "moving state" (eg walking) but already at your destination, then you are not moving (unless your destination moves - eg, if it's a creature). If you are NOT in a "moving state" (ie you are standing still) then you are not moving, even if you're not at your specified destination. This makes it a little more awkward than a regular movement system, which is why I keep spotting irregularities. One other point to note is that your default movement speed is now set to "standing still", rather than "walking", and the "stop" command will set your movement speed to "standing still" (and also cancel any combat actions currently in progress).

I've reworked the "enter" and "leave" commands so that they preserve and restore coordinate locations properly, and also send meaningful messages.

We had a test-run on Tuesday, which revealed ten minor bugs, nine of which were fixed by Wednesday. Rotain was able to duplicate the last bug during a second test-run on Saturday, and that was fixed later the same day. The test-runs raised some interesting questions regarding the movement system, and these are now under discussion.

Week 44

ending Sunday 3rd November


The first draft for the vampire powers is now complete and was posted to the forums for feedback earlier this week. Feedback from staff and players has been taken into consideration, and the document has undergone a number of changes. It is not yet finalised though, so please continue to share your opinions!

You can now train up your stats with Primal after you've been classed, although the cost is currently 1 Primal per stat, and there is not yet any way to actually earn Primal (other than by setting it in your pfile). Training a stat will also randomly increase another stat based on your class, as specified in section 1.4.6 of the design document (and mentioned on the public website). Kastagaar, Rotain, Jobo and I have also been discussing an appropriate formula for calculating the amount of Primal awarded for killing a mob. We've got an initial proposal, but nothing finalised yet - this is an area which we can't afford to screw up, or it'll completely destroy the game balance.

The combat system now changes your currently active combat table for the appropriate fighting location, and each object type now stores which combat table it is associated with. This means that when you wield a sword in your left hand, you'll now start using the "sword" weapon table (instead of the unarmed one) with that hand. Unfortunately there are not yet any fighting techniques for the new tables, so you're limited to basic movements such as slash, thrust, pummel, etc. Certain weapons will be more limited than others, anyway - for example, while it's perfectly possible to remove and wield your underpants in combat, there will only be very few fighting techniques available for them. There have also been a few cosmetic changes made (eg to the dynamic description code) to make it easier to add weapon-based combat messages.

Kastagaar appears to have located the probable cause of the crashes on the target - an older version C++ compiler. He has also been writing up some documentation and examples of how to use his scheduler, and has provided some good suggestions on how to cut down the compilation time of the mud.

Week 43

ending Sunday 27th October


I've modified the immortal "make" command so that it now assigns a set of random bonuses to each created item. This will allow us to have a play with simple randomly generated items until we've agreed on a good design to implement. Unfortunately I wasn't able to get the "proper" magical item generator implemented because we've still not finalised exactly how it should work.

Another temporary modification to the "make" command allows you to create a generic mob, which is called (unimaginatively enough) "Mob". Mob looks and acts in all respects like a player character, except that it has a MobileBrain instead of a HumanBrain, and thus does nothing except sit there (because there is no mob AI implemented yet).

The "look" command now allows you to optionally specify a target, which can be anything nearby, or in your inventory (but NOT worn - that was getting really confusing). If it is something you are carrying, you will see any magical bonuses it has. This functionality may later be moved into some sort of power, but for now it'll remain as part of the look command.

The "get" and "drop" commands have now been fixed so that they display messages to other people around you. In addition, the "get" command now requires you to be standing right beside the thing you wish to pick up (it should have been like this before, but for some reason it wasn't).

I've added a new "PutHint()" method, which allows optional hint messages to be sent to people. The idea is to put these into commands in order to provide more informative feedback for newbies, while allowing the more experienced players to switch them off. I'm not talking about those annoying "hint" messages that some muds have which pop up every few seconds, either - the idea is that these will give specific responses to whatever you've just done (or tried to do).

Following some feedback from Rotain, the movement stuff has been seriously revamped - you are now informed when you start/stop moving and how fast you're moving, as well as when you change direction - you no longer get strange messages like "you start running" when you are *already* standing at your destination, or "you start walking north" after typing "north", even though your final destination is actually to the south of you.

Kastagaar has made another major update to his scheduler, and also put together a function to randomly pick one token from a string (with optional weighing for different tokens) - this will be really handy for the random item/mob generators.

Rotain has been working on some formatting problems with the website.

Tepic has been working on the MWI protocol, and is currently putting together some documentation following feedback posted on the forums. What he's done so far sounds really cool, but I don't want to reveal too many of the ideas just yet!

The initial draft for the vampire powers is now about 90% complete, and I plan to finish it within the next couple of days. Once it's done I'll post it so that we can get some public feedback.

Week 42

ending Sunday 20th October


I've finally managed to get the wear location system working, using a very generic approach that makes it easy to later add different races with different sets of locations. I've also implemented a rather nice system for handling magical bonuses, which seems to be working fine.

In terms of design, I've been putting together a full write-up for the vampire powers - it's currently about half finished. I've also put forward some proposals for a better version of the magical item generator, and have received some positive feedback from the rest of the team. I plan to get it working for next week.

Kastagaar has updated the Scheduler to allow for event removal. He's also tracked down and solved some bugs.

Rotain has now put up the new website design. He's also emailed me his list of new material types, which have now been integrated.

Week 41

ending Sunday 13th October


Another slow week, due to having lots of other things to do. However I was able to add the interfaces for Werewolves and Demons in the same way as I'd previously done for Vampires. This means that while none of the classes have any working powers, they are (in all other respects) fully working - you can set someone's class, they get the appropriate stat bonuses, and all of the infrastructure is in place to allow them to train their stats and powers. In other words, all that needs to be done is for the powers themselves to be coded (although I shouldn't really just say "all", because it's actually quite a large task).

However I've primarily been working on the objects and materials, making some changes to the structure to make it more flexible. Rotain has also been working on new material types, although these have not yet been integrated. Proper wear locations are almost working, and I hope to soon get the magical item generator working within the mud.

Kastagaar and I have been putting some more thought into the current command parser, and Tepic has started looking into the possibility of switching over to a natural language parser.

Rotain's new website design (including some great graphics by Jeff Hastings - thanks Jeff) is looking really good. Hopefully we'll be able to switch over to the new design as soon as Rotain is happy with it.

Week 40

ending Sunday 6th October


I've added my naming policy snippet (which provides some useful functions), and added command abbreviations (although certain commands, such as "quit", have to be typed out in full).

Kastagaar has also provided some nice tokenising functions, which have been integrated into the code to allow things to be manipulated with multiple keywords (for example if there is an iron helmet, a steel longsword and an iron longsword on the ground, you can type "get iron sword" to specifiy exactly which item you want).

I've also done some work on objects - each object now has a material type, which is used in calculating its attributes (previously the material class was stubbed). There are only a handful of materials currently, but Rotain is going to start adding a load of new ones. I've also reworked the object class itself slightly, and basic dynamic descriptions/keywords are now generated on the fly.

Unfortunately I didn't have time for anything else, as a friend flew over for the Oktoberfest on Wednesday evening, and stayed until Sunday morning.

Week 39

ending Sunday 29th September


The skills code has been redesigned and reinserted, just as I did with the stance code last week. The new solution is much cleaner, and also includes magic colours. Note that there is not yet any implementation of the skills - only the appropriate interface for storing/retrieving your current skill levels, improving your skills, and saving them. The "score more" option displays your current ratings in stances, weapons and magic, while the basic skills are displayed on the initial score screen.

The basic "Class" interface has been implemented, as has a derived "VampireClass" interface. There is also basic functionality (but no actual powers) and a "class" command for people with admin status. If you turn someone into a vampire, they get the appropriate stat bonuses and "score class" lists all of their powers (along with their current ratings in those powers). To implement a new class, all you have to do is copy the vampire interface and change the class name, the power names and the stat bonuses - all the calculations and score layout are handled through the base class functionality. Obviously the powers don't actually do anything yet, though - that will require a lot more work, and will have to be done for each class individually.

I finally got around to implementing saving and loading properly, using a proper lookup table. It's much more robust now, and easier to add things to. As more and more stuff was being added, it was becoming more and more of a pain to keep updating the hacky old solution, so this really needed to be done asap - it also means we no longer need to wipe the pfiles every time a new variable is added, which was becoming annoying for testing.

A bug with the healing speed has been discovered and fixed - and the number of action points gained per second has been increased by 3.

Week 38

ending Sunday 22nd September


Healing while alive is now "staggered" - you heal 0.1 point of damage the first second after being hit, 0.2 the next second, etc, until after 10 seconds you are healing at the rate of 1 damage per second. This still seems to be a bit fast, however, and may require some more work.

I've added a load of help files, added the "credits" and "shutdown" commands, implemented the a "gender" command to set your gender (which is now randomly determined during creation), re-integrated Rotain's bare-hand fighting techniques, made some modifications to the combat code to allow for non-damaging attacks such as "smash" and "stun", added some new techniques, and also added an "admin" privilage level, for imm-related commands.

I've also readded the stance code (which was coded ages ago and never actually got integrated back). I've redesigned it somewhat so that it's a separate class, rather than integrated into the Creature class, and made it much more generic.

We also did a test-run, but unfortunately the mud seems to keep crashing on the target. There are no stability problems under cygwin, so this is a bit worrying.

Week 37

ending Sunday 15th September


When you strike someone, you cause damage (depending on your stats, and how well you hit them). If you receive more damage than you have health, your state is set to "dead". As a dead person, you are limited to only a handful of simple commands, however you are also immune to further damage - and you heal 1 point of damage per second. Once your damage reaches 0, your state becomes "alive" and you clamber back to your feet. Note that death will also move you to your personal plane (once those are in), as well as adjust status and primal (once those are in as well). For now, however, it still provides us enough to simulate beating someone in combat.

Note that the regular (while alive) healing is a bit iffy - you heal so fast than it's very hard for someone to kill you, unless they are dealing a lot of damage very quickly. This will need some work.

Kastagaar has also recommended moving the healing over to the scheduler. He is investigating this, particularly regarding the possibility of a requeueing option.

I've re-added all of the stuff I hacked out to get it running on my dodgy old compiler, fixed the missing usleep stuff, fixed all of the compiler warnings, and added the correct paths into Tepic's startup script. We now have a clean version of the code that can be simply unzipped, compiled, and executed via the startup script.

Week 36

ending Sunday 8th September


Saving and loading of both accounts and characters now works. The save/load solutions are currently hacky, but the class structures are okay - I will update the functions transparently later. Limitations: Each account can currently have only one character.

Commands now work by either name or ID - so you can "target kavir" rather than having to "target 4". For objects, this means you specifically have to type "target a sword". I will fix that later, when we get around to equipment.

Week 35

ending Sunday 1st September


Kastagaar has integrated the latest version of the scheduler, and I've merged it with the other latest changes. The basic loading/saving of accounts is in place, but we're having trouble deciding which is the best design approach to use.

Week 31

ending Sunday 4th August


While I was away on holiday, Rotain and Kastagaar spent some time going through the code. Kastagaar investigated adding the scheduler, while Rotain added a whole range of bare-hand fighting techniques, based on those found in the Glad2.0 codebase. Rotain also started looking into some new ideas for the website.

Week 30

ending Sunday 28th July


Tepic has now put together a rather nice startup script.

The mud now works with the Glad combat system, plus I've encapsulated the Glad dynamic description code within the gw2 namespace - I wanted to do this as early as possible to save me having to rewrite huge amounts of code. I've also put together a "PutSense()" method within each Thing, allowing sense-specific messages to be sent to everything within a specified range.

Week 29

ending Sunday 21st July


Each creature now has a desired destination, which is either a fixed coordinate location, or another "thing". Typing "north" sets your desired location as 1 coordinate location ahead of your current desired location (so you can stack them). You can also type "north X", where X is the number of positions you'd like to move. This means the interface shouldn't be too difficult for those who are used to the standard compass-movement system.

Movement is automatic, although your speed depends on your "feet" body location. If you're in "advance" mode, you will move forward 2 positions, while "retreat" mode will move you backwards 1 position from your target. Other "combo" moves with your feet will allow for faster movement, although I've not put the combos in yet. For example moving forward with your feet when already moving forward will upgrade your speed to a jog, while another "forward" will turn your speed into a run. There are also actions for circling around your target, although these are not implemented yet either (they just move you forward right now).

The forward-facing movements work for coordinate-based movement as well, but you can only retreat or circle if you have a target. If you have no target, you stop moving. If you're at the same location as your opponent, you cannot retreat.

If you move in a compass direction, you lose your target. If you target someone, your "desired location" is constantly updated to be the same as your current location. The "stop" command will clear your buffer. This can be a little confusing at times, for example if you type "north 100" then see something to the east a few seconds later and type "east 10", you'll keep moving until you've gone 100 north and 10 east. If you type "south 10" it will set your final destination to 10 south of the original amount, but you'll keep going north. The alternative would be to stack up commands, but I think that could get even more confusing. You can see your destination when you type "look", anyway, so it shouldn't be too bad.

The mud creates a "Nexus" Place at bootup, and sticks all new players there at position 0/0. Going west from there would take you to a negative "X" position - personally I think that makes it easier to read than the LC-style wraparound. Note that we still have Rooms - the difference is that a Room can be linked, Diku-style, while a Place has coordinate positions instead.

Week 22

ending Sunday 2nd June


The basic combat system is in place, along with stances and skills. This works like the Glad2.0 combat system, except with shared action points and no "eyes" location. It is essential that basic coordinate-based Places are implemented asap, as the combat system requires coordinate-based movement.

Week 16

ending Sunday 21st April


We had a two week break (weeks 14 and 15) while I was back in the UK, which gave us a chance to tidy up our loose ends and do some code scrutinies. During this time Rotain, Kastagaar and I met up for a real-life design meeting, in which we discussed various issues, particularly those relating to PK and clans. Tepic and Jobo have also been investigating mud/web integration, and have written up some design specs.

This week was primarily spent finishing up the webpages, sorting out the domain names, and throwing together ideas for class powers as well as refining the various issues raised during our meeting last week. We've clarified a number of points now, and the basic webpage content is finished, so it's time to start working on release 0.4 at last. This gives us three weeks from now to get the basic combat system in place, including mobs, the earning of Primal, skills and stances.

Week 13

ending Sunday 31st March


The primary and secondary stats are in place. The "train" command can be used to improve stats, and bonuses are applied as each "age" category is reached, as specified in section 1.2.6 of the design document. The temporary "score" hack (allowing you to directly set stats via the score command) has been removed.

The object creation has been modified slightly to use short descriptions, which will eventually be replaced with the dynamic ones. It is now possible to wear and remove objects ("inv" shows what you are carrying, "eq" what you are wearing).

The problem with CPU-munching has been fixed, and Jobo has also made some further updates to the server (including adding MCP support).

Week 12

ending Sunday 24th March


Players can now link rooms together, create objects, pick up and drop things. It is also possible to kick off your old connection, and characters now have passwords (utilising Jobo's password code). The only thing missing from release 0.2 is the ability to wear objects, but I've decided to move that option to release 0.3 (because objects worn will be creature-specific, thus we can add them as we add each particular class).

We now have 1 week to get the stat system in place, which shouldn't be difficult.

Week 11

ending Sunday 17th March


Jobo's server can now handle multiple ports, allowing us to have various "minimuds".

Players can now create rooms and enter them. A number of other user-commands have been added. More to come.

Week 10

ending Sunday 10th March


The Brain class has been reorganised somewhat: only a HumanBrain now has socket information, and the Brain and Thing both know about each other.

Jobo has split the server and socket code into two independant sections and fixed an I/O blocking problem.

I've also added a new Room class (derived from Thing), which I will be using for the basic movement system. It works in a similar way to the Diku room system, however it's really just a prototype. It should be sufficient for release 0.2 though.

The basic parser allows you to "create" a character (it just gives you a name) and "say" things to each other. Unfortunately I didn't get around to adding any other commands, due to having a very hectic weekend (again!). However we DO now have more than enough for alpha release 0.1 - so we're ahead of target.

We now have 2 weeks to get basic room, objects and mobiles in place, ready for alpha release 0.2.

Week 09

ending Sunday 3rd March


Jobo's socket code is working and is integrated with my Brain class, which in turn calls my (currently stubbed) parser class. Koryon has provided us with server space, and we now have a warning (and error) free target build.

After discussions with Kastagaar, I have decided to make some changes to the way the Brain class works - but this shouldn't cause much impact on anything else.

The parser is under development (it's almost there, but I was too tired to finish it off last night when I got back to Germany).

Jobo has written a set of dice functions, which I've moved into a "gw2" namespace. I've also added a stubbed Log() function, and a GetToken() function (for the parser). Kastagaar has added the map.

It's now up me to get the parser working by the end of the week for release 0.1.

Week 08

ending Sunday 24th February


Jobo has completed the basic socket code, although it still needs a little work (it seems to only echo input to people who have connected AFTER the connection doing the echoing?). I've added an interface for the server part, but not for the client part (not sure if Jobo wants to do that or not).

Kastagaar has created a scheduler. I've not had a chance to test it yet, but will soon (I hope) as it's going to be needed for the command parser, which should be implemented as part of release 0.1.

I've created the Thing class, and very basic Creature, Object and Place classes which are derived from it. They are very basic, but that's all we need for release 0.1. I also have a Brain interface, along with derived Human and Mobile brains (although the former is stubbed, and the latter has no functionality yet).

We now have 2 weeks remaining until release 0.1. Before then, we have to get the socket code tied in to the Brain class (which itself is already tied in to the Creature class). We also need to get a basic command parser in place, and the encryption algorithm working for passwords so that we can implement a basic character creation system.

Week 07

ending Sunday 17th February


We now have enough of the design in place to start coding.