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”):
void UpdateSmoke(long SmokeIndex)
{
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!
Tags: Artillery Brawl, code, screenshots, Spineless