| Tags: game development post-mortems

This past weekend I participated in the 40th edition of Ludum Dare, the most popular game jam with thousands of games submitted from all around the world. This is the post-mortem of my entry: grooOW!, a platfomer game with puzzle elements.

Screenshot of grooOW!

You can play the game on itch.io and have a look at the source code in Github. And if you participated in Ludum Dare too, please play and rate my game! Here is the game's page at the LD site.

As always, I participated in the "compo" category of Ludum Dare. This is the classic category, in which the goal was to make a game solo, in 48 hours, creating everything (source code, art assets, music and sound effects, etc.) from scratch, around a theme that was announced at the start of the jam: "The more you have, the worse it is".

Log

Saturday

My energy levels have been really low these weeks, and this affected my performance in the jam. Nevertheless, I decided to participate anyway, specially since I missed the previous edition in August because I was sick then.

My intention was to wake up early, but I slept in until 8:30 AM. I immediately went online to see the theme: "The more you have, the worst it is". After showering, I went outside to have a walk and brainstorm potential ideas. But it was freezing cold! I got inside a café and had breakfast there. I wasn't having many ideas, which was frustrating.

After breakfast, I headed back home and kept on thinking there, this time in a more structured way, doing a mind map. This was more fruitful, and around 12:30 I settled for an idea.

My mind map

I decided to make a platformer game in which you would have to pick up some items to advance to the next level, with a twist: every item picked up gets you bigger and heavier, making it more difficult to move, jump and avoid enemies.

I had lunch then, and then selected a colour palette for the game. I used a tool that allowed me to lock a colour I liked and then randomise the palette again preserving that colour. I went for this one, which features sand, purple and fuchsia:

The game's palette

Then, coding time! Instead of generating placeholder PNG's, I had Phaser to generate the image data dynamically, since I didn't know which size the platforms would finally be –usually this is solved by using tile maps, but since I wasn't planning to do any scrolling, I figured I could get away with just using sprites to represent the world instead of tiles.

I first coded the core mechanic: move and jump to pick up items, and have the main character get bigger and heavier.

Main mechanic in place

Then I added a basic enemy, which just walks over the platforms and turns around when it gets to an edge. And I implemented a "Reload" button which lets you restart the level if you get stuck –i.e. you picked up too many items in the wrong order and now you're to heavy to reach a platform that holds more items.

Enemy walker

I used a 8-bit sound effects generator to make some basic sounds to provide feedback for jumping and picking up items. This is crucial to playability, and since I was posting updates on Twitter with the URL of the game for people to play, I didn't want to leave it for later.

Sunday

I didn't wake up early on Sunday either, and I didn't make all the progress I hoped on Saturday, so I started to considerate the idea on keeping the art abstract, with just simple figures, so I could spend more time coding and doing level design.

To make it look a bit nicer, and not just "programmer's art", I decided to add a bit of polish by adding some animation to the main character: a "squash" when it lands on the ground. I believe this makes a big difference in the look & feel of the game!

Squash animation

I also made a simple animation for death.

Death animation

I didn't want to leave all the level design work to the very end, so I implemented a level loader from JSON files. To test it, I created what later would be the first level of the tutorial, that teaches the player how to move, jump and advance to the next level. I also added some UI that shows how many dots the player already picked up.

A new level!

The evening arrived, and my TODO list still had lots of things very much not done. I reduced the scope: definitely not doing any sprite work this jam, and I reduced the amount of enemies and levels in the game. I really wanted to make cannons that fire laser beams, but a flying ghost was way quicker to implement… so hello floating, semi-transparent, purple circle.

Flying enemy

Then I built all the levels that would serve as tutorial. I implemented some tooltips to give indications to the player. They are not very flashy, and could have used a bit of animation, but…

Tutorial

I had dinner, and afterwards switched to do some music. I used an app I downloaded the day before (Bosca Ceoil) the jam because a lot of people recommended it for its simplicity. I can not agree more. After following the short, in-app tour, I was able to create my own music track!

Then more game design work and bug fixing. I finished at ~1AM, which is a bit later than usual –I aim to get to bed at midnight in game jams–, but since this week I'm on holidays, I could allow myself to get up late on Monday.

More levels…

And victory! I'm really happy I was able to submit after all. And despite the lack of "art", people seem to be loving the game. It has received praised on the core game mechanic, as well as level design. It always feels great to see people playing your game and asking for more levels! :)

Lessons

What went well

What went wrong

Tools