This was my 2nd Ludum Dare (you can play my LD #20 game here) I was a bit un-prepared this time, since I only found out that I would have the weekend free about 45 minutes before Ludum Dare started. Talk about timing!
Once again I chose to use the Flixel engine. It’s a powerful and simple little engine, and developing in Flash means just about everyone will be capable of playing my game with no trouble. For my IDE, I used Flash Develop running in Windows 7, running in a Parallels VM on my Mac. I don’t recall exactly why, but that’s what I did last time so I stuck with it. Once again, sounds were recorded on my iPhone and edited in Audacity (cfxr doesn’t work on OS X Lion. I might need to fork it and fix that…) Also, I recorded a time-lapse of the whole thing using ScreenNinja, a Mac app I developed for exactly this purpose. One minor hiccup: I didn’t have Photoshop installed on the machine I was using, so I grabbed Pixelmator from the App Store. It’s a nice little photoshop replacement app suitable for most tasks, but unfortunately making pixel sprites isn’t one of those things, and I think that may have cost me some time.
The main frustration I had with my previous Ludum Dare game was that it was very short, so this time I knew I wanted to have some sort of endless map (plus, I think it fits with the theme) – so that’s where I started. Progressive level generation is tricky to get right, and looping though a single map just isn’t the same thing. What I ended up doing was designing a number of levels (at first 3, in the final entry I believe there are 11), each only slightly larger than a single screen, and as you approach the edge of one level, the game randomly picks another level and inserts it on the screen. Because the ‘levels’ are tile maps, and each is loaded from a .png file, I was able to design levels in Pixelmator and easily see how each level would look next to all the others, and make sure the edges lined up right.
Once I got that working I quickly threw together some basic player and enemy logic (it’s fun seeing the henchmen jump off cliffs, lemmings style), then it was just a matter of throwing things together and seeing what was fun. In action movies, the gun is a versatile tool. Along with killing the bad guy, guns can also be used to open doors, disable equipment, activate buttons or traps at a distance, or anything else an escaping hero might need to do. So I thought a game based around a sort of chase sequence might be fun. One of the things I programmed and didn’t end up using was for the wall mounted turrets to fire missiles that would destroy the ground under you. It looked really cool, but unfortunately the player could get stuck in the craters, so I had to take it out (although it’s still in the source code if you’d like to see how I did it)
Bugs. Hopefully there are no major bugs in my game, but there’s always a few weird ones. Occasionally the henchmen just won’t jump off the edge of a cliff, and I can’t figure out why. I’m pretty sure 30 lines of AI code isn’t enough to gain sentience, right? Also, sometimes the door spawner will spawn a henchman 32 pixels lower than it’s suposed to (and he ends up stuck in the ground below) But, since neither of these were game breaking bugs, I said screw it and worked on new features instead.
And finally, I tried to add a little humor and competition to the game in the final few hours with the game over screen. Much like in Super Shotgun Deathrace, the final text is assembled from many different pieces so it’s different each time. After showing a near final prototype to a few friends online as well as the IRC, it was suggested that I should have some stats besides distance displayed at the end of the game. So, I added the damage values and a henchmen killed counter. Took all of about 10 minutes to do, and I think it significantly improves the game, so thanks everyone who suggested that.