Fictionally interactive

Three faces of Twine

This spring, a friend of mine came up with an excellent gamebook made in Twine (now also on At the time I appreciated not just the story itself, but also the way it worked around engine limitations to offer the player a character sheet at appropriate moments. And Kris isn't the only one making RPGs in Twine, as I started to notice more recently. Which is a bit of a problem when using an authoring tool designed to display one passage at a time from a choose-your-own-adventure story, and not much else.

But what if I told you Twine has another face, one that allows you, with minimal effort, to make games with all the usual bells and whistles:

It's called SugarCube, and it's as well-documented as it is powerful. Also heavyweight, which is why Twine 2 ships with the older, less capable branch in the package. For some reason, however, its capabilities aren't well-known, even though plenty of Twine-using authors prefer it to the default Harlowe.

I got to this point largely by accident. Around the time Kris was launching Dragon Fate, I was working on my own concept for a gamebook/roguelike hybrid, where you'd have a linear chain of encounters — randomly shuffled — that you could handle with a mix of choices and skills, magic or equipment. That fizzled out for two reasons: I couldn't figure out how to make it all actually work from a design perspective, and the thought of having to code an engine like that from scratch was daunting. So the whole thing was left to simmer over the summer.

Fast forward to mid-October, when one of my periodic surveys of authoring tools randomly led me to browse the SugarCube documentation more carefully and discover all those goodies. One evening later, I had an enhanced replica of my interface mock-up from six months ago. Another day, and it was a complete game framework ready to receive content. It won't have the random angle anymore (Twine could do it, but it was a dumb idea), and because spells and such must be applicable in any situation they'll be limited to stuff like turning yourself invisible or drinking a potion before making your next choice. No idea how the story itself will unfold yet, apart from the basic premise, but the theme should be strong enough to carry it for some distance.

Anyway, another thing to like about SugarCube is its use of standard HTML5 markup, which makes it easier to figure out how to customize the looks, and also makes it accessible for screen readers, if you care about such things. On the minus side, it lacks Harlowe's built-in facilities for manipulating complex data structures, which are needed for developed world models. And while you can always just use plain Javascript, that kind of misses the point. But your mileage may vary.

Speaking of plain Javascript, there's a third story format in Twine named Snowman, that's sort of an expert mode: all it provides is JS templating and Markdown formatting. If you don't know what that means, it may not be for you; but if all you want to make is a stateless branching story, Snowman is the most lightweight of the three, which is kind of important in this age of bloated web pages.

You can change the format of a story at any time to see which you like best, but beware that everything will break except links between passages, which necessarily always work the same — otherwise Twine itself would break. You can also install third-party formats (you'll have to do it to use SugarCube 2.x), and set a default one for new stories. More of them used to be floating out there; they may still turn up in searches.

Last but not least, in the course of writing this article I discovered that Harlowe does, in fact, support passage headers and footers you can use to add a status line and toolbar like in the screenshot above. Should have looked more closely. It's curious, though, how this feature is virtually unknown to authors working in Twine. A sign, perhaps, that certain kinds of documentation are still lacking.

Hopefully this helps figure out your options a little better.