Recounting the 2022 GMTK Game Jam (Part 3)


With days 1 and 2 behind me, I got up from my couch at midnight of the third day with renewed determination. I told myself I would just do a couple more important things and then go to bed. "A couple" things turned into a lot more than a couple:

  • Clearing dice from the board with delay
  • Fixing a critical bug where you could extend a pattern while it was in the process of disappearing
  • Overhauling dice drag-and-drop to be more forgiving of mouse positioning
  • Score system (with combos and fever)
  • Card system
  • Graphics
  • Sound effects

According to my commit log, I wrote about 700 new lines of code between 1am and 9am, taking a break in the middle to shower. That's about 100 lines per hour. That's some fast coding!

At 5am, I had the core game loop working pretty well.

At 7am, I had cards implemented.

In the final stretch, I hastily designed the scoring system (a bit too hastily, probably) and scribbled some graphics in Aseprite, and submitted the game (without sound effects) right at 10am (the beginning of submission hour).


I then spent a good 10 minutes staring into space as the accumulated exhaustion of the all-nighter I just pulled finally caught up to me. My thoughts quickly drained from my brain as I sat, though I was not sleeping. Thinking nothing, I felt a sense of relief. My soul re-entered my body.

Gathering myself for one final push, I got up to record some sound effects. I spent the next hour recording dice, buttons and cards. This was my favorite part of the jam. Maybe because banging dice together is a lot less mentally strenuous than coding. Maybe because my standard for sound design is much lower than my standard for software design. Or maybe because I already knew that I had submitted something, so I didn't feel like I was in a rush. In any case, I was in the home stretch; anything else would be a bonus.

And that was it for the third and final day! I did about 90% of the gameplay programming on this day alone. Almost everything before that was engine stuff. In the middle of it all I also haphazardly added the missing gameplay element: the scoring system. It serves its purpose, but it's not very well-considered, and it shows. I originally thought that, like in Solitaire, what would drive the player would be a fear of getting stuck. But I didn't have the sorted piles nor the dependent random events of Solitaire, and as a result, score became a key part of what motivates player choices and drives gameplay. I regret not making it a more central part of the game.


If I could do it again, I might do a few things differently.

While I had a pretty concrete set of rules for the game, I wish I'd been more concrete about the game loop before starting on the implementation (though I've been telling myself this since 20 jams ago and I worry about taking this too far and stagnating in the brainstorming phase). To do this would require some amount of prototyping, which is hard to do when the game doesn't exist yet. That being said, this time my rudimentary prototypes with physical dice should have told me that there was something missing. I think I need to spend some time formalizing in particular the "fuel" part of a game loop. What compels the player to keep going? Tension and release (e.g. making a mess and tidying up), like in music? Challenge, achievement, and improvement? Mystery, the desire to explore, and the promise of secrets, like it says in the Arcane Kids Manifesto? Something else I'm not thinking of? Definitely a topic I will be reflecting on as I play more games.

I also probably did way too much from scratch for this jam (a vestige of my origins in Ludum Dare). Starting with just SDL, during this jam I spent roughly 50% of my time just implementing an entity-tree system (e.g. what keeps a stack of dice stuck together when you drag it), which I'm sure exists in any medium-to-large size game engine such as Unity, Godot or GMS. On the bright side, I could probably re-use the entity-tree system I created during this jam for my next game. I'm just surprised and confused that I haven't made one before, even for other jams where I started from scratch.

An interesting observation I have about this jam is that I didn't scope down my initial idea whatsoever, which is unusual for me. I set my goal at the beginning of the jam and more or less hit it. Only, I had expected to be done sooner, so that I could do some playtesting and further iteration on the formula. I ended up not having any time at all for playtesting. I'm pretty sure I played the game only once all the way through before shipping. Not good.

I have a newfound appreciate for Solitaire now. It's not just some random rules! It's an intricately woven tapestry of masterful game design, with each element interacting with and depending on each other. Remove one element, and the whole thing falls apart.

Get Dice Attack!

Leave a comment

Log in with itch.io to leave a comment.