Ink – Markup Language for Branching Narratives

Ink is an open source narrative scripting language developed by Inkle, creators of the IGF award-winning 80 Days. The free Inky compiler can export Ink story files to JSON for integration with Unity, or create a fully functional Javascript-powered web player like the example below:

At its most basic, Ink can be used to write a branching dialogue tree or a non-linear Choose Your Own Adventure story with multiple endings, but its real strength is allowing non-technical writers to create dynamic narratives using only minimal markup syntax. The text remains readable allowing an author to follow the story flow by eye, and edit at any point to add new branching options and alternate text, update variables, and reconnect to the main story.

Inky, a writing app, player, and compiler for .ink story files

There’s no programming loop. Instead an ink runtime follows a single path through the text, typically following a goto link, jumping directly to sections called knots and their order-prioritized sub-sections called stitches – with a name like ink it would be reasonable to expect the metaphors would be about pens and writing but an inkle loom is a device for weaving straps out of one continuous thread wound around pegs (an elegant metaphor that isn’t terribly helpful in understanding ink’s syntax).

an inkle weaving loom

Ink runtime keeps track of which sections of the story have already been visited, automatically removing the options that have already been picked. Multiple choice dialog branches can be nested in place, creating conversational diversions before seamlessly weaving back into the main thread. Authors can write in natural prose, following conventions of visual novels or interactive fiction, and not worry about specialized code or relying on programmers to generate the options.