I haven’t published much in Twine on IFDB, but I actually use it a great deal: it’s become a prototyping tool of first resort for a wide range of professional projects, the format in which I deliver content to be converted into some other final presentation. A not-trivial amount of pro-level game story prototyping happens in Twine these days.
Which reminds me to mention that Chris Klimas has a Patreon for Twine maintenance and development, and it would be great to see that get some more support. Twine is usefully free to creators who might not be able to afford it, and long may it remain so — but I use it for industry purposes, so I pay for mine. (He’s also reachable via Unmapped Path, and has developed an engine to bring Twine pieces to mobile.)
One of the most characteristic things about writing in Twine is the business of curating the narrative map. Twine generates this map automatically, making a new passage for content every time you create a link that doesn’t refer to an existing passage, and placing that box somewhere near the originating passage. Which is fine, to a point, but very soon several things happen.
- performance drags and Twine takes its own sweet time inserting the box
- Twine’s idea of where to auto-place the box doesn’t correspond to my idea of how the contents should be visually arranged
- I can never zoom out as far as I want to, because even the smallest-box depiction of the Twine map doesn’t show me the whole monstrosity I’m working on
A really large portion of my time working in Twine consists of clicking back to the map view and dragging boxes around to better convey the story structure I have in mind. Pruning. Gardening. Rebalancing. Trying to make clusters of content stick together and make critical moments visible at a glance. Structuring so that I can recognize certain standard mini-structures.
For instance, both of these passages belong to a narrative that is, at the large scale, a standard branch-and-bottleneck, but the lower-level structure is actually very different:
The first diagram describes an “are you really sure you want to commit to this disaster” sequence: if the player heads down the left-hand path, they have several opportunities to opt out and rejoin the main storyline; but past a certain point, they’ve lost the game and are committed to a losing epilogue. And then, if the player survives that and traverses to the lower right portion of the diagram, there’s a big delayed-branching result with many different outcomes customized to what the player’s done so far: a narrative payoff for earlier choices. There’s some clustering to those delayed-branch results, which the diagram also tries to convey.
The second diagram, by contrast, is basically a sorting hat with a couple of different long storylines the player can opt into for that entire portion of the story, but those stories are internally quite linear before they eventually reach their rejoin. These are passages where there’s a bit of exposition to communicate, but the player has chosen which aspect of the story they’re interested in pursuing at the moment, so they get different narrations likely to color their take on the choice that comes next.
I do wish I could color-code: there’s a neat feature in Twine where, if you search for something in the search box, all the relevant passages are highlighted in yellow… but that goes away again as soon as you search for something else, like this:
…but I’d rather like to be able to add a permanent filter to tint every passage with “TBD” in it, or every passage that changes a particular variable.
Clearly other people think about this too — even with the same metaphor — hence the Twine Garden tumblr curated by Porpentine.
To be clear, I don’t say this frequent rearrangement is a waste of time, except in the sense that once you’ve got a sizable work — say 20K words of content spread over hundreds of passages — it starts getting really slow dragging around any significant number of passages at a time. If I decide I need to insert an interlude between two long sections of my game, I generally have to select the second section, move it down half a page, and then go do something else for 30-90 seconds while I wait out the DOS attack I just committed on Twine. It would be nice if that weren’t the case. [Edited to add: this may be a function of the version I’m using; see comments below.]
But some amount of node-gardening feels to me like a natural part of the process, in which I’m checking myself on my structural decisions. (I used to do a different form of this for parser puzzle games too.) You notice immediately if you have way less content on one play path than on another, for instance; in fact, I think the fact that Twine dynamically engages the author in this curation is one of the under-appreciated but most important features of the tool.
Other people do think this is a waste of time. ink doesn’t do automapping of its content, and Jon Ingold once claimed that node mapping was fully pointless. This might seem like we totally disagree, but ink works with very small passages of text, feeding back into each other very frequently — and for several of their works, the large scale structure is actually provided by something else. In the case of 80 Days, that’s the actual literal map of the world.
I know I’m not the only person to wish for a tool that would allow for both macro- and micro-mapping, where it would be possible to view the large-scale segments of the story map from on high, then drill down into the specific structures within a segment. Varytale had branching narratives (mapped) embedded in a larger scale quality-based narrative system (unmapped, perhaps because it’s tricky to meaningfully represent QBN structure; this is something for another post at some point). StorySpace 3 has a concept of clustered content with internal structure as well, though as I’ve not used it, I’m less familiar with how this plays out in practice. ChoiceScript doesn’t do mapping at all, nor does ink; inklewriter has a map that can’t be manipulated and is really best suited for short/small works.
There’s a more perfect solution out there, one that would let you curate both macro- and the micro- branching narrative maps. I’m sure of it. For that matter, it might even be a future version of Twine.