Surviving the New Years and Iterative Development

Well that was fun. So yes, I survived the night of drinking and debauchery (actually me rallying between TV and computer catching the various “good” movies they played and having a few to bring in the new year). A few hours sleep and I’m good. I’m just trying to find a good New Years Day brunch out there now.

Last night, no I was not drunk. I really do need to get off the pot so to speak and get these things done. It was me talking, not the booze. I have started doing the proverbial path. After getting my account reactivated on my SimsTools site things are back and running over there. I also spent a few hours and finally got my hard drive setup for the various SourceForge projects I have on the go, creating (albeit boring) websites for the projects and resigning myself to actually complete at least the first iterations of these goodies.

When I do development, I generally use two principals in creating them. Test first and iterative development. Test First (or Test Driven Development which really should be called Test Driven Design) is that every part of a system is first written as a test. This might be something to test transfering a file, logging in, or leveling up a character in a game (or the very basic, show a character on the screen). The test is written to fail. This way we know it can be broken. As you go through the test you make design decisions about how the test will pass (object names, relationships) and you build only what you need to to get that test (and only that test) working. As the system grows, you end up with a fully automated testable system where every change you made was first tested, then coded. This is my preference for developing bullet-proof and solid software.

You might find the benefits of a test first driven development to be useful. For more information please check out the following sites:

cppunit.sourceforge.net

www.xprogramming.com/software.htm

www.xprogramming.com/testfram.htm

The second main principal I use when developing software (game or otherwise) is to use an iterative development approach. Iterative development is basically working in small, incremental steps to achieve a bigger goal. Okay, so you´re thinking “wait a minute, we always do that”. Some do, some don´t. Iterative development is not “let´s keep doing it until it´s finished”. With each *planned* iteration, software is created as a fully functional unit, up to the point of that iteration. Let´s say you have a spell system you need to develop for your game. Okay, so you need the ability to cast spells, learn new ones, spells for magic users and clerics, spell casting for non-spell casting users, etc. All of these are iterative pieces of the big “spell casting” puzzle. Each can be delivered on it´s own (some are dependant on others) so you can work on them in pieces. It might go something like this:

First iteration: cast a single hard coded spell.

Second iteration: cast a single text file based spell.

Third iteration: cast a series of different types of spells.

You get the idea. The benefit is that you always a working system. It may not be complete (i.e. only mage spells are in this iteration) but it is functional. Something you can test, improve and build on.

PS I added the BlogSpeak system to this blog so you can leave comments about posts (is anyone out there??)