The Golden Heist: Post-Mortem

=== The Golden Heist IFComp Post-mortem ===

Hello! This is a somewhat-late post-mortem review of making The Golden Heist for IFComp 2021. I’d hoped to put something together in December, but (quite rightly) ended up prioritising finishing work for the year and being a little puddle in the corner for a few weeks.

I’ve stolen the general structure for this from Mary Goodden’s post-mortem for Funicular Simulator 2021 (Funicular Simulator 2021: Post-mortem). This is written from my perspective, though it covers both Rob and my contributions to the game.

High-Level Overview

I made the game alongside Rob Thorman. We wrote the game and built most of the systems in Ink, and made use of Ink’s web player and custom JavaScript to extend its capabilities. We both had a hand in almost every aspect of the game. We co-wrote the content and both coded within Ink; I handled wider design and more elaborate code requirements.


What we did

We started work on The Golden Heist all the way back in the heady days of 2020. We had no specific plan for releasing the game, and didn’t know that we’d end up submitting it to IFComp, but we’d both decided to collaborate on making a short text game, partly for the fun and partly so I could give Rob some coaching in writing with Ink. In my head, what we were discussing at the beginning was going to be a game batting at around 1,000 words.

Did it work?

Absolutely not. We worked on The Golden Heist (in small but consistent amounts) up until about a month before the IFComp deadline, and it clocked it at a whopping 40,000 words, making it technically novel-length. To me, this represents the project major failure: scope containment. I think almost everything we put into the game made it better and was ‘worthwhile’ by some metric, but we were largely not sensible about keeping a lid on new material for the game. In some ways, that’s bad, in that our true scope wildly mismatched the actual scope and amount of work we ended up doing; in other ways it’s good, because one reason we continually allowed this to happen was that we were both enthused by the (casual, low-stakes) project and our collaboration, and were happy to keep it going.

I will say, for all that, we did land on a content map for the game very early on and mostly stuck to that. The additional content burden came largely from embellishing or expanding those sections

Companion System

This one is large enough to merit its own subheading. The single biggest element that forced expanded content was having a choice of three companions to play through the game with, but it was also, in my mind, one of its biggest strengths. It supported the heist format nicely and was a strong, major choice the player would make that had a significant impact on each playthrough.

From the writing point of view, it also meant we ended up with three stronger, more interesting characters. We wanted three characters with distinctive strengths and weaknesses relative to the caper, and the variation helped us push those characters to be more strikingly distinct from one another. It was also out-and-out one of the most fun elements of writing – the ability to make yourself laugh by writing two comparatively neutral responses to something, and then something ridiculous from the third character because they wouldn’t let that slide.

Writing variable text for each companion at various points wasn’t actually too burdensome; what pushed scope out most of all was content that was truly bespoke to a specific character. Honestly, these are consistently my favourite bits in the whole game, but also the ones least likely to be seen by any one player.

(The strongest example of this: We originally scoped the ‘getting inside’ content to be two storylets – ‘fast-talking the guards’ (which Felix would excel at and Vira suck at) and ‘sneak across the grounds’ (the inverse). The problem was, this left poor Fabricius, our mad inventor, without much of a role to play – he sucks at both those things. So, in one conversation, one of us threw out the idea of ‘Well, this would be ridiculous and OBVIOUSLY I’m not serious but… he could just fly in. In a glider. Funny hah hah anyway, moving on.’ So, obviously, then we HAD to write aglider entry route. And it’s solidly one of my favourite segments that still makes me laugh even now.)


We were bad at containing scope, which turned out okay given our relationship with the project and the positive impact it had on the final output.


What we did

We landed on ‘The Golden Heist’ very early – I just looked back and it was at the top of one of the first documents Rob sent me. We did bat around other ideas and toy with a subtitle, but nothing could beat the simplicity of ‘The Golden Heist’.

Did it work?

I think so! It’s a strong title that’s never really felt like a placeholder. It’s called The Golden Heist because Nero’s palace is known as the Golden House and you’re heisting it. Simplicity itself.


What we did

