Dialogues… dialogues everywhere!
Every respectable role-playing game has a story that gets progressed whether through player action or dialogue. Some offer multiple choices, others a linear conversation, but regardless of their presentation, a Unity asset seems to be the most popular in terms of Dialogue management – the aptly named “Dialogue System for Unity“.
Yet, we found its conversation editing UI cumbersome.

We wanted a tool that makes editing and visualisation easy to learn and use. So the hunt started for the tools that this dialogue system supports. The list is relatively long: articy:draft 1/2/3, Arcweave, Celtx, Chat Mapper, Twine, Yarn Spinner, Ink, Neverwinter Nights, JSON, CSV, and other formats.
A few options
Articy:draft and Arcweave gave us the feeling that they could do more in terms of project management, but as a small team, we felt the overhead didn’t justify the costs.
Celtx felt way too general, and the lack of a clear free trial/tier disqualified it outright.
ChatMapper seemed like the first real contender and probably best mirrors the Dialogue System asset features. However, there was still room for improvement in ease of use.
Yarn Spinner felt like it relies too much on code writing and doesn’t have a visualisation. The VS plugin has one, but we were looking for a standalone tool.
NWN – let’s just not get there…
Twine
Enter Twine! An absolutely free-to-use tool that makes writing dialogue seem like child’s play – that should be their tagline. Comes with a desktop and a web browser editor.

It has a clean, easy-to-use interface, easy-to-learn markup, syntax highlighting, tagging options for both stories and passages, and good enough scripting support.
Within the Twine Library, we can import stories, create new ones, tag existing stories, filter them by tags, and sort them by edit date or name.
By default, stories are saved in Documents\Twine\Stories, and we haven’t found a way to change that location. At the moment, it is not a huge issue.

Other dialogue editors might require users to create a list of actors participating in the conversation, and each node is assigned an actor.
Twine is quite lenient with the structure of the conversation. All we need to do to mark the conversant is start the passage with a name followed by a colon and a space. For example, we chose to use “Story: ” for marking narrator passages.
The conversation screen has a nice, clean visualization component and a good passage rich text & markup editor.
But the bit that we like the most is that the node links are text-driven, and the choices are not nodes like in other editors; that’s probably the most distinct difference between Twine and the other editors. Sometimes less is more, and Twine’s visual design successfully adheres to that philosophy.
Just compare the graph in the previous image to the following picture of the Unity asset conversation editor:

Having the dialogue choices as individual nodes makes the visualisation graph much heavier than it needs to be. Ultimately, most, if not all, of the alternatives have the same issue of overcomplicating that graph.
In the next article, we’ll detail what it takes to import the Twine stories into Unity.