Invertebrae: a Pre-Mortem
Editor’s note: this post is about a game I created for Ludum Dare 44, and was originally lifted from there.
I want to save my post-mortem until after the judging period is done, so until then let’s pre-mortem! I think the majority call these “dev-diaries” but pre-mortem is obviously a much cooler term.
Formulation
Like all games, it started with a notebook and various existing chat threads. A lot of my IRL friends are at least vaguely interested in game development (some of them even participating in past Ludum Dares!) so it’s incredibly valuable to bounce ideas back and forth.
I’ve wanted to make a terminal-esque game since at least LD42, so I went into this expecting to force whatever theme won into my game, rather than the other way around. “Your life is currency” was a little tricky until I figured I could stretch the meaning of “currency” to expand to “currentness”, which is really just a long-winded way of saying “now”. That’s what I’ll do: a narrative game set in a terminal that plays with the idea of “now”. I’ll also put money in the story or something to make the connection a bit more concrete.
As to what the heck “invertebrae” even means…it’s a cooler, less correct way of saying “invertebrate”. And “invertebrate”, while having a specific scientific meaning, could also be literally translated as “spineless”, which is how I’m choosing to interpret it with regards to the game’s themes.
Inspiration
For story inspiration, I looked towards one of my favorite visual novel series, Zero Escape. In particular, I was most focused on the second in the series, Virtue’s Last Reward; without spoiling too much, it also has a focus on getting information between multiple in-game timelines. I didn’t really want the plot of my game to revolve directly around time-travel, but the idea of being able to use information gained from “bad ends” stuck.
In terms of aesthetics, I can’t for the life of me find the original picture, but a while back on Twitter I saw someone post their custom Linux desktop setup and was absolutely enamored with it. As you can probably guess, their terminal was a deep blue-black with golden-yellow text.
Implementation
While making an actual terminal game would have been neato, it was imperative that my game could run in the browser this time around. And with my day job being a front-end React developer, it really only made sense to just build it with React. Plus, this gave me an occasion to make a full=fledged project with the recently released React Hooks, which if you haven’t heard are essentially a monadic-ish effect system for React components (hopefully that cleared things right up).
It also meant that I got to take advantage of some of the great tooling in the React ecosystem, such as react-dnd. This made the drag-and-drop feature mostly straightforward to implement, although funnily enough react-dnd has some problems cooperating with the React Hooks syetem, so there was some time spent trying to get the two to make peace.
One cool thing I like about how the game is built is that the “engine” is mostly separate from the story. As many people found out, the entirety of the story is actually within a singular JSON file that the game engine loads at runtime. Theoretically, if you like the mechanics in my game but were meh on the story content (don’t worry it’s fine), you could actually clone my repo, edit the story.json
file with your marvelous creation, and boom you have Twine but with drag-and-drop!
Music
I learned from my last two Ludum Dare games that music honestly might as well be mandatory (and my first game even had music, albeit mixed too quietly for anyone to hear). As fun as the game is, playing something with absolute silence in the background is just never going to be an optimal experience. And even if you don’t have a musical bone in your ear, there’s so much free software these days that’s so immediately approachable. Plus, the circle has swung back around and minimalism is cool again, so you can totally get away with arpeggiating a chord into infinity.
For the music here, I used Groovebox, a really fun synth-sequencer program for iOS. If you have an iWhatever, stop reading and download it right now–it’s free!! I spend so many bus rides now just making short little loops. And much like gamedev, while 99.9% of games don’t quite hit the mark, the 0.1% that do make it all worth the while.
Before I leave you…
During the compo, my sister pointed out that the font I chose kind of looked like a cleaned-up Comic Sans. Whoops.