Gonzo blogging from the Annie Leibovitz of the software development world.

Category: Programming (Page 4 of 4)

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??)

Integrated help system for Torque

There´s been a lot of discussion around the documentation for Torque lately. We have a lot of (disparate) collections so if anyone wants to find specific information you spend half your time searching. There are a few efforts underway to unify this. Personally I still think the efforts are not completely team based so I´m looking to help get that moving towards a single goal.

In any case I see 3 different areas for documentation of Torque:

C++ API

The team has mentioned going through and doxygen´ing the source to provide all the right types and parameters and documentation to the C++ source code. I think this is a great thing but we need to go one step further. We need to tie this into the API. I´m going to look at taking the doxygen and turning it into HTML Help (doxygen does this already, but need to look at setting up the keywords) and then making this an extra help file that plugs into Visual Studio (both versions 6 and 7.NET) so that you can have context sensitive help in the C++ IDE. I´ve done it with other libraries so it´s not hard, you just have to get everything lined up.

Script IDE

I´m not sure if the Tribes IDE is the ´official´ IDE for scripting but if not, it´s about the best we have. It does everything including debugging so I would recommend this. There needs to be more documentation on how to use it with Torque. I found a few threads on setting things up but there needs to be more hand-holding in this area. This is because the primary users of this would be the Torque wanna-bes who are interested in trying it out. Give them a demo app and the IDE so they can do their own tweaks to see how powerful and flexible the engine really is. Also there are a few script references out there which are quite good. We need to get these into a form that the Tribal IDE works with (I´m not sure what that is). Luckily the Tribal IDE is open source (at least I got the source from somewhere, not sure if it´s GPL or not) so we can make changes if needed to support the help system. Tribal is written in Delphi so a port to Kylix for *nix users isn’t out of the question (not sure if this is underway or not either). The Mac users are kind of out of luck here as Borland doesn’t have a Mac version here. Not sure what to do about that. I know of some free Pascal complilers for Mac but nothing that will support the Delphi objects. The main thing though is to bring context sensitive and intellisense help to Torque scripting.

Sample documentation

Again we have plenty of this. Examples, snippets, tips, etc. as they relate to Torque. They just need to be brought together. Maybe a “How do I…” document broken down by category or something. Like How do I make a hover car or How do I add health triggers. It´s all here in the forums and resources I just want to see and bring it to a single source where for people can easily search and find the information they want quickly.

Newer posts »