Ludum Dare #48 post-mortem
| Tags: game development post-mortems
It had been around a year and a half since my latest Ludum Dare, so I was really eager to join the game jam this past weekend. My goal: make a game from scratch (code, art, music) in 48 hours. The theme for this edition was “Deeper and deeper” and I made a tiny game about an elf trying to return home, which you can play on Itch.io.
In this post-mortem you will find a short development log for the game, the tools I used, and what I learned while making this game.
Development log
Saturday
I woke up at 7:30 AM and saw the theme: “Deeper and deeper”. I had a short workout at home (thanks, RingFit Adventure), and then brainstormed some ideas while having a coffee. For this, I like to do mind maps:
I was unsure of what to make out of it, so I went for a walk, and then did some house chores while still thinking on which kind of game I’d be making. At lunchtime, I settled down for a Diablo-like game about a dark elf having to return to his home in the Underground after having been cast out. I quickly drew a mockup of how I wanted it to look like.
On game jams, I usually like to spend Saturdays coding and leave Sundays for art, music and level design. However, this time I got “trapped” into doing 1-bit retro pixel art —a poor decision in retrospective, but I was having fun!
And quickly after that, I re-designed the main character to make it cuter and have black skin (like the dark elves from Forgotten Realms).
I loved how it turned out. I posted it on Twitter and people really liked the character as well.
I implemented rendering a level based on tiles, and also the character with basic movement. At this stage I decided not to follow Diablo’s controls with mouse, and rely on arrow keys or d-pad, like Zelda.
I called it a day, and went to bed at a reasonable time.
Sunday
I was behind schedule in any way possible, so drastic measures had to be taken: I dropped combat mechanics and introduced dialogues instead, so I could tell a story while the character was travelling down the different levels.
And I hit a wall with this because I still don’t fully understand how Godot handles UI, and it turns out that implementing a box that will expand and shrink depending on the length of the text is not trivial.
In the end I managed to implement it, but I wasted a lot of time doing it. I could just have drawn boxes with three or four sizes and just picked one depending on text length. It would not have been perfect, but it would have been much quicker.
It was getting late, and I realised I still didn’t have a title screen or an end screen, so I made those two. I used the title screen to display a short tutorial, and I re-used the main character and my new shiny dialogue bubbles to achieve that.
SPOILER ALERT: You may want to play the game before you continue reading!
I only had a few hours left, so I quickly decided the story: the elf couldn’t win. He had been banished forever by some cruel gods, and he would be forever stuck in a loop trying to get home in vain. To reinforce this idea of looping, I made the player to go through the same levels a few time before displaying the “end” screen, and the main character would say something before going downstairs to switch to the new level.
And to make the levels a bit more interesting, I decided to introduce doors and keys, so the player would need to explore the level a bit before finishing it.
Once everything was in place, I added some retro sound effects I generated, and also quickly composed something in Garage Band as the soundtrack. I wanted something repetitive, that felt like endless work.
And I was done! The game turned out like nothing I thought in the beginning, but I’m happy I could submit something that felt complete somehow.
Lessons learned
What went well
- I had no problems when exporting the game to HTML5 with Godot.
- Rendering a tile map with multiple layers was a piece of cake.
- I designed a super cute main character!
- The 1-bit pixel-art style was quick to draw.
- I like the story and I think the game does a decent job telling it.
What went wrong
- It took hours to implement the comic-like text balloon for the character to speak. And my ego kind of got in the way of me settling for a dirty hack.
- I had a very slow morning on Sunday, and it took me a while to get to work on the game. I also decided to watch Barça’s game in the afternoon, so I lost an extra two hours there.
- Since I made the art assets before implementing the game, I ended up with assets I couldn’t use (a walk animation, a sword, etc.)
Tools I used
- Game engine: Godot
- Art: Pyxel Edit
- Music: Garage Band
- SFX: jsfxr
- Ideas and mockups: Apple Notes
- Project management: Notion