12 Sep 2004 elanthis   » (Journeyer)

AweMUD Work

Getting back into the swing with AweMUD development.

I'm starting to strongly dislike the weaknesses of C++. It's a great higher level C, but that's about the best you can say. I actually sometimes think using straight C would be better, just to avoid the temptation of complexity.

I want to do some more work on the entity/object model. The current code is quite functional, but rather complex. All entities are two levels deep, except for NPC/Player, which have the Character class in between them and Entity. Entity describes both an interface and an implementation.

Entity carries a lot of baggage with it. The name/keywords stuff, events, update look, affects (when those come in), etc. I think perhaps it would be cleaner to make some other interfaces for the events stuff and so on.

I'd also like to make Zone and Room not be children of Entity, since they don't fit the real definition of what Entity is. Entity is anything which concretely exists and can be acted upon, while Room and Zone are abstract containers.

The blueprint and entity data stuff is also just... "blegh." I'm thinking perhaps it would be best to make both Entity and Character interfaces only, just give Object it's own full implementation of everything, NPC it's own, RoomExit it's own, and Player it's own.

It's also like to breakup the Object and NPC implementations; one for uniques and one for blueprinted. A blueprinted Object, for example, would not be allowed to have any of its attributes changed at all. That would so simply its implementation. Then the unique object would just carry all its own data members, simplifying its implementation.

And then of course there is the whole affects situation. Or lack thereof. I need to come up with a good implementation. Some of the above work would help. But I'm getting _really_ sick of pushing affects off. I want them in, and I want them in _now_. ;-)

Scriptix is also getting on my nerves. I should really finish off the Scriptix2 implementation and start pulling that in.

Finally, the skill and ruleset code. I need to write the AweMUD conversation of my table top rules down and put a copy in the AweMUD dist, and then start implementing it fully. The two big changes are the time system and the XP system. In the table-top game, time is turn based, which doesn't work for a MUD. Also, in the game, XP is awarded based on player feedback and GM fiat, which also doesn't work for a MUD. Most of the rest of the rules can be used unmodified.

[#] Comments

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!