(posted to the LD site, thought it might be of interest here as well)
Ludum Dare 21 Post Mortem
LD21 marks my third serious attempt at completing a game in 48 hours. On the previous two attempts, I stalled on Sunday
morning and didn't finish.
The theme this time was "Escape". It wasn't one that I voted for, but I could work with it. You can see the results
here.
My idea was that the player is a process marked for deletion in a Tron-like computer system. Player must navigate through various cores (levels) to reach the free network. He has to avoid firewalls, sentry programs and search bots.
I didn't get my intro screens done in time, so the story itself isn't really in the game, and you wouldn't know unless you read this. Ah well.
All in all, I was extremely pleased with the weekend. I submitted a game, which was a huge goal. I didn't do anything drastically wrong; although I could definitely do more things more right. Now it's just a matter of continual improvement.
WHAT WENT RIGHT
1) Ruby Ruby Ruby! Man I love this language. It's plenty fast for these kinds of game. I was constantly amazed at how quickly I could go from thinking of a feature, to seeing it in the game. Ruby isn't always the best tool for the job, but it's usually the first tool I reach for.
2) Gosu Gosu Gosu! The gosu library (www.libgosu.org) with ruby bindings takes a zen like minimalism approach. Load a graphic, blit it. Load a sound, play it. Not a whole lot of options. But you know what? It was exactly the right amount. It did its job when asked and stayed out of my way otherwise. It conformed to the way that I worked, rather than requiring me to conform.
3) More time devoted to artwork. Previous LD efforts were almost entirely coding, with no thought to art other than the barest stand-in images. Never sound or music. This time, while my art isn't great, it's all there, along with sound and music. Not great, but a huge step forward in terms of actually finishing.
4) Family support. It's hard to overstate how awesome it is to have a family that was not only willing to let me disappear into the cave for the whole weekend, but would actually bring me food and water. Thanks ladies!
5) Git. I can't imagine working without a repository now. Even in a single user environment. Next time I'll be setup on github.
WHAT WENT WRONG
1) Collision detection. I borked this part up HARD. And I spent a lot of time looking in the wrong places. This is one of those basic game formula that I should have known, should have easily implemented, should have loaded from a gem, something. Spending several hours reinventing the wheel (or square, in this case) was frustrating and wasteful.
2) Ergonomics and comfort. Apple peripherals are stylish and pretty, but by the end, my wrists and shoulders were killing me. Using a Magic Trackpad for Photoshop work was a lesson in pain. TextMate took too many keystrokes to do oft-repeated actions. And I felt like I was constantly reaching for the trackpad, just to change window focus so I could go back to the keyboard. Probably just a matter of figuring out the right way to do it. I want to be able to never take my hands off the keyboard when coding. Even reaching for the arrow keys has to go. That might mean emacs. Sigh.
3) Cross platform issues can't be put off to the last minute. I should have been doing Windows builds the whole time. I was also packaging everything by hand, which is error prone. My uploaded entry is missing the right audio libs, so I'll need to fix that. So next time, some rake tasks for doing builds automatically, and frequent Windows tests.
NEXT TIME
Ruby and Gosu, definitely. That combination just works. Figure out packaging and cross platform stuff ahead of time. Find (or build) a gem with some basic game dev primitives. Improve my editor-fu. Not as much junk food.
TOOLS USED
OSX Lion
Ruby 1.9.2 / 1.8.7
Gosu
Ocra
TextMate
git
Photoshop CS3
GarageBand
Audacity