Game as .jar or Game as .zip. You will need Java.

So let’s explain what I did during this week-end. Ludum Dare, a “a make a game in 48 hours solo competition”. All game code and content must be created within the 48 hours. And let’s give the “too long, didn’t read” version right from the beginning, it’s been a wonderful experience.

With the time difference, I had from Saturday 11am to Monday 11am to complete the game, modulo two kung-fu practice sessions and one band rehearsal, on top of your everyday needs (groceries, wife, food and everything). I could only start to work on the game after lunch and I had no idea at all. The theme “Escape” was too generic for my tastes, but that was maybe the point. There was no way to escape the theme…

At first I was thinking about a physics platformer, where you had to plan your escape: each level had two parts: the “getting-in” where you can look at the level, move things around and plan your run, and the “getting-out” where you get the hell out of the place after stealing whatever was worth at this point. I had played with Box2D and its Java port a couple of years ago, and the perspective of getting all that to work again was not very enjoyable.

Time was running out already and I had no interesting idea. Well, in that case, the point is to start doing something. So I started the basic structure of a game, a simple framework to have at least something to play with. Then I just started to make a 2D top-view game, just because it came that way. “Escape” was easy to fit on a closed room setting, with classic stealth games as examples.

Well I was getting into the basic level loading of the game and I decided that I wanted to get a nice lighting system for my game, like the ones you have on rogue likes but better, just because I needed the challenge of doing something new with this competition.

And that was a huge mistake. The way I implemented this was buggy at best, and the code is a huge pile of handling special cases, getting around floating point errors and is probably performing very bad in a lot of cases… But it worked relatively well. Sadly I ended up having a stable engine on Sunday late afternoon, leaving too little time for making a real game. “Never give up, never surrender” as they say. That’s the spirit of the competition. You make choices, some work, some don’t. But you keep on coding.

Making the light/switch system, enemies took me the last part of the day. Midnight, getting tired, and far from having a game. Polish, music and level design would have to wait. I could not sleep, having ideas to improve the poor gameplay of the game as my wife was happily dreaming by my side.

6am, already up, 5 hours to go. Code a few ideas, breakfast and coffee. Coffee. Coffee. It was 9:30. Quick, let’s make some music/sounds. Two sound effects done with the microphone of my laptop, and the music took five minutes to create, with 2 of them to choose the pad in Ableton. Just 8 bars, a very simple chord progression and a very basic drum loop. Add a bit of fading and done. Not enough time to do better.

10am and I had no levels!!! One hour later I had three tutorial levels and four main levels. None of them is very interesting, but it was time to pack. The game was “ready” just on time, but the server had trouble, extra twelve hours to submit? I managed to squeeze my submission a few minutes after the original deadline (well, I also needed to go to work eventually on this Monday). Resisting the temptation to use those extra hours to do better would be a bad idea…

Just checking that the game starts on all platforms and I called it done. 48h is short, but getting something done in that timeframe is very challenging but so rewarding. I learnt a lot on how to crunch, and how to cope with failure.

See you next time, Ludum Dare!