Writing for Varytale

As mentioned in a previous post, Varytale is a platform for interactive stories. It’s put together by Ian Millington, the same person who created the Undum tool, but Varytale goes quite a bit further.

Writing Tools

Undum provides a slick front-end and a way to build a few choices and otherwise leaves everything up to the author (hey, you don’t mind learning some javascript to code your story, do you?). It’s been used for a couple of neat IF works, including Deirdra Kiai’s 3rd-place Comp 2011 winner The Play and Andrew Plotkin’s The Matter of the Monster.

By contrast Varytale comes with a complete authoring tool; a website where books are showcased and attractively presented online; the capacity (eventually) to use one of several payment schemes to charge for content; and feedback and statistics tools that allow the author to collect ratings and comments on content, and to see which story choices are especially popular or unpopular. These tools require vastly less coding than traditional interactive fiction, but they do allow for world state and player stats-tracking. (Some time back, I described why CYOA without world state is a bit too restrictive for most of what I want to write.)

The Varytale writing tool lets you use either a raw-text editor with basic markup of nodes, or a smart wizard mode that helps avoid mistakes. In addition to the player-choice branching and rejoining you might expect, Varytale allows branching that depends on statistics within the narrative, or random selection from a set of different outcomes. Thanks to these variations, it’s possible to do pretty complicated things, from inserting a piece of explanatory text that introduces a new character only if you haven’t met him before, to having a game of chance whose win and loss outcomes are randomized.

As you might guess, these structures can get complicated. There is a structure viewer that then helps you visualize what you’ve done. Here, for instance, is the auto-generated chart for the most complex storylet in Bee:

If this structure were broken in some fashion — for instance, if there were a node defined that it was never actually possible to reach, or a “goto” point with nothing to land on — those nodes would be colored a warning red or orange, so the author could see on a quick visual inspection what might be wrong or unfinished about a piece.


Some of Varytale’s features also exist in other forms: Choice of Games, for instance, offers a language, ChoiceScript, for scripting multiple-choice stories, as well as the facility to publish these to mobile readers and for contributing authors to collect something for their work. Twine provides a visual way to construct a CYOA that can be exported as a web-page and played via the web — or archived and emailed, or whatever else you might do with a collection of HTML pages. Inklewriter is a just-announced tool for building branching-and-rejoining stories that requires essentially no coding ability and produces visually attractive output that can be read in a browser.

The key structural distinction in Varytale is the use of storylets. A lot of existing CYOA systems have a series of nodes, and at each node the player can choose to go to one of a small number of chosen points next. ChoiceScript, Inklewriter, and pretty much every CYOA book ever written work this way. Varytale storylets internally work this way as well — they’re structured as shown above, trees with jumps and rejoins. Most of the storylets in Bee are considerably less complex than the one pictured above.

On the bigger scale, though, Varytale works on the Fallen London/Echo Bazaar/quality-based narrative system instead. (I anticipate that Failbetter’s new StoryNexus platform will also do this when it becomes available.)

Each time you go to the contents page of Bee, you get three storylets chosen from the total storylet pool according to a set of rules:

— is this storylet available currently? Many storylets can be locked by having the wrong “qualities”, or stats — which is where the term “quality-based narrative” comes from.

— what is this storylet’s priority and frequency relative to the other storylets available?

So to give a specific example of how that works: in Bee, the current month is a quality. Certain storylets are available only in certain months — Christmas, Easter, seasonal stuff about shoveling snow or mowing the lawn, etc. During the final month of the year, only competition-related storylets are allowed to appear at all, so you always wind up with only that as an option.

Other storylets can happen any time, but only when you’ve fulfilled their story prerequisites; and yet other storylets are almost completely unconstrained and can pop up whenever. If there’s any kind of narrative crisis afoot, those storylets become high-priority and can displace less-important storylets. And there are a few storylets, like the one about Zulu loan words, that can happen with any set of player stats, but have their frequency set low so that they just won’t come up very often.

Storylet Structures

There are lots of different textures you can produce using this combination of elements. The Varytale book Hymn and Shanty offers two interactive songs (one storylet each), with the storylets essentially acting as chapter identifiers, and all the reader choice occurring within the storylets. You never get new storylets out, and storylets don’t affect one another. That’s one extreme. The other extreme would be to have a system made up entirely of very short storylets with minimal internal choice, but the ordering of storylets affecting what happened next and which storylets were subsequently drawn from the pools. This would feel much more like Fallen London. It would also be possible to organize narrative more geographically, with each storylet corresponding to a place to visit within the storyworld. In Fighting, storylets allow the reader to choose which of several trainee boxers to focus on next.

A big appeal of storylets is that they allow me to introduce a reliable, rule-based structure to my story, something that helps the reader understand where it’s all going. CYOA can be extremely shambolic. As a reader, you don’t necessarily know how far you are from the end of a story. Single decisions can cause drastic divergences in the plot-line. The results of choices aren’t always well-signaled. These features mean that the player often feels stripped of agency and a bit at sea. Having story components that do conform to rules — visible stats, storylets that turn up at predictable times, storylets you can revisit with new stats, etc — hands the reader an increased level of control and makes it easier for her to anticipate what it means to make a choice.

When writing Bee, I was drawn to a structure that Failbetter has blogged about in the past as the Carousel. In a Carousel format, the reader moves through a repeating sequence of options, which captures the sense of a repeating cyclical time structure: a day, a year. It seemed like a good fit because part of what I wanted to convey was the same-yet-differentness of the protagonist’s yearly existence, the sense of structure that academic and church-year events provide. Even if the reader doesn’t choose to read the Easter storylet every year, seeing it pop up again provides a marker of how far things have come. And a number of the yearly events shift a bit as the protagonist ages, so for instance there are different ways to participate in jam-making depending on how old she is.

