Screen Shot 2017-04-23 at 9.26.07 PM.png

DINE is, as I posted earlier, an unusual interactive fiction system that takes typed input but does not handle it through a parser. Instead, it uses text classification to find a response that is most coherent with the player’s input — a measure that depends heavily on linguistic similarity.

To author content for DINE, the author writes example player inputs (such as “I picked up the photograph”) followed by the response text that the author has in mind. Both the sample input and the actual output are considered when the system chooses a proper response. The system also applies a penalty to any output text the player has already seen.

There’s one final affordance: next to each paragraph of output is a “Huh?” button. Click it to reject the response you were given, and the system will search for the next best fit. It’s not guaranteed to work more with the story than whatever you read last, though.

DINE is not a particularly ideal tool for the kind of experience we associate with parser IF. If you do >INVENTORY twice in a row, you might well get a totally different response the second time — and one that is not especially coherent with the input. Indeed, there’s no way to explicitly author world state, other than as “pages” for the player to land on.

Different DINE pieces handle this in different ways. Olivia Connolly’s “A Quiet Street” offers quite long pages of story between interaction points, and sometimes sets up obvious single tasks for the player to try next, as for instance here, where the game directly tells me what to do:

Screen Shot 2017-04-23 at 10.30.21 PM.png

At its best — for instance, when the circumstances of the narrative made one particular action feel compelling, but didn’t explicitly spell out what that action was — this could achieve a pleasing level of fluidity, as here, where I know that there are strangers approaching the house but that my mother hasn’t seen them yet:

Screen Shot 2017-04-23 at 10.39.00 PM.png

“I told mom that there used to be two people” is the kind of input that I would expect to fail completely in a parser game; in a hypertext story, it would have to be spelled out as a link. So there is something a bit magic about typing this and having it properly understood.

In lots of other places, though, I found that my attempts to steer mostly focused the story on a particular character or issue. For instance, here’s a bit where the story introduces a character called Nikki Foster:

Screen Shot 2017-04-23 at 10.26.07 PM.png

What I’ve typed here is not taken as a command, nor is it consistently treated as in-game dialogue or even really acknowledged as input from a reader. Indeed, the reader/player doesn’t seem to have much of an established presence or role in this exchange, and any sense of agency is rather muted, against the backdrop of a story that continues to unfold. Each page of the story is a short vignette, and usually two to five beats of interaction are enough to exhaust them and move the story on to a new segment. For that reason, A Quiet Street felt as though it did have a fairly rhythmic structure in which I wasn’t getting immediately lost, even if I also wasn’t doing much to control outcomes.

Runner (Obiageli Odimegwu) is similarly chunky in its structure: lots of content to read before each page yields the opportunity to type instructions. The opening scenes, at least, are more focused on setting and physical objects: a bend in the road we need to follow, a lever we must find and pull. But again, there is a challenge of entrainment. When the game is very explicit about what the player can do next, it tends to function properly, at the expense of some sense of discovery or wonder. When it’s not so explicit, the responses become nonsensical or at least a bit distancing, not obviously related to what was typed. For instance, in Runner, the main character is carrying a package to deliver. The story doesn’t allow for opening the package early. Standard parser IF would handle this by creating a refusal message, like


You can’t open it! You need to deliver it undamaged.

But DINE isn’t able to do that, so instead, it matches random other responses to your attempts. “I opened the package” might cause the protagonist to open a hatch, or descend a stairwell.

So a pleasing middle ground between confusing and over-leading is challenging to achieve and seems to rely heavily on the player thinking along the same lines as the author; classic read-the-author’s-mind territory.

Personally, I found myself drawn towards using DINE for something more like interactive poetry, where allusive connections and freedom of player input are positively desirable features. Interactive poetry in Inform (or Hugo or TADS) has tended to look for keywords and associations it could build on; for instance, Jason Dyer’s Renga in Four Parts is essentially an exercise in word association, and an evocative one.

I’m not entirely satisfied with the results of my first brief experiment, because I would have liked to be able to apply additional constraints: for instance, “this output is available only after another output has been printed,” or “the poem should end after two responses, no matter what they were.”

Andrew Gordon will be speaking about the design and use of DINE to the London IF Meetup on May 31.

3 thoughts on “DINE

    • It rejects the response you received and picks the next highest salience response to serve to you instead. It may also be keeping stats on this in the background to use for judging the quality of the machine’s behavior.

  1. Maybe a default reply could always be left ready as input (e.g. “It was finally time to open the package” . This would give a hint about what kind of input is reasonable at any time. We could then just hit enter to step through the fiction, or edit the input when feeling more adventurous.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s