This is the second part in our series (continued in part three and part four) about the new interactive story system we designed for Ice-Bound. We talked in part one about how Ice-Bound stories are built up from templated fragments in three sequential categories: symbols, which can trigger events, which in turn can trigger endings. As you descend through the frozen levels of Carina Station, you encounter stories about its past occupants, each deeper and thus farther back in time. Each story is represented by a map, and these story maps are the subject of today’s blog post.
Visually, each story map shows the physical layout of one level of the station, the setting for one group of characters. But it’s also a map of possible stories that can be told about those characters. Each of the round “sockets” in the map is assigned to a symbol (the first of our three kinds of story fragments). A symbol can represent something about a particular character (Katrin might be paranoid, or Miquel wistful) but it can also signify dramatic possibilities for the story, such as the presence of a curious Russian doll (representing mystery) or laboratory equipment (representing discovery).
You explore these potential stories by choosing what parts of the map to illuminate: which sockets, and therefore which symbols, you want in your own version of the story. If Katrin is lonely and Bjorn is drunk, a different story might play out than if she is religious and he is driven. Our event fragments appear based on combinations of symbols, and ending fragments are triggered from combinations of symbols and events.
Riffing on the dramatic concept of Chekhov’s gun, which states that everything introduced into a story should serve a narrative purpose, we’ve taken to calling our model “Chekhov’s dollhouse.” Do you put the spotlight on the gun over the mantelpiece, and bring it (and the violence it implies) into your story? Or do you put the focus somewhere else? Unlike branching path models, where making a choice is usually irreversible and high-consequence (even if the consequence is only wondering what you missed), with our model you can freely rearrange the story as much or little as you like before committing to a single configuration, as easily as rearranging the furniture in a dollhouse.
While each level’s map always has the same shape and number of sockets, the symbols that fill them—the details of its potential story—are dynamically assembled when the level is first visited. How does this work? To answer, we need to first explain what happens when a story is resolved.
When you’ve got a certain story arranged the way you like, you signal to your AI collaborator KRIS that you think the story is finished. But KRIS is filled with self-doubt: is he as good as his human original? How would the real Kris Holmquist have ended this story? To convince him your version is right, you’ll need the printed Ice-Bound Compendium, a book filled with secrets, drafts, memories, and notes that KRIS’s creator, the enigmatic publisher Tethys House, has decided he shouldn’t be allowed to know.
Each potential ending to an Ice-Bound story—and each page of the printed book—is tagged with themes, representing recurring ideas in Holmquist’s work. These include duplicates and authenticity, the loss of innocence, the lure of Below (i.e. the mystery of Carina Station) and many others. As you view the book through the camera, pages whose themes overlap with your chosen ending will light up with hidden information, as KRIS’s subconscious reacts to them. By choosing one of these matching pages, you’re giving KRIS some outside evidence that the ending you’ve chosen is correct.
But showing KRIS pages from the Compendium has a second effect: he’ll learn the content of that page, and this might have consequences. To resolve a story you think should end with betrayal, you might show him a page with a tabloid article about his estranged daughter selling the rights to his neural scans after his death. This might well convince KRIS his novel should be about betrayal… but will it teach him betrayal was a theme of his own life, too?
Ice-Bound isn’t a puzzle game: there’s not one right answer. Any ending can be justified by multiple Compendium pages. It’s up to you as the player to find something that feels right for the story, while also balancing the information you want to share with KRIS about his past, and how his own story unfolds.
Regardless of its secondary effects on KRIS, resolving a story strengthens a particular theme, signaling to him that theme’s importance in his novel. As you descend to the next level, KRIS considers each of the new map’s sockets, and will try to fill them with symbols tagged with strengthened themes. So if you start telling KRIS Ice-Bound is about betrayal, he’ll start giving you stories that have more and more elements related to that theme woven into them. Focus on hints of advanced technology or unexplained powers? Ice-Bound will start turning into science fiction.
This is the second layer of combinatorial complexity in our narrative engine. Not only is an individual “build” of a story combinatorial—you can rearrange the “dollhouse furniture” to explore dozens of arrangements of active symbols, and the corresponding events and endings they trigger—but each level’s map is itself variable, since the set of symbols comprising it changes based on the pages you’ve shown to KRIS. This doubled complexity means there are tens or sometimes hundreds of thousands of different permutations of each of Ice-Bound‘s chapters.
How is this possible? Doesn’t this mean we have to write a massive library of content for each story: variations for each possible theme or combination of themes? The way we solve this is by having two libraries of content. Certain sockets on each map are reserved for “story-specific” symbols, authored for that particular story, while others can draw from a larger pool of content that can be pulled into any story.
This is where our templating system really shines, tweaking a fragment to make sense no matter which story it’s dropped into. Our contextual grammars let us alter details based on things like time period (replacing a telegram in the 1940s with an email in the 2000s), character-specific language (Franz says “Mein Gott!” while Miquel says “What the hell?”), or even which other symbols are currently active: that gun over the mantelpiece might show up in somebody’s hands during a violent ending, or be replaced by a different item in another story. At the same time, the story-specific symbols let us give each story its own unique skeleton, making the results feel much more on-target than a completely generative system might produce.
We’re really proud of the templating system, and will probably write more about it specifically in a future update. But in short, along with the narrative engine it helps us builds stories out of highly specific but still generalizable pieces, letting us add a dramatic beat thematically appropriate to the player’s editorial decisions (say, one where someone begins to doubt their sanity) to the story of Ethan (a lonely radio operator wintering over during World War 2) just as easily as to the story of Miquel (a present-day scientist with a questionable ethical code).
But how can we manage this combinatorial complexity without losing our own sanity? In our next post in this series, we’ll talk about some of the authoring tools we’ve developed to write for this multiply-combinatorial engine. In the meantime, stay warm, keep track of us on Twitter or Facebook, or join our mailing list at ice-bound.com to get major project updates.