Outstanding Challenges

There are still some challenges about using the Varytale system, though it’s evolved tremendously over the course of beta. One of the biggest authorial challenges is that, while there’s the awesome structure tool shown above for looking at branching structure inside a storylet, it can be considerably more challenging to get a view of what’s going on at the macro level. And I’m not even sure what the tool for this ought to look like. The strength of storylets is that they can affect which other ones pop up in a fairly freeform way, and one can affect another (via their shared stat use) without explicit logic in either.

But that’s also what makes it really hard to graph how they will act. Most of the bugs that arose in Bee were related to this issue of envisioning the total structure of the work and detecting storylets that were going to break that structure. For instance, I had one bug where I mistyped a storylet’s quality effects to advance the month by 2 instead of 1. Now suddenly it was occasionally possible, if the player got the storylet in exactly the wrong part of the narrative, to skip over the year-end competition entirely and wind up in a sort of no-man’s-land, stuck in the thirteenth month of the year where there was nothing to do.

So there are still things to do here, though I don’t have any easy answers about how to build a tool that will do them.

Theological Question

Since someone asked me this on another thread: I don’t see Varytale, or any other choice- or storylet-based tool, replacing tools for parser-based IF. They’re different tools for different jobs, and I really don’t think there’s one true ideal tool for delivering interactive narrative. But I can say that I enjoyed writing with Varytale’s toolset and that it allowed me to do some things that I had been frustrated in trying to do with other CYOA-oriented tools in the past. Possibly other authors will feel that way as well.

20 thoughts on “Writing for Varytale”

  1. Absolutely – aside from the smooth look and feel, I’d agree that the storylet menu / contents screen is probably the major advantage of Varytale over other CYOA platforms out there I’ve seen. I think that this feature is not only important for the functionality it yields but also for the pacing of CYOA-type stories. Whenever I’ve played CYOA on screen before, I’ve found that my play/reading goes on a caffeinated spiral whereby I start reading with great intentions to be attentive but end up maniacally clicking with abandon. The storylet menu mitigates against this and lets the author control the rhythm of the reader’s experience much more closely. In parser-based stories, the puzzle aspect acts as this ‘natural relaxant’ of course.

    If you’re beta-testing this from the writing side, it’s well worth having a play on Fallen London or The Night Circus mini-game (disclaimer: no personal connection with these) as well as of course reading Emily’s book – this will give you a really good feel for the ‘carousel’ effect described here. There isn’t a lot of documentation out there yet on the implementation of more advanced effects but, on the plus side, Ian is generous with advice and tips.

    1. My feeling about pacing in interactive stories — and I realize this may seem exactly counterintuitive — is that the author can partly combat pacing problems by giving the player/reader more control over whether he is going to make progress on the main plot yet or not. Having storylets means you can supply the reader with minor/textural elements alongside significant narrative events, and let him choose when he’s ready to move on. I often feel that even reasonably well-written CYOA doesn’t give the reader enough time to absorb the impact of decisions or get to care about the characters in between major plot points; being able to elect to spend a bit more time with characters before deciding anything about them would be a help.

  2. It wouldn’t solve the year-end problem, but something akin to Petri Nets ought to be useful for looking at story/quality linkages. For a given quality, display above it all the stories that can change it, display below it all the stories that depend on it, and beside it display other qualities that link stories in the two sets (although I’d imagine that the forest of backwards edges could get dense in something as big as Fallen London). Or for a given story, display above it all the qualities it depends on, and above them all the stories that can write them; below it display all the qualities it can write, and below them all the stories that depend on them.

    To deal with the year-end problem I’m afraid you’re going to have to get into much more formal specifications & constraints. :(

  3. Emily, Thanks for this write-up, I’m pleased you enjoyed it and it gave you the flexibility you wanted.

    Tom H, Thanks for the suggestion. Its a good one! One that shouldn’t be too hard to do either. I try to avoid looking for the one-true-solution, so it is probably worth thinking about this idea as an extra tool that’s available whether it solves every problem or not. When will I get chance to code it? That’s a whole other matter!

    1. Apropos of tools, I do also wish there were a way to see the information in the “who picked what next?” charts in a more linked-up way — possibly as a tree of storylet sections with stronger lines for the more-chosen links — but that may be fairly pie-in-the-sky.

    1. What defines the storylet is simply that it’s a unit of story that is governed by these quality-based rules about when to appear in the table of contents.

      Structurally speaking, there’s nothing that imposes a particular length on a storylet: it could be as short as an incident a few sentences long (as in most of Echo Bazaar), or (as is the case in Bee) it could often be a full scene equivalent to several pages of static text, or even a whole chapter/subheading of the book (as is sort of the case with Hymn and Shanty).

      In theory, if you wanted, you could have a scene of traditional narrative made up of multiple storylets, and there is a section of Echo Bazaar that describes a single society party over a series of very short individual storylets. I think that worked fine in that context, but for my purposes it felt more natural to have a given scene of Bee all be contained within a single storylet.

  4. I’m very new to reading and writing computer hosted fiction and feel a bit like Alice! Any suggestions where to start? Read a bit about all the problems and theories but somehow getting the fiction seems tricky. Anyone want to be my white rabbit guide?

    1. There are choice-based stories you can read free online in the following places (typically clicking options to progress):


      There are parser-based stories here (typing instructions to move forward):

      http://ifdb.tads.org/ (some of these have Play Online links)

      And there are visual novels you can download and play (again, clicking to make choices, but this time the story has a significant visual component) here:


      And finally, Fallen London is a big, sprawly, interesting story world of its own:


      There’s a ton more out there to find beyond these resources, but those are starting points.

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 )

Google photo

You are commenting using your Google 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 )

Connecting to %s