Brandon's Blog

8/6/2008

Blog, Awake!

With renewed attention to Sigma, I’m watching my own subversion commit rate increase at a fairly dramatic rate.  I’m trying to figure out how to describe the current phase of the project…

What came to mind was actually metafunctionality, which I then decided to equate to a growingly stable extensibility API.

But, since just about anything interesting within the system is a modular extension, we’re really saying we’ve built about a quarter of the house on about half the foundation.

This might sound goofy, but it’s actually the way to go with a purely modular program; you want your infrastructure to tail a lagging implementation.  Otherwise, you’re too busy canning your dogfood to eat it.  This spawns ad-hockery.

Like when I wrote the first implementation of character_in_room, which is designed to find out if a character by a certain name is in a room.  When I ad hoc implemented this (very central and core) library function, I wrote it such that the room to search was determined with a reference to another character.

I hate that sentence above, so what it really means is that if you didn’t have a character to reference within the room you wanted to search you couldn’t search the room.

The subsequent implementation takes a room rather than a player, so you can use the function in probably twice as many ways as was possible before.

If I had thought API first rather than git-‘er-dun, that wouldn’t have happened in the first place.

What I’m staring at right now is a sketch of how the player class, statistical, and combat system (all inseparately tied in concept and implementation) is going to look in code, rather than prose.  The implementation seems tight, simple, and efficient.  We’ll see how long it takes to roll out.

One question for Meta: Do we know who the third person on the Google Code project is?  Has this slipped my mind?

Implementation notes to follow above.