Post-mortem / Making of

It was that time of the year again! For Ludum Dare 37, I made a 2.5D point 'n click adventure in 72 hours – one rooms. I also skipped one night completely, opting to work for 40+ hours without any sleep whatsoever. Here's how everything went down …

The preparations

The week before this LD was somewhat busy for me still, because university. Mostly because of that, I didn't prepare as well. I didn't make a super customised wallpaper with different text for every theme possible, I didn't make 9 of them for each one of my virtual desktops, I didn't test my libraries. I did make a super quick wallpaper that you might see in the timelapse. Basically, I was not planning to do something very experimental. It was going to be another game made in Haxe, compiled to flash. Oh well.

I was also looking forward to seeing the new Ludum Dare page. But then, a week before the actual event, I realised it's just not going to happen with the current progress. So, surprise, surprise, everything was done on the old Ludum Dare page which has bugs and issues, obviously, but is still much more reliable than a system 'finished' and launched without any alpha testing. Oh well #2.

Unlike most previous LD's, I did not have a definite favourite among the final round of themes. These were my votes:

While I know that the event is growing larger all the time, the duplicate themes are getting old. Chain reaction is the only one marked, but 'Small world' is pretty much the same as 'Tiny world' (LD 23), then 'Simplicity' / 'Minimalism' (LD 26), 'Wait, are we the bad guys?' / 'You are the Villain' (LD 25), etc. And of course, the theme that was finally chosen, 'One room', was very exactly the way I interpreted 'Entire Game on One Screen' (LD 31), so it wasn't my favourite. Oh well #3.

The concept

I woke up on Saturday (after going to sleep one hour before the theme was announced, silly me) somewhat late, and saw the theme. One of the first things I thought of was a rogue-like exploration / role-playing game – you, the player, control a boat / spaceship / caravan which is the one room. But because it is also a vehicle, you can control your one room and go places. Explore the sea / space / desert. It is a simple concept which can be taken in various directions. The game would also be quite difficult to finish, but I was up to the challenge. I was already considering going for the jam, so the extra 24 hours would definitely help here.

(I didn't choose this interpretation in the end, but there are some that have done so, for example: 13 Jellyfish by Four Quarters - pretty game)

So, as we were brainstorming with my girlfriend, don't ask me how, I thought of approaching the theme a bit differently – to have a room that ends with -one room. Then she suggested a game where you try to think of various -one rooms. And then, feeling ambitious, I thought of a full story to go with that. I already knew it would be a lot of work to even have various rooms, without even thinking of an actual story.

Poor man's 3D engine

And so the idea was born. Then it was time to think of how to make the game look. I already experimented with pixel art / 3D fusion in Cell #327, although it seems like an overly-complicated way to make little bits of the room move. I didn't really use it to its fullest potential. So this time around, I opted for simpler graphics, with the 2.5D effect of the spinning room being the highlight. The graphics 'engine' involved some basic lingebra, z-buffering, pixel-by-pixel blitting, but I suppose that deserves an article of its own!

72 hours again, music, voice acting

I was quite happy with my progress. Creating new rooms took a lot of time, because creating a user-friendly editor to place walls and floors in 3D would take even longer. By the second day I knew I didn't have that much ready content-wise, but I didn't panic and decided to keep going and submit a jam entry instead.

I had no idea what music I would have, or how I would make it, and having a jam entry allowed me to ask somebody friendly on the LD IRC chat. The request was fulfilled by ibispi, who promptly made Earthbound-sounding chiptune music for all the rooms. That added a lot of personality to the game. I would have gone for darker-sounding music, but I reconsidered, seeing as my game was rather light-hearted, with lots of quote unquote humour in the writing.

I also thought of asking Elijah Lucian to give voice to my game, as he did for Cell #327. He wanted to help, but couldn't make it before the jam deadline, unfortunately. Right after the jam, however, he was hosting a voice acting stream on twitch. It was quite fun watching people try to act out some of the more unusual parts of the script (the actual voice acting starts around 01:11:00). He also promised to have the game voice acted post-jam. And I want to polish it plenty before that, and add some content – more rooms, more puzzles, more fun.

Sleep deprivation

As I've already mentioned in the beginning, I've skipped the second night entirely. I worked till 3 in the morning, then thought I might as well try to pull an all nighter. Maybe it gets better when you get used to it, but sleep deprivation is kinda scary. Monday morning was especially challenging. I tried to keep working, but I would keep falling asleep mid-work. Writing simple lines of code would merge with my dreams. I would have my eyes open, but I can't say I was awake. Trains of thought were derailing left and right. It actually got better in the afternoon, and I was insane enough to stay up till 3 in the morning again. Watching Elijah's stream of course.

I guess if there is an advantage to skipping a night (apart from the obvious additional working time), it would have to be the, er … 'creative' ideas you get. So that's how the singing skeleton quartriplet and the late shift arcade got in the game.

The menu

The menu in this game was heavily inspired by the GUI in Mass Ef-- Just kidding! I meant the food:

Also some muffins, pistachios, you get the idea. Good food management is crucial for a successful LD entry.

A javascript port

You might notice there is a playable javascript version this time around. I ported the game because some people complained that it's hard to get it running on linux, and that flash is a dying platform anyway. Which is true, I suppose. So, post-jam, I ported the game. It took me a day, but I was quite happy, because the majority of changes were made in my libraries (which were basically used as a wrapper around the flash API), not the game itself. Meaning I can make a javascript build of my games to come much faster. Yay.

Some mistakes

As always, there are some things I should have done differently. Obviously there should have been many more rooms, at least some lines of dialogue for them. Writing those would have taken minutes, so really there is no excuse.

The palette I chose was 20 colours. Most of it worked out pretty well, but for some reason I chose a colour very similar to another that I never managed to use in the game. If I had taken some time balancing the palette more, the resulting graphical style would probably end up different as well. Probably more moody, as my games tend to be.

The faux 3D, while looking pretty, is also not very nice on the CPU. The javascript version suffers from this much more, but even the flash version gets my (admittedly quite old) computer spinning up its fans. I could have optimised this in many ways still, and I hope I will get to that for the post-jam version. Technically it should be doable with a shader, but I didn't feel brave enough to write my first shader during LD.


And that's about it. I will write another article about the way the rooms are rendered, and hopefully another article when there's a post-jam version. Overall, I am very happy with my game, and I hope you enjoy it too!