New Year's Eve, 2019: The Postmortem

The source code for NYE2019 is public, if that’s the sort of thing you’re interested in.

The code for dendry, which was used to build the game, is here. It is still regularly being updated.

I’ve posted a longer version of this postmortem at New Year's Eve, 2019: The Postmortem - New Year's Eve, 2019 by Autumn Chen. This is an excerpt, but it’s still super long and wordy, sorry. Sometimes I feel like I write games for the sole reason that I can write postmortems about them.

Also, I will start posting reviews of some of the spring thing games on ifdb and here, soon-ish…

And I forgot to say this, but thank you all so much for playing and reviewing and commenting on NYE2019. I’m still a bit amazed by the positive reception that my little slice-of-life story has gotten. Thanks.

(Spoilers for everything about NYE2019 below)

A Brief History of the Pageantverse

NYE2019 is a sequel to Pageant, my earlier game, and despite my efforts, it can’t really be extricated from that context. The basic concept of this game evolved from a number of scenes in Pageant taking place at Chinese-American family parties; those were some of the first scenes I wrote for Pageant, and some of my favorites. You can play one at A Christmas Party by Autumn Chen, which was the first scene I wrote for Pageant, before I was even aware of dendry. Another predecessor was A Christmas Party, part 2 by Autumn Chen, which is another AU sequel to Pageant. I don’t think these games were particularly good, particularly from a mechanical standpoint, but they were the prototypes. Much of NYE2019 will be familiar from these two games.

About half of the game was written in 2020-early 2021, mostly before I wrote A Paradox Between Worlds. In 2021 I took a break from this game to write APBW for IFComp, only restarting work on NYE2019 a couple of months before the Spring Thing deadline. That’s an advantage of deadlines; it forces you to actually finish things. I would probably have never finished this game were it not for Spring Thing.

Narrative and Mechanics

So far, all of my IF projects have been ludonarrative experiments in some way (wow that sounds pretentious). My goal in game design is to make heavily “mechanical” or branching games that nevertheless have a single coherent narrative. I want to create highly interactive choice-based interactive fiction that are definitively not puzzle-based (or use adventure-game-like mechanics such as directional movement or object-manipulation). I want to give the player a sense of agency, but also use the systematic mechanics to send them down a single inevitable path, which also reinforces the central thematic elements.

The central ludonarrative question in NYE2019 is shown pretty early on: are social relationships an optimization problem? Can one treat the act of “finding a date at a party” as an optimization problem with a goal and various knobs to turn to arrive at that goal? This question is later asked again in both of the main routes; in Emily’s route she directly asks this very question. It’s also discussed in the scene where Karen plays a dating sim on her phone. It’s all very on-the-nose. The answer is a definitive no. The main mechanical aspect behind this is the anxiety meter; when anxiety gets too high, Karen is unable to do almost anything except either run away or cower in a corner. The problem is that a ton of different actions raise anxiety; basically any time Karen opens her mouth, the anxiety meter rises. So it’s almost inevitable that she’ll end up in a pretty dark situation.

What saves Karen when her inevitable anxiety attack comes, if she ends up being saved, is human connection. And the question of whether or not Karen is rescued by Emily depends on their previous history more so than it depends on your actions in the core of the story; having a past connection to Emily can outweigh not interacting at all during the party. The past is inescapable, but the future is not entirely determinate. If you do not have that previous history, the step of making human connections will hurt; every time you talk to Emily will increase your anxiety, making your breakdown more likely. Social interaction, in the end, is about exposing your vulnerabilities and letting yourself experience discomfort; the hedgehog’s dilemma, the mortifying ordeal of being known, and all that. Emily likes Karen (whether romantically or not) even knowing that Karen is a mess of a person (or at least that she perceives herself as such). The fact that Karen doesn’t want people to know what a mess she is turns out to be a big part of her troubles in the first place; by trying to hide her despair she has foreclosed the possibility of making genuine connections.

The more I write this, the more I realize that these themes aren’t novel at all. But hopefully the interactive presentation makes it interesting?

Time and Space

Recently I re-read a thread on the intfiction forums from IFComp 2020, about whether IFComp should be split into parser and choice categories. The discussion wandered into the question of what actually distinguishes parser and choice games. Is it simply typed versus clicked input? Some people suggested that what actually distinguishes parser games are world models; CYOA-style games tend to have simple world models if they exist at all, because of the problem of combinatorial explosion, while parser games have a full and complex world model. I don’t really agree with this statement, and I’ll try to think through why. Tangentially related, someone in that thread described a game that was awfully similar to the plot of NYE2019 (I swear it’s a coincidence).

Both APBW and NYE2019 have some kind of world models (in my opinion). APBW tracks over 800 variables (most of it is essentially boilerplate though). APBW also has a consistent set of verbs and nouns that are used throughout the game, with the only “pure CYOA” sections being the dialogue trees. NYE2019 only tracks around 80 variables, but it has a lot less boilerplate and also tracks basically every action the player has taken. Much of it is unused, but it is tracked. It doesn’t have as standardized of a vocabulary as APBW, but in each phase of the game there are some consistent interaction mechanics.

What’s different about the world models in APBW and to a lesser extent NYE2019 is that they don’t follow the same “medium-sized dry goods” world model that most parser games use. The parser world model isn’t made for simulating the social dynamics of a tumblr community or link-based internet navigation. Yes, with baseline Inform you can take an apple and leave it in any room, but you can’t watch your follower count rise and fall as you reblog the wrong posts ;). There’s the implication here that the inventory-and-location world model is the only possible “rich” world model, which is just not true. The granularity of its gameplay actually makes APBW similar to parser games in some more abstract ways. Going back and forth between blog posts is basically the same as “>E” and “>W”. However, the interaction mode in APBW does not fit parser; it was inspired by an internet interface that’s literally click-based. For what it’s worth, APBW also had at least two optional narrative puzzles that deeply involve the mechanics (which I think very few IFComp players cared about).

