Post-mortem / Making of
Ludum Dare 27 was held this weekend (August 23rd - 26th, 2013), and I participated. In case you didn't know, Ludum Dare is an event happening every ~3 months, with smaller events (MiniLDs) accompanying happening irregularly. The point of the LD competition is to create a game in 48 hours from scratch (code, audio, graphics, story, ...), following a theme announced at the beginning. This time the theme was '10 seconds' - I made Thade.
The judging is not over yet, but I feel that my entry will do well. Comments / reviews of people who played it have been mostly positive, as well, they seem to have enjoyed the 'story'.
So what is Thade about?
Thade is a game about Aaron, a filthy rich, yet very selfish, cruel and arrogant guy, who gets a heart attack. Why? Because Grim Reaper chose him, wanted to get rid of him, basically so that the world would be a better place. Deep down, in his unconscious, dreamy mind, Aaron gets to talk to the Grim Reaper who offers him a game - winning it means he gets to live. ... enough spoilers for now, the game is there for telling the story.
So what is Thade like?
Most of the gameplay comprises playing (and figuring out) smaller, logical mini-games. Lights out, pipes, zones, sheep. You may recognise the first ones, the last one is straight up a codename, I don't have any idea what this game is actually called. The rest of the game is cutscenes and isometric 'point-n-click' interludes.
So how was Thade created?
Of the 48 hours available, I used about 24 actually working on Thade. The rest was sleeping, eating, et cetera. I recorded most of my progress, and you can see the timelapse here. I wrote it using ActionScript 3, the language I am most familiar with for making games - it is a good compromise between painlessness and performance, and the result can be played in a web browser. For the graphics, which were originally supposed to be pixel-art only, I first chose Fireworks ... It worked, but, I didn't have much previous experience with it (= bad choice!) and so I quickly switched to Photoshop, an environment I actually knew how to use. A couple of hours in I realised that only pixel-art would be too impractical for some of the ideas I had in mind, so in the end I merged pixel-art and digital paintings, which I could make much faster.
It worked well enough, but, as with many (if not most) Ludum Dare games, I originally wanted more ... Still, I am somewhat satisfied with the result. As for the audio, I used the lovely as3sfxr, a great tool, especially for LD needs. There was also some dynamically generated sound in the Arrogance (a.k.a. heartless statue) room, basically a sine wave over noise, to sound much like a untuned TV. The code was all pretty straight-forward, with a couple of exceptions:
- Path-finding - I implemented a simple, A* sorta algorithm. It worked, suprisingly enough for me, but it was mostly unoptimised, and, due to skipping the last step of an actual A* algorithm, the paths generated are sometimes a tad bit wonky.
- Zones level generation algorithm and
- Pipes level generation algorithm - both take up a good chunk of code, there basically is a list of unexplored nodes, which is expanded into or spawned into (in case of zones) randomly until the whole grid is filled.
These took the most time to debug and implement.
So what's up with the heart?
Here is a demo of the heart, beating and all.
Basically ... My idea had been that the protagonist gets a heart in the beginning, since the very first hours of knowing the theme. However, I didn't know how to depict this - audio only? Not good enough. Sketchy heart? Pixel-heart? Both would take a lot of time ... Then I thought of drawing it dynamically. Bit strange, but the fact is that a heart is a very organic shape and therefore can be represented with connected blobs. I picked five groups of points around which to draw circles of various radii and colours. The areas themselves represented the atria, the ventricles, and an odd blob. The only thing left to do was to animate the heart - that is, shift the coordinates and radii of the circles, in sync with a rhythm. It worked rather well.
So what is Thade missing?
A lot. Music. A lot of ambient audio. Fully realised and explained story. Dialogue with pictures. Bug fixes. Lots of polish.
I had an good idea about how to implement each of those but ... 48 hours. Surely I could have saved a lot of time everywhere ... And spent more time actually working, as opposed to chatting ('socialising'), eating, sleeping, ... At least I know now, and will remember all of this the next time I attempt a Ludum Dare.
So what happens to Thade now?
As with a lot of my LD entries, I want to see this one finished, realised properly. Unlike my other entries, however, this one was relatively well-polished and had a lot of positive feedback. So ... we'll see soon, and this is it for this post-mortem.