The economy of Twine

Mark Bernstein was recently interviewed by Exprima Media, and a good portion of what he talked about concerned Twine. If you’re not familiar with Mark, he’s the chief scientist at Eastgate Systems, which publishes hypertext works– and more relevant to the discussion at hand, Storyspace, a hypertext authoring tool that was created in the 80s. Among his remarks was this:

Twine has no model for building a literary economy.

Continue reading The economy of Twine

Parsers and prejudice

I originally wrote this post for

Something of a furor has erupted over some brash comments by Jonathan Blow in an interview with PC Gamer:

Adventure games are all confusion. If it’s text, it’s “Why doesn’t the parser understand me still?” So the core gameplay of adventure games is actually fumbling through something, right? And that’s true with modern [versions]. All the episodic stuff that’s coming out. And there’s a whole community that makes modern interactive fiction games and all this stuff. And it’s true for all these games.

He touches a nerve in the modern-day IF community. Bad parsers are what the heyday of interactive fiction is remembered for among mainstream gamers. Homestar Runner parodied this in Thy Dungeonman; lingering in the shadow of the first major East Coast IF meetup in years at PAX East was Action Castle, a live rendition of a text adventure which relished in classically hackneyed phrasings like “You see a thing here,” “Exits are west, east, and in,” and whose moderator gleefully retorted “I don’t know how to do that” or “You see no [whatever] here” whenever a player said a sentence more complicated than what a dog could comprehend. These parodies were affectionate, of course, but illustrative of a problem the IF community has struggled with since players first found themselves standing west of a white house with a small mailbox nearby. It’s not like that anymore.

Continue reading Parsers and prejudice

Secrets and intentionality

I originally wrote this post for

When a PC is powered on but it finds no disk to boot from, it says to you in gray letters: “No bootable device — insert a boot disk and strike any key.” A Mac shows instead an archaic icon of a floppy disk with a blinking question mark. If you turn on a Nintendo Entertainment System without inserting a cartridge first, its power light simply blinks on and off as your television set displays a gray screen. But — there is a subtlety here not often found in computers. If the NES senses a cartridge but cannot read its contents properly, it will sometimes show its initial screen but with corrupted graphics, or with the first note of its song strung out into an endless tone.

This is a harmless occurrence whose traditional remedy is taking out the cartridge and blowing into its contacts, to clear out any dust. It’s a familiar, comfortable ritual to anyone who owned a NES in its heyday, like cleaning your glasses or trimming your fingernails.

When I was a child, I once turned on my father’s Atari 2600 with a cartridge half-inserted by accident. Instead of displaying a message, an icon, or even corrupted graphics, it emitted an unholy, piercingly loud shriek.

I found out later that this process is called frying, and that if you do it skillfully, you can alter gameplay — by causing sprites to act contrary to their programming, or the world of the game itself to warp.

But as a kid, I was scared shitless by the sound.

Continue reading Secrets and intentionality

Why I’m doing this

This was originally written for A postscript — the piece in question was A Kiss by Dan Waber.

To counterbalance the gloominess I’ve been posting about recently:

Last month, I got an email asking for help with Twine. It was running really slowly, the writer said, and it was nearly intolerable, working with the story map. After trading emails back and forth, I asked if I could look at the story file he was trying to work with, and he obliged. (I always feel a little strange asking for these things — at least I feel quite protective of my own work — but people have always been willing to share so far.)

I opened it to find a total spaghetti of nodes and links. All in all: 300-some passages, about a thousand links running between them. This was, to put it lightly, more than I had ever expected my poor little program to deal with. The lines running to the central node were so tightly clumped together, in fact, they formed a kind of moire pattern. This was the worst-case scenario made flesh. It took maybe two seconds to redraw the map — not that long in the grand scheme of things, but when you just trying to scroll around, get a sense of things, you know, actually do work — it was agonizing.

What caught my interest, though, was the content. I did not go poking around in it deeply — again I felt odd doing so — but I did want to see what some of the really critical nodes, the ones that caused the frame rate to plummet as soon as they came onscreen, were doing. So I caught the drift of it.

It was a love poem.

I came up with some quick optimizations to help him out — I had missed some very obvious things. For example, if a passage linked to the same place twice, Twine would actually go to the trouble of drawing the same line twice. This helped a little, but the final solution was to allow users to turn off some of the prettier features of the story map to get better performance.

I have a better solution in the works for the next version of Twine that should solve the problem entirely. (Briefly: it will save offscreen the parts of the story map that never change, so that each redraw of the map only manually draws what has changed — e.g. the passage you are dragging around, or the marquee selection you are making. Again, fairly elementary stuff.) I still hold onto that story file, mainly to test out optimizations, but also to remember what I’m doing helps people do real things, to make poetry even. There aren’t that many developers out there making things that people make poetry with. I feel lucky.

