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.
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.
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.
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.
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.