My Love Hate Relationship with Twine and Harlowe
While at WiCHacks 2018 this weekend, which entails it’s own post (coming soon), my team, the Anitfreeze Bears, used Twine to create a game. Twine is a FOSS application that generates the code for interactive stories, much like choose your own adventure games. The first Twine was created with python and javascript which generated the html, css, and javascript that make up the game. It was based on the story engine Twee. A story engine refers to the system and format used to note how the story passages link together. Twine 2 was created with mostly javascript and using the Harlowe game engine. Twine has a friendly GUI that allows for people to easily compose a story. It also includes options to export an archive of your stories and has the option to display a proofreading copy of your story that is one html page. Although this alone is enough to make great stories, you can expand the functionality through programming. There are ways to incorporate variables inside of passages to cut down on the number of passages you need to create. You can alter the display by adding your own CSS. Also you can add your own javascript to create an inventory system, like my team did, or other possibilities. Although I appreciate Twine as a powerful tool, there are also drawbacks that come with it.
The first issue I take is with the documentation; don’t get me wrong they have an awesome wiki but the website is not super clear. First off the repositories the intro paragraph point to refer to the repos for Twine 1 and 2 but are unlabeled. Also the last repo they point to is not Twine itself but Harlowe, which is what Twine 2 comes with as default. Harlowe’s documentation starts with the changelog and doesn’t really accurately explain what Harlowe does in an easy to understand manner. The most prominent documentation is changelogs, which are not as useful when you don’t understand what it is in the first place. It would benefit from a more detailed intro or a link to the story format explanation on the wiki.
Regardless of the more picky documentation issues, my team and I found that Harlowe was not the most customizable. It was good for simple things like holding variables and such but not so flexible for adding something like an inventory system or other more complex elements. We probably would have benefited from a more customizable story format but more likely we would have needed to significantly alter Twine be able to add separate game mechanics more easily. It’s still a very powerful piece of software by maintaining all the complex branches and giving a friendly user interface, it just isn’t as customizable when it comes to changing game mechanics.