After participating in two Ludum Dare game jams ( #42 and #43), and then sitting out the following two for different reasons (#44 due to wanting to work on finishing my first mobile game, and #45 due to the timing overlapping with some pre-existing travel plans), I decided to get back into it with Ludum Dare #46, which ran from April 17 to April 20, 2020.

The overall context was a bit strange though – due to the Coronavirus shutdowns, we’d been bunkered down at home for about a month at that point, working remotely and barely leaving the house other than for groceries and other essentials. But I thought a game jam might be a good distraction from all the pandemic related worries, and maybe a way of getting out of the creative slump I’d felt myself falling into through it all.

Plans & Preparations

My next “real” game project (still in the early phases of development) is being done in Godot Engine, so I wasn’t completely rusty with it, but in the week or so leading up to the jam I tried to ramp things up a bit. In particular I wanted to see if I could get started on a sort of “game jam template” – a basic skeleton with a placeholder title screen and such, since the Ludum Dare rules explicitly state “You’re free to start with any base-code you may have” and it’s probably sensible to start taking that approach for these jams rather than re-doing all the boilerplate each time.

In addition to that I participated in the theme voting process on the Ludum Dare website, and did my usual ritual of trying to come up with at least one idea for each possible theme once the theme finalists were revealed. And this time, I also made a list of possible mechanics to explore independent of theme, with a focus on things that would make a reasonable scope for a weekend game jam. (Since scope is definitely something I’ve struggled with during past game jams.)

The Idea & Design

On Friday evening, the theme was revealed as: “ Keep it alive.” I had voted this one as neutral during the rating phase because on the one hand it seemed like it could be interpreted as farm / garden / pet related (which I liked), but on the other hand it seemed like it had weird (and maybe slightly darker?) connotations than some of the other themes.

Once the jam started though, rather than something farm or garden related, I decided to explore a “digging” mechanic. The basic premise: You play as a little sentient digger-bot, alone on a faraway planet, and you need to keep it alive by digging deeper and finding more batteries and/or spare parts. Here’s a quick sketch I came up with:

Concept sketch for a simple digging themed game.
Early concept sketch for the game.

Technically the above sketch was probably from some point in the middle of the jam (rather than the very beginning), and I ended up dropping the parts of the idea relating to treasure or spare parts, but it provides a pretty good overview of the idea I had in mind – a pretty classic “digger” arcade game, with basic mechanics that I’m sure have been done before many times in different forms. The one possibly semi-unique feature would be the robot’s battery depleting over time, and the need to dig for more in order to keep it alive.

My daughter (age 8) actually volunteered to design the robot, and came up with an adorable sketch of a worried-looking little robot with drills for hands. I traced over it in Inkscape, with a few minor changes mostly centered around making the lines thicker to ensure that the details would be visible once it was exported at a tiny size for use as the player sprite in the game:

A side by side image showing a child’s drawing of a digger robot, and the finished game sprite that was based on it.
The original concept sketch (left) vs. the final in-game sprite (right).

I was really happy with how it turned out, and felt like it added some personality and charm to the game that I probably wouldn’t have come up with on my own (more likely I would’ve ended up with some sort of mechanical R2D2 looking thing if left to my own devices). Plus, it also feels good to be able to include my kids in these silly hobbies of mine now that they’re old enough to take interest and contribute.

Development Process

Over the course of the last few game jams I’ve participated in, I’ve settled on a pretty good approach for developing a game over the course of a weekend, with each “phase” representing roughly a day in the process:

  • Phase 1: The minimum functional “game” – basically setting up the skeleton or structure to build on, such as the ability to move from an intro screen, to a gameplay state, to a win or lose state (or whatever the overarching structure is planned to be).
  • Phase 2: The theme-satisfying core mechanics – building out the most rudimentary playable version of the game idea driven by the game jam theme, maybe using sloppy placeholder graphics or the like.
  • Phase 3: Polishing – adding proper graphics and sound effects, improving the gameplay, squashing bugs, and tying up any other loose ends needed before submission.

Phase 1: Setting up a really rudimentary game skeleton is something I find weirdly fun (you might recall how my first real iPhone game started out as a single screen with a “win button” and a “lose button” - blog post about that here) – and in that vein, here’s how the game skeleton looked on the first day:

A simple game with a timer and a button to end the game.
Initial game skeleton for the theme, 'Keep It Alive.'

I felt weirdly amused by the idea that I could have called it “done” at this point and submitted it as is – after all, it was a fully functional “game,” and it even technically satisfied the theme right? Heh.

Phase 2: Fleshing out the basic gameplay took up most of Saturday, and that included adding art for the blocks, the batteries, and the robot sprite I mentioned further above. By Sunday, I had completed a reasonably functional prototype of the game:

Animated gif showing the initial un-polished version of a game jam digger game.
Basic gameplay fleshed out and working.

There was still some tweaking and bugfixing left to be done, of course, and I planned to do a lot more polishing – but now I was set to keep working on those things until the deadline, with confidence that I would be able to submit something functional and playable pretty much no matter what.

Phase 3: The final day of the game jam was dedicated to polishing. That included adding imagery to the title screen, adding animations, adding some dirt-like background textures, and generally polishing the overall feel of the gameplay. Here’s what the final version looked like:

Animated gif showing the final version of a game jam digger game.
Gameplay as it looked for the final submission.

Which may actually look pretty similar to the previous progress gif, but I feel like that’s a good sign that I did pretty well living up to my three-phase plan this time around, and really did allow some time for polishing at the end. As usual the final day also involved creating the thumbnail and description for the game – here’s what it looked like this time around:

Ludum Dare 46 Thumbnail for "Robot Battery Dig"
My submission as it looked in final thumbnail form.

For anyone curious to check it out, the Ludum Dare submission page is here, and you can play it on itch here.

It was sort of a strange feeling how relaxed the end of this game jam felt compared to some of my previous ones, where I felt a very real possibility that I might not even have anything functional to submit at all. Granted this was a simple, humble, arcade game style submission, but overall I was reasonably satisfied with how it turned out.

Time Spent

When all was said and done, I ended up spending only around 22 hours working on this game between Friday and Monday, which is substantially less than some of my previous game jam attempts. Here is a breakdown of where the time went:

A pie chart showing time spend on different aspects of creating a game for a weekend game jam.
Breakdown of time spent on different aspects of the game.

The majority of the time was spent in Godot Engine, with Inkscape taking second place for producing the various graphics needed. As usual a good chunk of time went toward Social Media (browsing the #LDJAM hashtag on Twitter, looking at people’s progress updates on the Ludum Dare website) but I consider that an important part of the experience, heh.

Feedback Received

Over the course of the rating period, the game received 20 comments, and as usual I went through and tried to catalogue them into shared “themes” to see if I could glean any useful patterns from the feedback.

Positive Feedback

As in previous game jams, there was a good amount of general positive feedback – which doesn’t leave much for me to comment on or learn from (though definitely makes me feel all warm and fuzzy inside, and I appreciate the environment of positivity and encouragement for sure.) That being said here were the general themes coming across in these, sorted by frequency received:

  • Cool / neat / nice / good concept
  • Fun / enjoyable
  • Addictive
  • Potential for mobile
  • Nice art / nice graphics / nice music
  • Solid implementation / well polished
  • Fits the theme

Of these, the possibility of being well suited for mobile is probably one of the ones I find most encouraging, since that’s been my focus so far in all my “real” game development projects.

Room For Improvement

In the constructive criticism category, there were a few interesting patterns that emerged:

  • Balancing issues: The most common criticism related to the random way blocks and batteries were distributed – sometimes batteries were too rare, and sometimes players ended up in unsolvable situations, leading to the feeling of “not enough interesting / meaningful choices” that can be detrimental to enjoying a game. (In retrospect I probably should’ve made balance a much bigger focus during the final polishing phase.)
  • Unclear mechanics: A number of people mentioned that it wasn’t clear that blocks of the same color “chained” together or why blocks fall. This seemed to be related to the lack of animation when it comes to the actual removal of the blocks – they pretty much just disappear instantly, rather than having some kind fade out animation or other visual cue that might’ve made it clearer what was happening.
  • The controls: A few people mentioned that the mouse-based controls felt slow or awkward. I had admittedly made the conscious decision to use mouse-based controls only (thinking I might adapt that to “tap” based controls for mobile at some point), but for a game like this with a player moving around in 2D space, not having the option of using the keyboard when you’re playing it on a computer might feel weird or unnatural.

Other Commentary

And finally, a few other suggestions or commentary that didn’t fit neatly into the previous categories:

  • Ability to scroll left or right: The game as implemented restricts the player to digging only in the visible area of the screen, but I wonder if it could add a more “exploratory” feel to keep the robot centered and instead reveal more of the world as they move left or right.
  • “I also made a digging game”: I found it delightful that not one, but two different people who commented mentioned that they had mad a “digging” game for a past Ludum Dare (which of course I then had to go check out). I knew going in that this basic arcade game mechanic wasn’t unique or original by any stretch, but it was fun seeing how it can be applied to different themes and remixed in different ways.

Final Scores

At the end of the rating period, the final results were released on May 12th. Out of 4,959 games submitted to the jam (which was actually almost triple the amount in the last Ludum Dare I participated in!), here was how mine did:

A screenshot showing the scores received on my submission for Ludum Dare 46.
Final scores received in all the categories.

So, reasonably average like most of my previous Ludum Dare entries, with “Fun” taking the highest score this time around. I fed this result into my little chart to take a look at how it compares to my previous scores:

A chart camparing the ratings I’ve received in all of the Ludum Dare game jams I’ve participated in so far.
Comparison of ratings received in the three Ludum Dare events I've participated in so far.

Which seems to suggest a slight upward trend in a lot of the categories, especially when considering that my entry for #43 was a bit of an outlier due to putting a lot of effort into the graphics but also making a game full of unicorns and rainbows for the theme “sacrifices must be made.” The differences seem more dramatic when converted to percentages of the overall submissions:

A chart camparing the rankings I’ve received in all of the Ludum Dare game jams I’ve participated in so far.
Comparison of the rankings I've achieved across the various categories in the three Ludum Dare events I've participated in so far.

For some reason I find it really fun to look at this kind of data, and it makes me feel inspired to keep on going and add more data points to these charts. Even if I don’t ever make it into the highest rankings, I can continue improving my game design and development skills based on these experiences.

Lessons Learned

So what have I learned from all this? Here are my main takeaways from this game jam experience:

What went well?

  • Getting the scope right. It might sound crazy, but this is probably the first game jam where I’ve managed to stop myself from putting in some kind of overly ambitious RPG-inspired mechanic (thinking back to the leveling systems I toyed with in Ludum Dare #42 and Alakajam #5, or the inventory system in my Ludum Dare #43 submission.) Going in with a plan for straightforward, classic arcade style gameplay right from the start definitely helped keep things from getting too out of hand in this area.
  • Time management. This is somewhat related to the smaller scope, but also the specific strategy for implementing it – that approach of aiming for a minimum “playable” game skeleton on day 1, a barebones finished game on day 2, and polishing on day 3. I was also able to preemptively decide not to implement certain things that I knew from past experience could be major time sinks (such as an animated character sprite). Overall the pace of this jam felt much more relaxed and manageable than some of my previous ones.

Things to improve on?

  • Randomization handling. This isn’t the first time I’ve added some “randomized” element by just generating a random integer with the intention of maybe improving / balancing it later, not getting around to it, and ending up with unbalanced gameplay as a result. Computer random and game random are two different beasts, and I should work on getting a more robust and balance-able solution for this into my Godot Engine arsenal (which would benefit future game jams as well as any “real” game projects).
  • Inspiration? It’s hard to explain, but it felt like my heart wasn’t quite in it as much this time around, especially toward the end. Perhaps due to the lack of overly ambitious RPG-inspired mechanics? Heh. While the fairly simple, generic arcade style gameplay made it easy to keep the scope in check, it may have the drawback of making me somewhat less excited to work on the game, so that’s something I might want to try to find a better balance on in future jams.

Conclusion

So that concludes yet another excessively long game jam postmortem! Admittedly posted a little longer after the fact than most of my previous ones, and I realize I’ve been a little quieter than usual on this blog and on social media in general. Like I mentioned in the introduction to this post, it’s been a strange time with everything going on in the world.

That being said: I’ve still been working on game development stuff fairly steadily (at least on weekends), as evidenced by my GitHub contribution graph:

GitHub Contribution Graph
My GitHub commits over the past year.

Most of that’s been related to my next “real” game project – which I haven’t officially announced, but which has been slowly taking shape over the past few months as I’ve been working toward a playable prototype. I expect to start posting some dev blog updates about it soon, and in the meantime, feel free to check out my Twitter for smaller but more timely updates. Thanks for reading!