We went back and forth with discussions and design documents covering the key things we wanted to focus on. We dismissed a lot of things that seemed scope-unfriendly (hah) or that would unhelpfully convolute the narrative for our purposes, such as more complex content structures or heavier use of puzzles.

We focused on a content structure that would hit many of the beats of a classic heist. (Setup → Choose your crew → Get inside → Blend in/find your man on the inside → Crack the vault → SURPRISE TWIST! → Try to get out and make good)

We knew we wanted consequences and for the player to be able to ‘fail’ their objective, but didn’t want to/didn’t feel we had scope to make it possible to fail-out mid-game. (In retrospect, an even better decision than it seemed at the time. We were originally expecting a playtime in the 10–15 minute range, and it ended up being closer to an hour. Failing out during the game would have felt a lot less fun at that length.)

Did it work?

Mostly! The content structure we landed on early worked well for the rest of the project, though we added/bulked out a few systems and made lots of tweaks based on playtesting, and I’m still happy with the result.

Three areas of design merit specific mention:

Loyalty, Suspicion, and Lucre
These are the game’s three core ‘stats’. Certain choices would impact your companion’s loyalty to you, the overall level of suspicion you’ve aroused, and how much money you’re coming out with.

Loyalty and Suspicion are present throughout the game. We wanted them to often work in opposition to each other, where supporting your companion could come at the cost of increased Suspicion, and vice-versa. The clearest example of this is when someone at the party recognises your companion and risks making a scene. Going along with what your companion most wants to do will generally make the situation worse, but not doing so risks pissing them off.

We had a few specific finale beats in mind: your companion stabbing you in the back or you getting away scot free, based on these stats. We mapped these onto a grid to make sure we were covering enough game states well enough, and added two more states, turning the possible finale beats into:

  • High Suspicion, High Loyalty: Your companion nobly takes the fall to make sure you get away
  • High Suspicion, Low Loyalty: Your companion throws you under the bus to make sure they get away
  • Low Suspicion, Low Loyalty: Your companion stabs you in the back and nicks the loot
  • Low Suspicion, High Loyalty: You both get away scot free and have crumpets for tea

One thing we found from playtesting was that, if either or both stats were too middling, the ending didn’t always feel suitably earned. If you have obviously low or high stats, you felt like you had it coming, but if you’d been up and down all game and landed in the middle, it was a bit muddy and didn’t feel good. So, we added another optional beat before the finale: if your stats were middling, your companion would get tripped during the escape, and you’d have the chance to go back for them or leave them there. Not exactly subtle, but it provided an immediate choice and obvious consequence which we used to push your stats out of the muddy middle and towards one of the extremes. It helped make the endings feel more earned against the playthrough, even if it indexed more on one, more proximal event.

Social Wheel
Once you infiltrate the party, you have to circulate, talking to the guests and trying to pick out your ‘plant’, waiting on the inside. This was one of my favourite sections of the game to write. We knew how we wanted it to work, functionally, right away: a semi-random sequence of encounters with guests at the party, any one of whom could be the plant on any given playthrough, with clues so you could figure it out.

For the clues, I structured it as a set of characteristics for jewellery (an animal shape plus a colour). At the start of the game, it pulls out one of each, matches the animal against a generalised list so it’s not blindingly obvious (So a ‘tiger’ shape becomes ‘cat motif’, ‘basilisk’ becomes ‘mythical creature motif’. I took a perverse pleasure in designating ‘hippopotamus’ a mythic creature in sideways honour of Herodotus.), and gives you that as a clue. Somewhat cheekily, you won’t be reminded of it and can’t scroll back that far, which felt like a bit of a gotcha, but the consequences for failure were light enough that we stuck with it. When you meet each of the characters in the social wheel, they all have jewellery of some form that conforms to the template. Most of them are newly randomised; one is chosen to be the plant and given the correct jewellery shape and colour.

We used some logic to control pacing through the storylets, but otherwise randomised the sequence. (The player has to play a minimum number plus the ‘recognition incident’ specifically before the plant is shuffled into the deck.)

The encounters themselves were based largely on Theophrastus’s Characters (Rob’s idea!), which gave us some nice chunky (awful) archetypes to work with.

