Writing Interactive Fiction With Twine (Melissa Ford)

WritingInteractiveFictionA curious and fascinating thing about Melissa Ford’s Writing Interactive Fiction with Twine is how it combines hypertext craft advice and Twine syntax tutorials with design expectations largely derived from parser-based interactive fiction.

This is a 400 page book about Twine fiction whose index lists Anna Anthropy once (in a passage discussing how she did geographical description in one of her games) and Porpentine never — though it does refer, without attribution, to the tiny Twine jam Porpentine ran. Steve Meretzky and Brian Moriarty appear, but not Michael Lutz or Tom McHenry or A. DeNiro or Caelyn Sandel or Dietrich Squinkifer, nor Michael Joyce or Shelley Jackson or other luminaries from the literary hypertext tradition either. The book has early and prominent chapters about how to design puzzles, inventory, and a room layout; fonts, text transitions, and CSS effects come quite a bit later, despite being much more common than inventory systems in practice. The section on genres starts with a helpful definition of the word “genre,” then runs through bite-sized descriptions of some common fiction genres — rather than, say, trying to describe the range of genres represented in current Twine fiction. The section on story structure explains terms such as “climax” and “exposition” from scratch, assuming essentially no writing-workshop-style experience from the reader.

This writing style, along with the tendency to draw examples from Narnia and Harry Potter, suggests that the author intends the book to be accessible to younger users as well as adults. It would probably be a bit over the head of most young children, but I could picture a motivated tween handling it just fine. Possibly that accounts for a decision not to explore much of the most innovative content for which Twine has been used. If you’ve read Videogames for Humans, almost none of what you saw there is replicated or even mentioned in this book.

Continue reading

Mark Bernstein on Hypertext Narrative

Literary hypertext has a long history that isn’t always well understood or well acknowledged by interactive fiction authors, even though with the growing popularity of Twine and other hypertext tools, the techniques are more than ever relevant to us.


Recently Eastgate released Storyspace 3, a new version of software used to produce many canonical works of literary hypertext; and, to accompany it, their chief scientist Mark Bernstein wrote a book, Getting Started with Hypertext Narrative, in which he discusses the challenges and the craft of writing in this form.

Whether or not you are interested in using Storyspace or writing literary hypertext, the book is worth reading, not least because it offers terminology and insights from a body of work IF authors seldom study.

In the exchange below, Mark and I discuss various sections of his book, together with other relevant tools in the space. We find some common structures and implementation strategies that cross over from one tradition to the other, and notice that Storyspace 3 might be a viable alternative to StoryNexus for people who want to experiment with quality-based narrative structures but don’t want StoryNexus’ art requirements or styling: what Mark describes as “sculptural hypertext” shares a lot in common with QBN.

All blockquotes are from the text of Getting Started with Hypertext Narrative: I sent these to Mark with my comments, and in some cases he had thoughts in response, so this is actually sort of a three-cornered conversation between the book, the author, and me. Thanks to Mark for supplying the text and taking the time to answer, and also for his patience with how long it took me to bring this together.

Continue reading

Notes on New and experimental IF Tools

Last night the Oxford/London IF Meetup had a session on three tools, and I promised to write up some notes for the benefit of the people who weren’t able to attend.

inkle’s ink, the open-source, Unity-compatible language used by inkle for 80 Days and other projects. If you’re curious about ink and missed the session, there’s always Joe Humfrey’s GDC talk on the subject; but Jon also talked to us about The Intercept, the new free and open source ink/Unity game.

Screen Shot 2016-04-27 at 12.37.02 PM

Jon was a bit apologetic about the fact that there is currently no specialist ink runner, meaning that if you want to create (say) an ink entry to IF Comp, you will need to use Unity to build standalone apps. But to me, this is also partly a selling point, in the sense that ink is designed to build custom, professional-looking apps and doesn’t constrain the author to something a bit bland.

Doing this doesn’t have to mean figuring everything out from scratch. What I hadn’t realized about The Intercept until that conversation — and it’s very useful to know — is that the whole Unity project is open-source, not just the ink script that goes into the game. This means that if you want to build an ink/Unity game of your own but you have very little Unity experience, you could download the whole thing and then copy or gradually adapt The Intercept‘s look and feel. (Also worth saying: a personal Unity license is free if you’re not making significant money from your projects.)

Edited to add: on Twitter, I learned about the existence of Blot, a rough and ready alternative Unity project using ink that has fewer genre-specific features than The Intercept. So you have options, even!

Personally I’ve found working with an existing Unity project to mod it into something of my own to be a great route into learning how Unity works, because it means I don’t have to tackle understanding every type of asset at once. So if you’re in the same boat, that might be a way to get an ink game functioning, and then later you could start to figure out things like changing the fonts and presentation. (If you want to! Because it’s open source, you could just keep the way it looks, too.)

