The free open source tool Twine is designed for creating nonlinear stories. That makes it perfect for creating branching scenarios. I use Twine for planning the structure, drafting the content, and building a functional prototype.
Updated for Twine 2.5.1 and Harlowe 3.3.3
I originally wrote this post in 2020, using an older version of Twine. Twine (the software) and Harlowe (the default story format) both received significant updates in August 2022. Therefore, this post needs a significant update, including nearly all new screenshots. If you’re curious about the older Twine interface, check the archived version of this post.
Check the Twine reference for additional information.
Getting started with Twine
Note for Windows users: You may see a warning about Twine being an “unrecognized app.” If you see this message, select More info, then select Run anyway to run the installer.
Note for Mac users: You may see a warning that the Twine app wasn’t opened because it’s from an unknown source. Select Open anyway to launch it. If you’re still having trouble, try changing your OS settings to allow unsigned apps.
Create a new story
In the Story menu, click the +New button to create a new story.
Give your story a name, then click Create.
Your story will automatically open. You’ll see a single Untitled Passage in the center to start.
Double click the Untitled Passage to open it.
Click Rename to change the title from “Untitled Passage” to “Intro” or whatever you want.
Enter the introduction to the scenario in the body text section.
Add and link passages to create the branching structure
The power of Twine for branching scenarios is in the simplicity of creating additional passages with links between them. Unlike many other tools, Twine is built for nonlinear structures.
To create a link to a new passage, just type double brackets around the text of the link. In the screenshot below, [[Let’s get started]] is the new link.
When you close the first passage, you’ll see a new passage with an arrow linking it to the first passage. The new passage is transparent and has a dotted outline because it’s currently empty.
Repeat this process to add a question with multiple options.
Adding multiple links creates multiple new passages.
You can continue repeating this process for your entire scenario. You can create the structure first; just add titles and links (plus maybe some brief notes about the content). I usually write the ideal path first, the one showing all of the best possible choices. I write that from start to finish, leaving placeholders for other options. Then, after drafting the ideal path, I go back to fill in the rest of the branches.
Build and test a functional prototype
In addition to the ease of creating links and new passages, the other huge time saver with Twine is that those links are functional. You can preview and test your branching scenario.
Play mode is perfect to just click through your entire scenario. Test mode is better if you are troubleshooting specific issues. Play mode is usually fine for basic branching scenarios and when you’re just getting started.
To walk through your entire prototype so far, click Build, then Play.
In Play mode, you will see a passage with text links, like this. By default, Twine uses a dark background and light text. (You can change that formatting later, but it’s good enough for the first prototype.)
In the Build menu, click Test if you want to use debug mode to view where links go (very useful if the link text is different from the passage name) or are troubleshooting variables, macros, or other advanced features. Test mode will initially look the same as Play, but with additional information on variables and errors in the lower right. In test mode, you can turn on Debug view via a button in the lower right.
Publish and share for review
In my experience, most SMEs have a hard time envisioning how branching scenarios will work unless they have used them before. They just can’t understand a storyboard in Word or PowerPoint, or they get lost trying to jump back and forth following “jump to slide 15” notes. Twine makes review simpler because SMEs can click through and see how everything fits together.
Publish your scenario
To publish your story, click Build, then click Publish to File.
Host your story
You can host this html file on a server if you have your own website, or you can use a hosting service Amazon S3 or Google Cloud. Many Twine developers use itch.io for hosting Twine games because it’s free and has options to restrict access.
Once it’s hosted on a server, your SMEs and reviewers can play through every path.
You can also share the html file in a shared drive like Google Drive, Dropbox, or Sharepoint. However, the story won’t be playable if it’s shared this way; users will have to download the html file and open it locally.
Proofing formats for review
In the Build menu, another option is to Proof the story. This gives you a proofing copy, usually a copy of the text for the entire scenario. I often copy this to Word and provide this to SMEs in addition to the prototype if they want to make significant text changes. I find it’s easier to track text changes in Word, especially if there are significant text changes.
Twine has some other options for proofing based on proofing formats. These formats have to be installed. One proofing format I use is poof, which provides options to export plain text and PDF versions of your story. Another proofing option is Illume, which has more advanced features for reviewing and tracking changes.
You can see a functional Twine prototype that I built for another scenario. This is just plain text, but all the links work. The scenario is fully functional.
Although I often use it for plain text prototypes (building the final version in another tool like Storyline), you can use Twine as your final product. You can use CSS to format the story or use formatting options in the Harlowe story format. Twine also has macros for coding, so you can do things like tracking a score and providing conditional feedback messages.
Have you tried Twine?
If you have tried Twine yourself, I’d love to hear if it helped you write branching scenarios more efficiently or if you’ve created a cool project.
Originally published 1/21/20. Minor updates 6/16/21 Significant updates 10/28/22.