Essentially, Twine is an open-source tool for creating hypertext. As you surely are aware, hypertext allows the reader some measure of agency. So the reader can choose, what to read next. Basically, Twine is great for creating and visualizing interactive and branching stories. Because hypertext can branch a lot, it’s easy to get lost in your own story. Also, Twine will help you keep track of your story’s structure. Personally, I find it a very convenient tool to keep an overview of my story and storylines in a game. It is also great for checking if your branching story does make sense because you can play through the whole story within Twine.
If you want, you can make a whole game with Twine. Because you can create variables and logic and make a Choose Your Own Adventure type of game just with Twine. So let us dive into it a little deeper.
For this description, I use Twine 2. The chosen format is the Harlow story format. You can get and use Twine for free on the official website. If you like Twine, consider donating to Chris Klimas, the creator of Twine.
The Twine editor is pretty straightforward and easy to use. Here are just a few hints, which may not be as obvious at first glance.
Once you are in one of your projects, the Home Button can be found on the bottom left. With it, you can get back to your projects list.
Snap to Grid
Right next to the Home Button is your currently opened story. And if you click on it, you will find a drop-down menu with a couple of interesting options. One of them is the Snap to Grid option, which does what it promises: With it active, it snaps your different story parts to the grid. Thus it helps structure your story.
Debug and Play Button
And on the bottom left, you will find beside the new Passage (to create a new story part) the Play Button, as well as the Debug Play Button. Use them to play or test your story.
Parts or Passages are the different pieces of your whole story. So you can link them together to create interactive storytelling.
Inside those parts, you can format the text, that you write. There is a variety of different possibilities to do so. For example:
- // -> makes it italic: // Hello //
- ” -> makes it fat: ” Hello ” (Two single Quotation marks)
- ^^ -> make it superscript
- ~~ -> makes it strikethrough: ~~
Link the different parts
In order to link different parts of your story, just write [[ ]] with the title of the target part. For example: [[Target]]
If you do not want to show the title of the target in your text, you can do so as well. Just write the word or sentence you want to be showing and follow up with ->. For example: [[Go to->link to]]
Variables and logic with Twine Tool for Interactive Storytelling
You can also use variables and logic to enhance your stories. This is especially useful if you want to make a whole interactive story game.
Increment by 1
Let us make an example. So let’s say we start at a: First, we will assign values to our variables:
// a (set: $var to 0) (set: $add to 1)
From a we go to part b. Then in part b we add 1 (the value of $add) to our $var. And every time we get to b we repeat this. Please check the following code:
// b (set: $var to $var + $add)
After b we go to c and show the result. Then we can go back to b, where we will again add 1 and can then go back to c.
Now we can expand the example above, with a little if statement in c. So it will check $var every time we get to c.
// c (if: $var > 5) [Wow, you really like to add $add!]
So, when the value of our $var gets over 5, it will also print the line in the  brackets.
And for more development tools and tips, feel free to check the game development section.