Indeed, you may want to play The Intercept even if you have no interest in using ink yourself: it is a short piece, short enough to play through (if not necessarily win) in 5-10 minutes, and it makes interesting use of the conversational options, as in the above example. Especially early in the game, we’re offered the chance to lie without really knowing ourselves what the truth is; and I found myself hesitating over whether I wanted to take the course that seemed safest or whether I wanted to steer towards the option that might reveal most about the story. Did I trust the protagonist, or not?

Continue reading

Set, check, or gate? A problem in personality stats

As I’ve mentioned here before a few times, I’m working on a project for Choice of Games, and it’s once again brought me up against a challenge I’ve run into a few times before when writing for Fallen London and to some extent with Versu. As mental shorthand, I’ve come to think of this as “the check-or-set problem,” though really it should maybe be the check-set-or-gate problem. It is as follows:

When you’re writing in a choice-based medium backed with stats – so ChoiceScript, StoryNexus, Undum, Ren’Py, possibly a hand-rolled Twine system, or inklewriter if you choose to use variables extensively – you have to decide how to treat choices that relate to personality stats.

When I say personality stats, I do not mean “all stats that might make up the protagonist’s profile.” Choices that have to do with resources – how much money you have left, how many classes you have time to take – are comparatively easy to deal with because there are typically obvious narrative contexts where your resources might go up or down, or where your supply of a resource would come into play. I’m not considering that type of stat here.

No, the challenge comes in when dealing with personality traits where we’re trying to collect that data from the player and then reflect it back. In ChoiceScript, I’m especially talking about opposed stats. For instance, in ChoiceScript one might have the opposed stat of Daring/Practicality, where a score of 20% might represent that you are very daring and a score of 80% might represent that you are very practical. Both ends of the spectrum correspond to actual personality characteristics, rather than just the absence of something. And each end might be desirable in a different situation.

So here is the trick about personality stats. Some of the time you might be asking the player to make choices to establish character, in which case choosing to do something Daring should set the player’s Daring stat higher for future reference.

At other times, you might be using stats to determine whether the protagonist has the personality or skills to pull off the approach the protagonist just chose: are they Daring enough to do this skydiving stunt? In that case, you’re checking previously established stats to decide what result to report to the player.

Finally, you might use the player’s stats to determine whether a given choice is available at all. Perhaps a player with low Daring simply isn’t offered the skydiving option. Now you’re gating the option based on stats. At that point you have to make an additional decision about whether to show the player that the option exists but is just greyed out currently (*selectable_if, in ChoiceScript), or whether you want to conceal that option completely from players without the proper stat profile (regular *if).

Greyed out options advertise that alternate possibilities exist, which is useful for communicating to players when past actions are creating consequences in the present moment. On the other hand, secret options that appear only when you have the right knowledge or stats can be fun to discover on replaying.

If you don’t have a consistent strategy around when to check, set, or gate, you’re likely to confuse the player. I find this especially true in ChoiceScript, where the UI does not offer any warning about the mechanical implications of a choice: you just get “Skydive!” and no automatic information about whether that’s going to make you a more daring person or conversely test your previous daring.

For instance, here there are some narrative cues – this is the first move of the game, so we must be setting, and also the use of the past tense tells us that the player is establishing backstory and character aspects rather than taking a risk in the present moment. But nothing about the UI in this scenario distinguishes between setting and checking:

Screen Shot 2016-02-12 at 11.05.02 PM.png

The first move of The Daring Mermaid Expedition by Andrea Phillips

StoryNexus, by contrast, shows the player if a stat is going to be checked to determine chance of success, and gives information about what the current success odds look like. This level of mechanic-surfacing gives the output a more game-y flavor but also (in my opinion) provides the player with a greater level of control:

Screen Shot 2016-02-12 at 10.57.53 PM

One branch of the Feast of the Exceptional Rose, Fallen London

Undum sort of splits the difference by keeping the stats table permanently on screen in a sidebar, so while you might not know in advance what a link is going to do, you’re likely to be more aware of what is happening link-wise than in a ChoiceScript game in most UI configurations:

Screen Shot 2016-02-12 at 10.59.31 PM.png

The opening of Mere Anarchy by Bruno Dias

inklewriter, meanwhile, doesn’t automatically surface variables at all. And though there are personality stats underlying 80 Days, and though you sometimes get a message saying that yours have changed, you can never see a chart of all of them, and you don’t know when they’re being checked. You do get a number (see the lower lefthand corner) that describes your relationship to your master Fogg, but there’s quite a lot else happening here, to which the player doesn’t have access:


A screen showing limited status information in 80 Days

It largely works, I think, because those personalizing stats aren’t really the most important aspect of the game, and there’s a lot of state – cash flow, location, routes known, etc. – that the player does get to see. So our sense of agency focuses on those.

Below the fold, some thoughts on the different possible strategies for writing personality stats content.

Continue reading

ProcJam Entries, NaNoGenMo, and my Generated Generation Guidebook

ProcJam happened last month, pulling together lots of different awesome things:


Screen Shot 2015-11-26 at 3.47.25 PM

