Last Days (GMTK Game Jam 26)

Last Days (GMTK Game Jam 26)

For this year's GMTK Game Jam (theme of Countdown) I created a game called Last Days: a narrative puzzle game where you are unravelling stories from ancient cities leading up to their destruction. You are also decoding a mysterious ancient language I created for the game. Each chapter takes you farther back in time, deeper into the language, and closer to the mystery at the center of it.

The original concept for Last Days was more like a history trivia game, where you are given a bunch of historical events and you need to deduce their order by fusing tablets together. The idea was that you were ordering events to "count down" towards BCE 0. I made a demo of that concept and quickly realized it wasn't fun at all. It was basically a guess-and-check trivia game where you didn't know any of the answers. I had bigger plans for the game (a language deduction puzzle was part of the idea pretty early on) but a language puzzle and a bad trivia game were pretty clearly not a winning combination. I had only entered the jam on a whim because I liked the idea, so I didn't feel bad about quitting while I was ahead.

But the next day I found myself thinking... What would the story be if this were a video essay? I figured it would be that I tried something that didn't work, but then took a step back and figured out what the design needed. Once I had that thought I knew immediately: it needs a story.

The problem with my demo had been that you were working with a bunch of contextless information. A story would not just give you context clues to piece together the sequence of events. But a narrative would also give more opportunities to thread in a mysterious language with context clues and story beats. Instead of Chants of Sennaar meets Chronle, it would be Chants of Sennaar meets Cain's Jawbone. I was excited again, and back in the jam.

Unsurprisingly, "Chants of Sennaar meets Cain's Jawbone" was easier said than done. The hard part was not really developing the language. I knew it needed a simple structure that combined simple concepts into more complex ones. And I knew that I wanted to base it on ancient Sumerian, which was a convenient source of loan words. And it made sense linguistically for my less efficient language structure to break apart into something simpler and more flexible (for more on this read K.J. Parker's excellent novella Making History).

The hard part was constraining the language so it could be learned in an hour through context clues, and creating those context clues that would draw people through. (While also making sense historically and narratively.)

The language deduction puzzle came together about as well as it could in a solo jam game. But while I think that the context is there for really dedicated puzzlers to deduce the context and combinations of the different concepts (looking at you, Letibus club) it falls well short of the "quick, fair, streamlined, digestible" experience that I think is ideal for a game jam.

Game jams force you into constraints and compromises you wouldn't otherwise make, and that's a good thing.

The biggest compromise for me was introducing adaptive difficulty. I'm actually quite happy with how it turned out; I think that there is a satisfying and non-trivial puzzle experience to be had at every level, while also guaranteeing that most players could finish the game in an hour if they want to (and are willing to accept the game's help.) I think that with a lot more fine tuning and play testing, the game could probably get to the point where those options don't need to be front and center. And I definitely think that it is a crutch to make up for an unfair puzzle. But it was a solution to a problem that I could deliver by the deadline; and for that reason I'm happy with it.

I am also happy with some of the story beats, short though they are. And I had wanted to try a Cain's Jawbone style puzzle for a while, and this was a great excuse to try it on a smaller scale. It was very interesting thinking about what story details could give just a little bit of context for the sequence of events.

My one big regret from the jam was not having time to record a soundtrack. I think that adaptive soundtracks can be really fun in puzzle games, when the "aha!" in the puzzle is matched with an "aha!" in the music. But the real reason is that I really wanted to record some Civ-core choral beats, singing lyrics from the proto-Sumerian language created for the game. I just think that would have been a real standout in the audio department. But sadly there just was not the time for that this time. (Although I'm almost tempted to record some in the meantime and contrive another game in this alternate history next year...)

I've thought a little bit about what the game would be like with more time to bake. In one sense I think that the game would benefit from being pretty much the same but longer, and with more side content. The more context a player can get, the more connections they can make in the lexicon.

But the one idea that stood out to me would be to have an actual playable character who meets with an ancient prophet in their dreams between chapters. This appeals to me because making Last Days really made me appreciate the feedback process that is built into the
Chants of Sennaar adventure; you can get so much more context out of a two-way interaction than a linear story.

So the game is far from perfect. But it's also a successful experiment. And the first proper video game I've ever made, which feels exciting (even if it's a bit obtuse)! And, it has me thinking about what's possible for my other projects.

P.S. This game was created with help from an AI coding assistant. The story, writing,  and game design are original and did not use AI. A more detailed account of how I used AI in this project, and some reflections on how I feel about it, are posted in the game's devlog if you want to know more: https://worse-ink.itch.io/last-days/devlog/1606436/re-the-code-generation-tag
Back to blog