Heist


My entry for Ludum Dare 21. Now updated with better graphics & music.Source Code

Theme: "Escape"
Game Engine: Slick
Tools: NetBeans, Gimp, graph paper, junior high algebra textbook, Ritalin

Final Score:
#31 Innovation 3.89
#96 Theme 3.50
#102 Overall 3.33
#115 Graphics 3.35
#186 Humor 2.11
#275 Fun 2.56
#371 Audio 1.00
#513 Community 1.17

Postmortem

Ludum Dare is more of a project management competition than a programming competition. There were about 600 entries this year, but I would estimate that about twice that number began a project that they didn't finish. Thousands more wrote no code at all, but simply flooded the forums to gripe about the contestants' coding style. Then there were those who finished with just enough time to slap up a tilemap and some buggy collision detection, and I think a little more planning ahead of time would have greatly improved their entries. Nevertheless, I respect anyone who stuck it out and finished the compo.

Preparation

I had been planning to enter this competition for a while, but the date hadn't been finalized the first time I visited the website. By the time I visited again, there were only three days left before the kickoff. So it was doubly important that I get my tools working before I started. Fortunately, I had an applet distribution in place from another project I was working on, and it was fairly easy to swap in new assets and code without rebuilding the house of cards that is the Java classpath.

The final round of theme candidates was announced a day before the start of the compo. I noticed that they tended to fall into two categories: escape/theft, and disease/evolution. I used the extra day to brainstorm ideas. "Heist" was my idea for the escape categories; if the theme had been from one of the evolution categories, I would have made a game where you were a cancer cell trying to take over the host before its immune system killed you.

Execution

I didn't do any work the first night except for a "Hello World" test of my build environment. My plan was to get the game logic working in the first 24 hours, then concentrate on the graphics during the second day. That way, I could finish the most error-prone steps first, and continue to tweak the graphics right up until the deadline. The programming was much simpler than I expected. Only one level, one real game entity, and 8 control keys. The hardest part was the collision detection. It's simple in principle, but, for some reason, I can't seem to grasp it. Nevertheless, I managed to get a working prototype finished in 18 hours, with pathetic stick-figure characters that only rarely got stuck in the walls.

The second day, I added more detailed artwork. Theoretically, I would only have needed to draw over my placeholder graphics. In practice, I needed to add more frames of animation, more map tiles, and I needed to keep the position of the artwork consistent over multiple frames of animation. For example, the outline of the character is cut-and-pasted from frame to frame, while the highlights on the outfit are drawn separately for each frame. When it was the other way around, the character's outline looked wobbly, and the highlights looked flat and "painted on".

By afternoon of the second day, I was mostly finished with the artwork. I had time to add a couple unnecessary details, such as the transparent lasers (originally they just blinked on and off), the map screen (originally there was just a message saying "you have X meters to go"), the swaying of the cable relative to the helicopter, and the non-linear movement of the helicopter. I don't know if anyone noticed these little touches, but they give me a warm fuzzy feeling.