This was originally an essay in our newsletter. Subscribe to get essays like this when they're originally released.
In Future Proof Podcast episode 035, we talked some about how we track player choices in Exploit: Zero Day. As we actively work on the final job in "Headless Swarm", we're having to pull in a wide array of choices into the final confrontation in our first season of paid story. Who did you save, and who had to go into hiding or worse? What information do various actors have? Who's angry at you, and who's an uneasy ally? We thought it'd be fun to go into a bit more detail on how we track all that for this newsletter.
There are a bunch of ways you can structure a game's story, and a bunch of ways you can track progress through that story. One of the leading experts on interactive narrative, Emily Short, has written extensively about the various approaches over the years on her blog. EZD uses a combination of what she calls "branching narrative" within jobs, plus a very simple version of "quality-based narrative" to remember your actions between jobs.
EZD's jobs are like quests in other games: someone contacts you asking for help or issuing a challenge, you converse with them and usually solve a puzzle cluster that resolves the job's central conflict, and then the job ends with a bit more conversation. We mostly structure these in a traditional Choose-Your-Own-Adventure branching style: you get a message or three, you pick a reply, and that determines which message you get next. Usually, these choices reconverge into a single thread with only minor differences based on the path you took through the job. This is all structured around what we internally call GameMessages, which are connected with GameMessageChoices into a branching series of nodes.
But it would be a pain to use this structure to remember your choices from job to job. For example, if we needed to change a choice in an old job to fix a bug, it would be hard to track down everywhere in every other job that depended on that choice. Instead, we decide which choices are important and give players "badges" when they make those important selections.
Badges are actually what unlocks the next job in a sequence: when you finish a job, we give you a badge to mark its completion, and then we "employ" you in the next job by checking for which jobs require that badge. We can also show you alternate versions of GameMessages based on what badges you have... sometimes even with different choices at the end!
There's a fun little side effect to gaining these badges; we make the badges everyone has earned public, visible on your game profile. If you visit another player's profile, you can see the badges they've earned and get insight into the choices they've made.
Badges are deceptively powerful, but we use them in pretty simple ways compared to some of the very fancy approaches Short describes in her piece. For one thing, badges are binary: you either have them or you don't. That means we can't easily do things like have a job start up once you've betrayed a certain number of people, or track reputation with a faction in a way more complex than "they're angry" or "they were angry but now forgive you". For another thing, we just haven't taken the plunge into designing super-complex stories for EZD; it's still, at its core, structured around sequences of puzzles, and we haven't felt the need to do more interesting things with our narrative structure.
Badges have served us really well, but even so we've run into a problem or two! Most recently, we realized that we weren't actually tracking an important choice in "Headless Swarm": whether Samsara Digital had gotten an important piece of code! As part of our work on the final job of "Headless Swarm", we'll be going back, adding that badge, and making sure anyone who's already made that choice gets the badge added to their profile. (Ed note: this was completed in February 2023!)
Exploit: Zero Day is available to play for free—play and create puzzles and clusters, and play our free season of story, “Black Echoes”.