My new best friend
I've become a very recent convert to the use of XML in game data. Today, I got "Russell" loading a ton of stuff. I would estimate that it loads 75% of the startup data, puts up a window, sets up OpenGL, initializes a ton of classes and gets past the opening movies before dying while parsing some game rules. That's a lot of progress from yesterday, when it was freaking out early on in some half-assed XML parsing code I had written.
Normally, this part of the process involves writing a ton of code to byte-swap all the data as it is loaded in. This is where "Russell" and its use of XML shines. It uses XML for pretty much everything, and as a result, I've only had to write one byte-swapping routine so far (to parse TGA file headers). I hope I don't jinx myself.
I know I do have one slice of hell still to come - I confirmed today that it does indeed use DirectMusic (I was hoping this was unused code) and I'll have to write a bare-bones DirectMusic implementation. The odd thing is that it uses DirectMusic to just play simple wave files. It's akin (from what little I know of DM) to using QuickTime to play sound files instead of just using the SoundManager or CoreAudio. I think this may be the first game we've ported that uses DM - I'll have to ask the other guys.
This stage of the port is definitely one of the most exciting. It's pretty much a race to get the game to draw something visible (aside from intro movies). I live for that magic moment when I see recognizable stuff on the screen; it's a thrill that never gets old. Hopefully I'll be staring at the main menu in the next few days!