Non-linear publication tools

There’s a long tradition of non-linear narratives in traditional fiction, dating back to the Mahabharata from the 5thcentury BC 1 all the way to Joyce’s Ulysses, published in 1922. The narrative device of non-linearity is not exactly what we’re after though, as we’re looking into non-linear publishing methods that are also somehow interactive and go beyond text by including images, audio and video. The realm of hypertext fiction and the notion of hypermedia align with our research subject more closely.

This document by no means represents an exhaustive list of tools and references, but focusses on a few noteworthy examples.

A bit of history

The interface of HyperCard

Nowadays, hypertext is commonly associated with the World Wide Web, as webpages are written in Hypertext Markup Language (HTML), coined by Tim Berners-Lee and others in 1991. 2 The concept of hypertext is actually older and broader in scope 3 and not confined to the web at all, though it’s arguably the most popular implementation. The long-running Project Xanadu by Ted Nelson is another theoretical application from the 1960s 4 which was finally released in 2014 as OpenXanadu. 5

One of the more successful hypermedia authoring tools was HyperCard 6 released by Apple in 1987. The application offered a drag-and-drop interface allowing users to create interlinked, scriptable cards which could contain text, images and other media. After its initial release, HyperCard was used for all kinds of purposes including prototyping, games and interactive fiction. The original version of well-known adventure game Myst was created in HyperCard, 7 and is a good example of interactive, non-linear media. 8

The interface of Storyspace

Around the same time HyperCard was released, another piece of software called Storyspace was published by Eastgate Systems and is still developed today for Windows and macOS.9 Storyspace offers tools specifically aimed at creating hypertext fiction, instead of the all-purpose approach that HyperCard had. The software was used to create early hypertext novels, predating serialised publication on the web, like afternoon, a story, a branching story by Michael Joyce.

Due to the increasing availability, most works from the 1990s and onwards were published on the World Wide Web, as HTML pages or in other formats like Flash.

Composing a story in Twine

Twine, created in 2009, 10 is geared towards publishing interactive fiction on the web. Although Twine outputs HTML, the developers claim that no specific technical knowledge is necessary. The interface of the application visualises the story branches as connected blocks, a paradigm that’s used in Storyspace as well. It’s possible to include images and even customise your entire Twine story, by scripting and applying stylesheets, but more advanced technical knowledge is needed for this. 11


Player choices influence Planescape: Torment’s narrative

There’s no denying that interactive fiction is popular in the western world, but mostly when it crosses the line and transforms into a game. There’s a long tradition of epic roleplaying games offering multiple, branching story paths to the player. The Elder Scrolls series is a notable example, as is The Witcher trilogy of games or the output of Black Isle Games (Planescape: Torment, Fallout) in the second half of the 1990s.

The history of branching, non-linear digital narratives goes even further back, starting with the text adventures in the late 1970s, titles include classics like Zork and Colossal Cave Adventure. While Colossal Cave Adventure was written by one man, Will Crowther, text adventures were often designed and written by larger teams. Writing interactive or branching fiction is an undertaking not to be underestimated, as the narrative structure rapidly evolves into something very complex.

Tale 12 and Tads 13 are two frameworks allowing you to create text adventures in the vein of Zork or Planetfall. Tale also specifically supports MUDs (Multi-User Dungeons), allowing multiple players to interact in the same narrative universe. While Tads is mainly used for the creation of text adventures on various operating systems, 14 it also supports the inclusion of images, audio and video

Quest 15 and ADRIFT 16 are GUI applications, as opposed to frameworks, but produce similar results like the frameworks mentioned above. A notable feature of Quest is that it can be used online, while ADRIFT offers a visual story overview similar to Storyspace and Twine.

Rags, 17 a commercial package is a little different, as it supports the same textual interface, but combines this with images and a visual interface roughly comparable to the verb-object interface present in the SCUMM adventure game engine used by LucasArts and others in the eighties and nineties. 18


Interface of Symphonic Rain by Kogado Studio

The visual novel (bijuaru noberu) is a type of publication that’s very popular in Japan and covers a wide range of literary genres, from romance to science-fiction to erotica. It’s a brand of interactive fiction employing a literary narrative style combined with imagery, sound and sometimes animation. Notable examples include the Ace Attorney and Zero Escape series, or standalone titles like Symphonic Rain.
A lot of visual novels require user interaction and have branching narratives dependent on those choices. Publications offering no narrative or gameplay choices are often referred to as kinetic novels. 19  Some titles incorporate game elements, like puzzle solving, or character statistics (tracking the protagonist’s morality or the disposition of other characters towards the protagonist), blurring the line between novel and game. Traditionally, the visual novel uses the art style closely associated to manga, so expect a lot of wide-eyed, sharply drawn characters.

Due to popularity of manga and anime in the western world, the visual novel has found its way here as well, though the market is relatively small compared to Japan. A couple of frameworks have sprung up over the years to assist with creating visual novels as there is a large interest in developing self-published titles, often referred to as dōjinor doujin.

Highway Blossoms by Alienworks, programmed in Ren’Py

Several frameworks exist for creating visual novels. Digital Novel Markup Language was one of the earliest entries, its language reminiscent of HTML. 20 NScripter 21 and KiriKiri, 22 were both conceived by Japanese programmers and used for self-published and commercial titles.

Ren’Py23, written in Python (relying on pygame),was created by American programmer Tom Rothamel, who is still the primary maintainer.24 The framework is very much rooted in the tradition of the Japanese visual novel and supports most of the staples also present in KiriKiri and NScripter.25 Due to its open source nature, Python underpinnings and English documentation, Ren’Py has proven to be a popular choice for creating interactive fiction, especially in the western world. 26

Monogatari 27 borrows a lot of concepts from Ren’Py, but allows authors to publish their stories on the web. The resulting story bundle is a set of HTML files and associated assets (scripts, stylesheets, images, audio, video). 28

Both frameworks are aimed at authors who’re comfortable with writing code, there’s no visualisation of story branches, for example. Commercial offerings, like TyranoBuilder 29 and Visual Novel Maker 30, try to differentiate from Ren’Py and Monogatari in this regard by offering visual aids and optionally hiding the code from the end user.

Where to go from here?

Depending on your level of skill, there are a lot of options. Using a GUI application with visual aids, such as StoryspaceTwine or Visual Novel Maker, seems like the best route for authors. Developers might want to delve into a framework like TaleTads or Ren’Py, possibly extending those frameworks with their own modules. Even with all the help and guidance an application or framework can provide, creating branching or choice-based narratives is a complex undertaking.


3 Apart from interlinking, there’s also the concept of StretchText, not implemented in HTML