Even though it takes place in a physical space, where it might be possible to utilize the location-and-inventory world model, NYE2019 isn’t really about navigating a physical space. The space is there, but I didn’t want the narrative of NYE2019 to dwell upon the rooms that Karen visits or the items that she carries. Karen’s journey through NYE2019 is about navigating a narrative space rather than a physical space, along the dimensions of time, anxiety, and relationships (and a bunch of other dimensions but those are less important). In order to navigate a narrative space, the range of possible actions at any particular moment has to be carefully chosen so that they work in harmony with the narrative; the range of available choices should communicate something about the story/characters/themes (see again, ludonarrative resonance). Sure, you won’t be able to “>eat pants” in NYE2019, but I do not consider that a major loss. Karen is not an adventure game protagonist; having her act like an adventure game protagonist would make the story worse. And ultimately, NYE2019 is a narrative about constraints.

One thing that both APBW and NYE2019 do is set up some mechanics and then subvert them, by showing that they don’t really matter. Almost none of the variables on the stat sheets of either game really matter in terms of the course of the narrative, and that’s kind of the point of both narratives, that quantifying social interactions and relationships is an unhealthy mindset.

Dendry and Development

NYE2019, like Pageant, was written in dendry. These were the first and second games written originally in dendry, as far as I know (Bee by Emily Short was ported to dendry but it’s still incomplete), and NYE2019 is the first to have been submitted to a contest in the IF community. I like dendry for many reasons. On the coding side, it has a command-line toolchain using node.js, allowing me to use a text editor for my files. It has nice templates, which allows me control over the game’s html/css/js in a way that feels easier for me than twine or ink (although experienced twine/ink users would likely disagree). Unlike choicescript, dendry can directly embed javascript and html in the game script. As a writer/designer, I like that dendry was designed for storylets and quality-based narratives. It’s very easy to, say, have a choice that selects a certain number of nodes randomly from all nodes with a given tag.

Dendry is a node-based system, like twine/twee and unlike choicescript/ink, which I want to call flow-based (does terminology exist already for this distinction?). It has labeled nodes with tags and preconditions, and choices are links to other nodes. This has its pluses and minuses. On one hand, it has a flat organization without the nesting and rejoining of ink/cs, and it’s easier to reuse and organize chunks of text (for me, at least). It’s easier to figure out where the missing spots in the story are. On the other hand, it might take a lot more boilerplate code to do the same thing; it’s more effort to have a quick choice that then rejoins the main thread.

One of my favorite things about dendry is that it allows for easy mid-level organization, between the level of individual nodes/choices and the story as a whole. Dendry has scenes, which are separate files containing multiple nodes, that function as namespaces for nodes. (Technically, all nodes are called “scene” in the dendry code itself, but that’s confusing for me, so I won’t use the term “scene” that way). For example, both the dinner scene and snack scene might contain a node named eat. Scenes are technically only namespaces, but it’s easier to treat a scene as a storylet. So each scene/storylet is a self-contained CYOA story, while the scenes are composed into a larger story using tag-selection choices and the root node.

I did some thorough tuning of the anxiety mechanics and endings. I used random testing quite a bit, and tried to tune the parameters so that the Emily and Alone endings would be approximately equally likely.

Future Work

(MCU voice) Karen Zhao will return.

(okay, MCU never actually says the line out loud but w/e)

I am planning at least one more entry in the pageantverse, this time with the four main characters having an online ttrpg session while quarantined during the pandemic.

For NYE2019, I’m planning a few updates. One would be incorporating character art in the game (thanks to brushmen). Another would be to expand a bit on the Kevin and Mom sections of the game, and some of the conversations with the adults. I am not planning on radical changes like adding in the Aubrey/Miri routes.

I have several other ideas in the design pipeline that try to unify narrative and mechanics, and use dendry/quality-based narrative to do so. I’m thinking about a couple of IF games with more simulation/economy/management mechanics, about guiding an isolated society to survival amidst difficult circumstances. There’s another that tries to intertwine social relationships and magitech battle. It’s too early to say any more about these ideas.

NYE2019 is the last part of a triptych of slice-of-life games about queer Asian-American teens and young adults set in the 2010s, following Pageant and A Paradox Between Worlds. It might be the last game I write in that narrow frame. But it might not be, who knows. I plan on diversifying the themes and situations in my work, but I also have at least one more story about queer teens in the works.

See New Year's Eve, 2019: The Postmortem - New Year's Eve, 2019 by Autumn Chen for related works, references, and more notes…


This was a great read, Autumn. You are a very thoughtful writer.

I think I posted my praise of your work on itch fairly early, but I want to echo it here. You were absolutely a “Best in Show” candidate for me. I think some topics are really well suited to exploration via interactive fictions and - as you put it - the “optimization problem” of social relationships was perfect fodder for a game.

I very much look forward to whatever else you have to show!


I’ve enjoyed–both in NYE as well as in APBW–the way your games are critical of what I might call a rhetorical model for adventure gaming.

One assumption implied by “stats” of any sort in a game is that they can be manipulated or changed. They further seem to posit that there is some great, hidden formula underlying all that we interpret as subjective experience.

The darker side of that kind of rhetoric is that its structures imply a kind of fairness: any character can manipulate these numbers, any character can win. It isn’t really true anywhere but in a game. Most games are not simulations, though statistics are often used to invoke a kind of rational veracity.

I’m eager to see what’s next!