Memoirs of a Game Developer
Yesterday I stumbled upon my archives of old projects, and I felt a sudden breeze of nostalgy. Today I will take you along for a trip to my game developing past. My oldest games (or "gamelets", as they were never really finished) haven't survived. I remember a Mad Max -esque, text-based cab driving game and a space shooter similar to Star Control, but I don't even remember their names.
Arty (1999) is my oldest surviving game, if you can call it surviving. Arty was an Artillery Duel clone written for DOS with the Watcom compiler; anyone remember the joys of DOS4GW? The code was horrible, since I had just learned C++, having programmed in C before that. I couldn't get it to run (DOSBox might have helped, but I couldn't be bothered) and couldn't find any pictures, but here's a peek at the jumbled mess of code, from particle system code ("smoke.h"):
{
Smokes[SmokeIndex].XSpeed/=(1+Options.Friction/2000.0);
Smokes[SmokeIndex].X+=Smokes[SmokeIndex].XSpeed+
Wind/500.0+((rand()%21)-10)/20.0;
Smokes[SmokeIndex].Y-=Smokes[SmokeIndex].YSpeed*
(rand()%10)/10.0;
if(Smokes[SmokeIndex].X<0||
Smokes[SmokeIndex].X>=SCENE_XSIZE||
Smokes[SmokeIndex].Y<0)
DeleteSmoke(SmokeIndex);
if(TypeBuffer[(short)Smokes[SmokeIndex].Y]
[(short)Smokes[SmokeIndex].X][0]==TYPE_GUN)
GunDamage(TypeBuffer[(short)Smokes[SmokeIndex].Y]
[(short)Smokes[SmokeIndex].X][1],
Smokes[SmokeIndex].Damage);
Smokes[SmokeIndex].Life-=(1+abs(Wind)/100.0);
if(Smokes[SmokeIndex].Life<=0) DeleteSmoke(SmokeIndex);
}
Despite being a huge mess, the game actually had some very nice features. Aside from cool-looking explosions, fire and smoke generated using "smoke.h", it also had a fully flexible weapon system, where I could assign payload ("bombs") to artillery shells. Bombs in the payload could have triggers (eg. impact or "I'm above a gun"), and explode generating new bombs etc. There was also separate concussion and kinetic damage; kinetic damage was based on the velocity of the projectile. Two of my favorite weapons were napalm, which burned a huge area for a while, and nuke, which was based on a series of different bombs, with the only piece of custom code being a screen flash when it exploded. Arty of course had fully destructable, random terrain.
As a curious detail, I had already started creating a game engine called Solid (revealed by a file called "solid.h"), though at the time only used for Arty. As soon as I realized Solid is quite common a name for absolutely everything, I changed the name to Spineless. Spineless was released as open source at the beginning of 2003.
The project Spineless was really meant for was mproject (2000-2004), a doomed, long-time sci-fi game project by a group of friends (yea, I have a thing for sci-fi). The M in the name stands for Master of Orion, which basically explains what the game was about. Btw, what actually prompted me to write this journal entry was that I had forgotten how far we actually got with it. Frankly, it wasn't far at all, but I didn't remember us getting even that much done. Here are some screenshots of the prototype. It's actually much nicer looking in motion, since it's exceptionally smooth.
sbproject (2004) was kind of a spin-off of mproject, focusing only on combat, á la Homeworld. In some far-fetched plans, it was to be the tactical combat part of mproject, but this project never really got off the ground either. A single image remains:
After that, I haven't really worked on any games. I want to change that now, and it's one of the reasons I killed Spineless; I want to try and concentrate on actual game programming for a change, instead of trying to make a game engine usable by other developers. That might be a side product of my endeavors, but not a major goal.
If you are interested in more details, prototypes or source code for any of the projects, please drop a comment!

November 28th, 2007 - 08:17
I think your change in direction is admirable; it’s easy to get in the trap of writing tools to write tools.
By far, I’ve had the most success with writing a game and then extracting the common modules into a library. Starting out a brand-new library with no consumer is a recipe for disaster.
December 1st, 2007 - 20:17
I always enjoy reading the histories of other game developers, and this was certainly no exception. You definitely have some solid experience with 3D graphics, and a lot of passion for space/sci-fi games. I’m looking really forward to what Red Nebula is going to bring to the table now that you’re focusing purely on making a game rather than an engine.
December 3rd, 2007 - 01:05
Hey, had to post and just say that I’m in the same boat… and desperately trying to get out of it. I remember the days when I started programming – using premade engines like RPG toolkit and stuff to write RPGs and loved actually seeing stuff happen. Recently I’ve been going through cycles of hating programming and loving it – and I think this is due to the fact that writing an engine with no game gets very stale after a while; nothing is changing.
I can also think back before I even started writing games and only dreamed about being able to program. Whole pads of paper dedicated to writing some cool ninja game, or cool user interface ideas, and all the neat weapons that my game would have. Saddly, I don’t have any of this, but I’d love to see it if I could.
Bit of a ramble I know, but you motivated me to get back into /game/ development
Oh and on a side note, I love your works (was very interested in spineless) and will be subscribing from now – keep it up!