(Quoth jwz: “Your ‘use case’ should be, there’s a 22 year old college student living in the dorms. How will this software get him laid?” Easy question.)

My process

This post was originally written for

One maddening thing about reading a recent interview with Shannon Gilligan, one of the original CYOA authors, was how vague she was about her writing process. (To skip to that part, search for “every writer develops” on the page.) Basically, for her it seemed to amount to keeping a map. But… then what? How did she decide what branches to prune? Did she think about trying to keep characters consistent between branches? Lots of questions. Granted, all this happened more than twenty years ago, and memory often fails. But it’s this kind of inquiry that really piques my curiosity. There are tons of manuals on how to write — some of them are even good. There are almost none on how to write nonlinear text. (If you can think of exceptions or recommendations, please please please leave a comment.)

So to try to remedy it a little, I’m going to try documenting my own process, as I work. It’s a little scary because a) it feels awfully narcissistic — but then this is the Internet b) what if I fail? What if I give up? How embarrassing would that be? But Susan Gibb’s recent foray into writing a complete hypertext story every day… for 100 days… has inspired me to suck it up a bit.

So, let me tell you about this story. For now it is called mountain.tws, because that’s the filename and I haven’t thought of a real title yet and won’t for a long time. Here’s the story map; if you click on it, it’ll show you an exact word count. I have the story map zoomed out to where the text is greeked out because I’m kinda modest about it for now. The orange exclamation-point emblems show where I have unfinished business — e.g. links that don’t go anywhere yet. The box hanging out in the upper-right is a custom CSS style I wrote, because I want to stack my choices vertically on top of each other, whereas normally they get shown side-by-side.

Right now it is really linear — you can see the branches keep folding into each other. I am hoping that it will eventually become deceptively linear, because later on, the story paths will explode, and I feel like I need to give the reader a little grounding at first before throwing them into the deep end. Deceptive is actually a good word for this part of the story — on its face I think it will look like straight-up exposition to the reader, but I’m trying to embed lots of clues in the text for later on.

I am thinking of the piece as kind of a riddle (though not a puzzle). I see four endings right now, none really superior to the other, just different. I imagine that the first time through, the reader will hit an ending without really meaning to, and then see the message: You have found one of four endings so far. Restart? And then hopefully this will inspire them to go back and try to influence the story more consciously. That’s the ideal case for now. Maybe more careful readers will figure it out right away.

Things I’m worried about:

  • My first passage is kind of long. I worry the rhythm of the story and click will be off. But I really like all the text, and again I think it helps root the reader. We shall see.
  • Is Alice, one of the main characters, too nondescript at this point? I have to leave her ambiguous right now for an important structural reason (that I don’t want to talk about yet) but I need to give her some character. Female ciphers are lazy writing.
  • Are my choices well-motivated? I have to cheat a little to keep the storyline braided the way it is, so things are not super-permanent in that a choice doesn’t cause a totally different thread of the story to occur. But I have to keep that as hidden from the reader as I can, to maintain the illusion. I’m tweaking things by having dialogue lines change based on choices, though the main line of narrative stays the same, which is cool — but I have to keep the characters in line without making them seem like they’re bumping up against invisible walls.

Things I’m thinking about:

  • I have a thought about how to render one character’s dialogue that will make it stand out from everyone else’s. I’m going to mock this up in a separate HTML page and then move the JavaScript into my story once I’m happy with it.
  • I have a pair of sentences I’m working towards: “You had been told that everyone has strange dreams the night before they walk the Pass, but you have none at all. You have never been a dreamer.” It’s like a tiny milestone to reach.

The calculus of true love

This post was originally written for

I have to admit I got all a-twitter when I started listening to WRT’s interview with Chris Crawford and I got a little shout-out at the beginning. It’s tiny-tiny but still, it’s kind of cool to be on the same, er, stage.

So it turns out Chris Crawford’s up to his old tricks. He’s “commercializing” his old work with the Erasmatron with a new doodad called Storytronics. Now before I write anything else, I should warn you that Chris thinks that Gimcrack’d is obsolete, and as such I am very inclined to go all Linus vs. Andy on him:

There have been three main approaches to creating interactive storytelling technology: the unsuccessful “Branching Narrative” and “Narrative Game”, and Storytronics…