A procedural château generator (or perhaps you’d prefer a procedural Palladian façade generator). A Twitter bot that tweets about odd clothing combos.

Ordovician generates strange sea-creatures that swim across your screen:

Screen Shot 2015-11-26 at 4.37.57 PM

But I was most fascinated by the pieces that do procedural work with words. K Chapelier’s Stochastèmes generates new words based on the poetic corpora (such as thurweedlesoe when I picked Wordsworth, and woulders).


Balade is Windows-only, so I wasn’t able to play it, but the screenshots give a sense of the French cityscapes it generates through words: you can choose streets to travel and receive small descriptions of these places.

Paradise Generator uses random text combinations to suggest a variety of possible paradises: a fairly light level of procedural generation, but using some well-selected components. At least, my first couple of paradises were quite interesting.

Servitude plays a bit more like a traditional game, though it claims there are various randomized elements.

Or there’s Mainframe, a procedurally generated horror game by Liz England and Jurie Horneman. I didn’t manage to win it (maybe I just didn’t persist long enough; I’m not quite sure), but it combines the body horror and malevolent AI themes I associate with a lot of Liz’s stuff. (Maybe unfairly? Yes, maybe unfairly.)


Meanwhile, ProcJam was not the only place for a bit of procedural generation this month. NaNoGenMo was the full-month press to procedurally create 50,000 words – 50,000 words of anything, not necessarily guaranteed to make sense.

Carolyn VanEseltine used Markov techniques and a ChoiceScript grammar to make an interactive generated novel, complete with choices, chapters, and stats.

Nick Montfort created a generated poem about consumerist impulses, one that offers us 126 pages of possible purchases such as “a subtle indigo topcoat that is exclusively available here” or “an understated navy thong that is significantly reduced in price”.

Kevan.org created a work based on Around the World in 80 Days mashed up with information from Wikipedia, which produces many many paragraphs like this:

Moving on, we arrived at London South Bank University. If I remembered correctly, this was founded in 1892 as the Borough Polytechnic Institute. Passepartout asked me if it was chosen to be clerk to the Governing Body, but I did not know. Passepartout examined the training and demonstrating Centre for Efficient and Renewable Energy in Buildings (CEREB). Passepartout explained how it had been designed to include two Thames barges set above a pentagon surrounded by five other pentagons. We moved on, disappointed by stricter student visa requirements in the United Kingdom.

The full repository of other creations can be found at the NaNoGenMo 2015 site, coordinated by Darius Kazemi.


Exploring the resources associated with NaNoGenMo and ProcJam brought me to this forum on generative text, and from there this video by Kenneth Goldsmith on conceptual writing, which gives an above-average explanation of what’s interesting about procedural writing in its own right.


Not really part of either of those things, Caelyn Sandel and Carolyn VanEseltine have a game idea generator that randomly combines concepts they’ve had for their works into new concepts. And of course Juhana Leinonen’s IF Name Generator is a classic, but it has been newly updated with name lists from IF Comp 2015 to remix those titles.


So. I thought about doing NaNoGenMo or ProcJam or somehow sort of doing both. ProcJam is so open-ended with its “make a thing that makes things” concept that almost anything could probably be construed to be a part of that project. And I’ve also got several procedural text game projects that have been knocking around unfinished for ages. What I ultimately wound up doing was sort of related but in fact none of the above.

Parrigues1The Annals of the Parrigues (warning! PDF!) is a (mostly) procedurally generated guidebook to a fictional pseudo-English kingdom, along with a making-of commentary on the process of generation. There are also some portions of the code (though I’m not releasing the whole source at this point, and indeed it wouldn’t really be meaningful to do so, as you’ll see if you look at the thing). It’s not an interactive piece of fiction at all, though it was built with various tools including Inform. Rather, it’s a story I wrote with the machine. If you want to know where to find the biggest library in the kingdom, what type of meal to avoid at the Fenugreek and Sponge, or why people keep trying to assassinate the Duchess of Inglefunt, this one’s for you.






Wunderverse is not a game but an iPad adventure editor that lets you build your own stories. It comes with a few starter adventure chapters already written, though as far as I saw it didn’t look like any of them were finished stories. Of these, I completed the sample set in the paranormal world: a vaguely Sixth-Sense-y story that could have been more strongly written and that still had a couple of typos. But I have the feeling that the actual content is not what the app’s creators most care about; they’re looking at this primarily as a tool.

IMG_0208The good: the app looks pretty slick, and it features the ability to theme your stories and include sound effects and other elements.

Though it has a tap-only interface, the underlying world model feels more like parser IF than the models in most competing systems. You can create nodes and objects, and certain verbs remain available to the player at all times. The system also provides for player character stats and abilities, and for conversation. Nodes function sort of like rooms and sort of like narrative nodes, so you could take this either in a very map-based direction or in the direction of a more CYOA-style narrative. (Personally I feel a little bit itchy about conflating space and narrative state into the same thing, but I accept that it’s sometimes useful to do so.)

Continue reading