| Tags: game development post-mortems

This last weekend was a Ludum Dare weekend! I had a blast in the previous edition and of course decided to participate again. The goal: create a game from scratch in 48 hours. Solo. That means that code, graphics, audio, etc. must be created at competition's time (i.e. no using pre-existing free / open-source art). I repeat, solo.

You can play the game here. Or if you are participating in the compo and want to rate, this is the Ludum Dare's entry for it.



I live in Europe, so the compo starts at Saturday 3 AM and the theme is revealed. The deadline is Monday's 3 AM. I took Monday off on work so I could really work in the game until 3 AM.


I woke up super early (6:45 AM) to see the theme: "Unconventional weapon". My idea was to head off to a run, but it was still dark outside and there was nobody in the street. So I browsed some blog posts about Ludum Dare for motivation, and half an hour later headed for a 45-minutes run.

Then I showered, had a good breakfast and did some house cleaning. Why the hell would I want to clean my place during a hackathon? Well, 1) I didn't have enough time to finish cleaning the previous night; and 2) I wanted to minimise stress, and environment is important for that. Plus, I usually have lots of ideas while doing menial tasks!

At around 10 AM I decided what I was going to do. A (in theory) simple, one-screen arcade game about a metal fan with an in-flames guitar facing a horde of hipsters. The core mechanich is not very original (there are plenty of mobile and flash games like that) but I had the hope of adding a twist. My initial idea was to add collecting certain items to be able to beat the game. And maybe having a variety of enemies. And… –well, you get the gist.

As in my latest jams, I opted for an HTML 5 game so more people could have the chance to try it. One of the big mistakes is that I didn't prepared a game template beforehand, and had to adapt the gulpfile of my gamejam Yeoman generator to have other features like live reload.

I started coding the main character and jumps. Instead of a more "traditional" approach, I used Phaser's Arcade physics engine to accelerate development.

Main character jumping

All praise my coder art! Then I added the first hipsters (it turns out they were the only ones at the end):

Enemies appear

And then a flying enemy that throws bombs… I had no idea of what it would end up being, but I really wanted something going on above the player so jumping makes more sense:

Flying enemy

At this point I had the sense of starting to worry about sounds. Audio really makes a difference in gameplay. I've been convinced that audio >>> graphics, so I'll definitely try to improve my audio skills (currently one of my weak points) for the next edition. So I added some basic sound effects for hitting enemies and jumping and went to sleep around 2 AM.

Not too much progress on the first day and I was a bit worried that I wouldn't be able to make it on time.


I woke up late, around 9 AM and really wished I could stay more time sleeping (I'm a 8h+ hours of sleep person). I didn't feel like working out today and settled for a walk outside. I grabbed an iced coffee and really enjoyed the sunshine (outdoors and sun do wonders for game jam morale).

And then it was art time! I wasn't sure about the style I should pursue. Last time I went for pixel art and people loved it. Also, pixel art is quick to produce and not-so-complicated to animate. But somehow I envisioned a comic style, so I decided to give it a try:

The main character

I really liked it, but I wasn't optimistic about my ability to produce animations for the main character and the enemies. But I kind of fell in love with this character and couldn't "downgrade" to pixel art…

Then I drew the sprites for the enemies. It was about time to decide about what the flying enemy would be. I asked on Twitter something on the lines of "Quick! What's hipster and can fly?" but I wasn't happy about the feedback. So… What's hipster? A muffin. What's hipster and can fly? A muffin with wings. There you go.

I also added a bit of in-game tweening for the hands / wings, because having static graphics all along can really kill the game experience.

Character sprites

It was around 16:30 PM, I was running late, but I still needed to draw the background. It took me a while, but I think it truly made a difference in the atmosphere of the game:

Background in place

I tried to make it look a bit like London's Shoreditch, which is probably the place in the world with most hipsters per square mile. I think I should have added a bit of street art as well. But the clock was ticking…

It was around 18 PM and I switched priorities: I needed to make this playable enough (i.e. info about controls, gameover / victory states, etc.) so I could submit the entry.

I looked for a comic-style webfont and found Bangers by Google. Unfortunately there was not an easy way to preload webfonts in Phaser (there was a hack posted on the forums but I couldn't make it work properly) so I had to find a workaround.

The quickest solution I could think of was to create a regular HTML splash screen that used that font, so it would be already loaded when the game started.

Splash screen

And then I stumbled upon some nasty bugs due to my code being more sophisticated (read: complicated) that it needed to for a game jam. It's sad to write bad code, but when you're in a hackathon or prototyping there is no time –and no need– for refactor, DRY principles, etc. This is a lesson I need to interiorise.

So I created game over and victory conditions, plus added some controls info to the splash screen. I also designed some of the "levels" of the game. The idea was to have a bare minimum of enemy waves to play against, and add more if I had time (in the end I hadn't).

Getting to the end…

It was 23 PM, I still had 4 hours to go and I needed to fix small bugs and add some eye candy. Maybe I could even draw another sprite for the character jumping… –again, wishful thinking.

But first things first, and as I said, audio was a priority and I went on to create the main song for the game. I grabbed some samples and tweaked them with distortion / frequency so they had more like a heavy metal feel. I tried to compose a melody over them and failed miserably so it didn't make it to the final version.

A bit of fine tune (speed, gravity, etc.) and more minor bug fixing. After that… particles time! I wanted fire and blood splashing.

At the end Phaser's particles gave me a bit of a headache (there weren't many examples in the docs and I was way too tired by this time). But I really wanted to have the guitar with fire. Plus it would be more obvious to the player that she could kill enemies with the guitar.

At 2 AM I managed to set the guitar on flames }:)

Fire! Fire!

Then I spent the last hour fixing yet more bugs, preparing the submission, etc.

Mission accomplished!

What went well

What went wrong

Tools and tech

This is a very inexpensive setup. If you've never done game dev before, please consider give it a try!

And tons of heavy metal! \m/