Ludum Dare #40 post-mortem
| 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.
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.
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:
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.
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.
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!
I also made a simple animation for death.
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.
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.
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…
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.
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
- I was able to submit!
- Being able to get away with not having "real" artwork. I think the key to this was having a colour palette from the start –instead of relying on a black background and
#ff0000
or#00ff00
for the sprites and platforms–, and adding some animations with tweens. - The music app was really easy to use and I could make a track without too much hassle.
- I did not panic. I gave myself permission to not to work way too hard during the jam, so instead of being stressed for not being on scheduled, I cut down the scope and moved on.
What went wrong
- There is a physics bug in the game, due to the way Phaser handles its physics engine. This can cause some problems in slower machines / browsers. Fixing it would require quite a lot of work, so I decided to let it go, since most folks were telling me they were able to play normally.
- Not much energy, which led to low productivity. Maybe I should have started with a smaller scope so I had more time to do proper art.
- I didn't meal prep in advance. I ate super healthy on Saturday, but did not so well on Sunday.
Tools
- Text editor: Atom with
vim-mode-plus
. - Game engine: Phaser (HTML5 / JavaScript framework)
- Version control: Git repository on Github
- Mind map: Paper for iPad
- TODO list and notes: Bear
- Sound effects: bfxr
- Music tracker: Bosca Ceoil
- GIF screen capture: GIF Brewery 3
- Palette generator: Coolors