The Vault Puzzle
This was perhaps the hardest part to get right and one of the more divisive elements in playtesting and competition feedback. We ended up simplifying the puzzle late in playtesting and making the solution more obvious. We’d originally had it a degree removed from where it ended up – using some less obvious connections between the gods and the locations which were still deducible from the information. But too many people found it too big of a barrier (even with the ability to ‘fail forward’ without solving it), and we didn’t have the time or energy at that stage to find a really refined solution that preserved some higher difficulty.


What we did

We wrote 40,000 words.

Oh, sorry, I should probably elaborate more than that. We mostly passed things back and forth. We intentionally defined the content the way we did to make collaboration/co-writing easier. We’d each agree a chunk to work on, go and write that, then edit each other’s work and integrate it into the main build of the game. We made use of lots of individual files and Ink’s INCLUDE capabilities to be able to pass things back and forth, and eventually set up a shared GitHub repo to manage versioning. I also built a template Ink file so that each chunk could be written and tested standalone before it was integrated.

Once all the first-pass content was in the game, we made steady edits, changes, and additions as needed, using the GitHub for version control and history.

Did it work?

Yes! This part of development was very smooth. I always find that co-writing this way lets me write quickly and well because I have the confidence that someone I trust is going to make it better/call me out when I take too many liberties. And I really enjoy the process of punching up someone else’s work and making their ideas shine through better.


What we did

We used Ink for the bulk of development and game systems, making use of the web export function to play the game. I wrote some custom JavaScript to handle animations and a few other elements of the game. I also built the larger game systems in Ink, while coaching Rob on writing with Ink, which he took to with the speed of a motorised duck. (By which, to be clear, I mean ‘arrestingly quick’.)

Did it work?

Yes. As with the writing, a version control system was a huge help here. Part of my goal was to push myself to be able to do more with Ink beyond the language itself, and I definitely got a lot out of doing that here!

Art & Sound

What we did

For art, we used free-use assets from the web to wrap the game. We knew art of this form couldn’t play a central role, so we focused on the text and the presentation through animation and styling.

For the music, Rob approached Ariella Koorlander ( She took our loose brief and came back with three magnificent ambient tracks that really elevated the game a lot. The music rightly got a lot of positive callouts in feedback on the game, and it wouldn’t be the same without it.

For sound more generally, we sourced a couple of free-use effects to fit a couple of the scenes to ensure continuity around the music. These mostly worked, though at least one person cannily caught the rather loud Canadian-sounding voice in the walla effect, which I sadly couldn’t excise. Still, I think the FX contributed in a mostly positive way to the game.

And: that’s it! There’s much more I could say, but I’ve tried to keep myself from wandering (even further) into the weeds too much. Thank you once again to the magnificent IFComp organisers, to everyone who played the game and said such nice and useful things. We’re thrilled with how well received The Golden Heist was, and so pleased to see people ‘getting’ what we were going for. Thanks again to Ariella for the amazing music. And thanks also, of course, to my conspirator (which I think here has to be pronounced ‘con-spear-AH-tour’ for that faux-Latin vibe) Rob Thorman.

TLDR: Thanks much for this, and hooray for postmortems, early or late!

Golden Heist was one entry I particularly wanted to see a postmortem for. And I really enjoyed this.

It’s actually 1 of 3 games I have left to poke around at for the reviews I am sending to IFDB alongside Mike Russo’s, so the look inside is wonderful, and it didn’t spoil anything. As much as I’d like to see everything by myself, it’s not practical, so your comments and reviews’ help provide a guide for me where I can hopefully look at it!

I encourage other people who enjoyed GH to replay it as well, with or without reading this postmortem.

ETA: I wanted to add a generic “hooray for taking the time to come back 2 months later” because I talked myself out of writing an Under They Thunder postmortem in January 2021, and I wish I hadn’t. And I really enjoy the slow drip of postmortems, whenever they show up, because thoughtful ones like this can’t be rushed.

Of course it’s a huge rush to see a bunch of postmortems right after IFComp, but seeing ones appear a month or more after helps IFComp last a bit longer or remind me of IFComp games I meant to look at, whether from 2021 or far earlier.

If this is the last postmortem, it’s a great note to end on, but if other people still want to send theirs out, please do!