… Many of the choices offered to the reader lead to an uninteresting story; one that was cut too short, ran too long, repeated itself or made no sense. Second, this method imposed severe restrictions on the player’s freedom of choice. There is no practical way to construct a flow chart large enough to give the reader true control – such a flowchart would require literally billions of nodes, linked together in an astoundingly complex logical structure.

Instead, Branching Narratives usually give one the feeling of choosing “the lesser of two evils” between two options, because one is not allowed to do what one really wants to. Furthermore, many such narratives employ a technique called “foldback”, where two or more options lead to the same practical result.

Basically, Chris postulates that a human being can’t begin to try to create a truly interactive story because there are too many possibilities to consider. I think that’s true. He then proposes that the way to solve this problem is to generate your storylines programmatically — you set up some initial conditions that predispose the characters of the story toward conflict (hopefully), and then let ‘er rip. The reader gets to be a character who can screw around with things and lead the story toward a particular outcome.

I have two criticisms: first, I think he’s got the cart before the horse. Basically, these initial conditions boil down to working with theme. You make a story generator that deals with betrayal by making the characters more or less willing to screw each other over, depending on how much they trust the other person. You make a story generator about love by… well, I don’t know. How would you calculate your attraction to someone else?

But my main point is that theme is something that floats in the background as I write, but it’s never what drives my creative process. I have a vague idea about what a story I’m working on is about, but that changes as I write. I think in my best writing, I may be able to see the end of the story as I work but only just; I’m not sure where I’m going on a conscious level, but there is something working itself out deep down.

Secondly, I think Chris puts a little too much stock in interactivity. — Which may be a weird thing for someone allegedly writing interactive stories to write. But I don’t think people really want a storyworld where anything is possible. For one, we already have real life. But it’s not the range of choices that really makes an interactive story compelling; it’s their significance. And I think that’s where human intelligence and gasp craft comes into play. Deciding what choices to offer the reader, what outcomes to write, is an artistic decision.

Anyway, here are some interesting notes from Laura Mixon, who wrote the only story I know of with Chris’ system: An E-Pilgrim’s ProgressShattertown Sky: A Post-Partum, and I Can’t Believe I Did That.


It’s just a game, man

This post was originally written for

People have invented all kinds of names for this mess we’re in: hypertext, interactive fiction, even something called ergodic literature. But there’s one word that doesn’t come up that often is game. This is probably for the same reason people invented the term graphic novel — comic book sounds a little too kidlike and, well, light-hearted. Games imply a certain superficiality… and for good reason. The overall audience for video games has aged a little bit, to the mid-twenties if not early thirties, but the bottom of the demographic is still somewhere around ten years old. Even so, it’s a pretty narrow range. You don’t really think of Dickens as a males 18-24 kind of writer.

But you can’t really deny that video games provide a ton of examples of how interaction can work structurally. When I think about how I want a story to work, it’s games like Silent Hill 2, where what seem like innocuous choices determine how the plot’s resolved, that give me signposts.

(That’s another reason I think there’s a bias against games in serious analysis… you just sound dumb citing something like Metal Gear Solid 3 in what’s supposed to be a serious paper.)

The thing that video games have been consistently terrible at, though, is provoking an emotional response through interaction. Fanboys typically talk about Aeris biting the dust in Final Fantasy VII as a huge emotional moment… but hey, characters have been dying melodramatically since forever! If you compare stuff like that to even an ordinary short story, it comes out looking pretty poor.

One exception I can think of offhand is Ico, which not only managed to move me but also did almost all of its storytelling without language. Which is great… but kind of hard to draw from as a writer. Photopia and Shade would be up there, too, and fortunately they’re both made entirely out of words.

Ironically, I had an aha moment yesterday about how to structure the story I’m working on… but it had nothing to do with video games. Rather it was this Web activity, which was written by an incredibly smart guy I used to work with, that gave me an idea on how to make things work.

The otherworld of Grand Theft Auto: San Andreas

I originally wrote this post for

The night I unlocked the second city of Grand Theft Auto: San Andreas, I dreamed of being a year younger, going to my sister’s college graduation. But it was in Baltimore City this time, and I wandered onto the streets into an apartment building just because it looked interesting to me.

Inside, there was a man who was a painter, and he had three children to take care of — somehow I knew that none of them were biologically his, though I didn’t know how he had acquired these kids. He was kind of fat in that friendly sort of way, and had a beard, too. He seemed like he had never even thought of being worried about life. His painting was too important. He was teaching his oldest the beginnings of his craft; he gave him a bucket of red paint and let him do what we wanted to his studio walls.

He took me to a room with a mirror and said: “This is what we call the otherworld.” And then the mirror was not a mirror anymore. It was a window.

Continue reading The otherworld of Grand Theft Auto: San Andreas