So this is the first Ludum Dare I made it all the way through, and my second attempt total. I didn’t make it for the compo, but thank god for the extra day allowed by the jam. I had a blast doing it, and I’m very proud of the result, Frosthome:
What went right:
Cutting the design. This is the number one reason I succeeded. The original design called for a series of levels in different settings, with an interesting little mechanic that caused the level to “decay” over time, bits and pieces falling apart and changing the paths through it. Further, it required a set of items to be scattered across these levels, which you’d have to collect to ‘win’. This design was originally called “Scraphunt”.
What I ended up with is a simple 2D parallax platformer with no bells or whistles. But I finished it on time, and I think the design is more elegant because of the features I cut.
TinyXML. It’s an easy to use open-source XML parser designed for simple integration. Thanks to this, I had level saving and loading up and ready first thing.
The art. Thank god for my tablet, but really this can also be attributed to the level editor. 99% of the level is made using two basic image files, rotated and scaled, with some fuzzy-blended patches of the same thing overlaid to hide the edges. It was quick and efficient. The art was the second thing I worked on, and prototyping with real art is a big motivational kick.
The level editor. It’s fairly easy to use, and without it I’d have to design levels by editing the XML file they save to. I still have to do that if I want to introduce an item with a texture not used in the level, but overall it’s simple and efficient. If I want to design a jump, for example, I just play the game, make the jump, swap to editor in mid-air, place a platform below me, and continue on. Easy.
Sleeping. I tried staying up late the first night, but when I was mistaking array[1] for array[i], I realized sleep was essential. After that I made sure to manage 6 hours a night.
What went wrong:
The physics. “It’s a platformer,” I thought. “How hard can it be?”. Well, it turns out that it’s damn hard to do ‘right’. Beyond the generic but annoying stuff like getting the player to follow slopes and preventing collisions with the environment, you’ve got the fun but damn hard stuff: adjusting jump timings, player speeds, air control, and all those other little questions about what makes a game fun. Can the player wall jump? What about one of those mid-air double-jump direction reversals, ala Ghouls and Goblins? Should he slide on the ice? Tweaking these things took time. A lot of time. I spent pretty much the entire second day doing that.
The level editor. I spent real time making it easy to use and intuitive- drawing outlines around selected objects, doing some things (color picking) in a dialog when I could have used straight key-presses. These little bits of polish all ate away at my time.
Real life. I lost about 3 hours a day to various real-world responsibilities, in addition to time spent eating and sleeping. The worst was an appointment I forgot to cancel on the afternoon of the last day, right during crunch-time.
Forgetting to explain double-jumping. This is a big one. After releasing, I had several of my friends tell me that my game was “impossible”. It turns out they weren’t double-jumping. This kind of basic mechanic introduction is key, and I can’t believe I missed it.
Level design. The last hour of time was spent adding the win screen, the kitty achievement, and freezing to death. The last 15 minutes was spent taking my test level and turning it into something playable. I really wish I’d spent time making a longer level. Luckily I hear it’s quite challenging, which makes up a bit for the length.
Audio. I spent some time integrating ogg/vorbis and openAL, and then never got around to using them. Thankfully this was mostly boilerplate stuff, so the time cost wasn’t too big… but I feel keenly the lack of moody music with whistling ice chimes and wind blowing.