Teaching Choice-Based Narratives with ink

ProfHacker 2018-08-02

As I noted in a post a few weeks ago, one of the simplest platforms for getting started with interactive narratives, inklewriter, is shutting down. Several people at the conference I was attending recommended trying the scripting language behind inklewriter, ink, as an alternative. I hadn’t worked with ink much before, but I’ve been looking for teaching options that help students translate interactive narrative concepts from web-based projects into potential larger projects. The flexibility of ink makes it a great candidate for this type of teaching.

To get started with ink, download the open source editor, Inky: it’s cross platform, which is great if you have students using both Mac and PC. The Inky editor has a lot of features that make it friendly to new coders, including error highlighting and a “play as you write” mode that helps with testing. The generated output is web-friendly, or it’s possible to export to JSON for use in another context (including Unity).

The provided tutorial on “Writing with ink” is comprehensive but perhaps a bit daunting to get used to — it is similar to the well-structured syntax of Ren’Py, a visual novel engine. I recommend the “Teach Me How to Ink” YouTube series if the wall of text in the tutorial doesn’t suit your learning style.

ink works conceptually on a flow that is redirected based on reader’s choices: a basic story is really a long text file with markup that indicated choices and branches linking knots, or story sections, together based on where the player directs it. For instance, a basic choice appears in the code as a “knot” that leads to other knots, as shown below:

== paragraph_1 === You are in a classroom, facing a group of students. * [Give a lecture] -> paragraph_2 * [Start an activity] -> paragraph_3 * [Run away] -> paragraph_4

=== paragraph_2 === You begin to speak, wishing your remembered your notes....

The syntax is straightforward if relatively unforgiving, making it a good introduction to coding practices and expectations for students without a background in procedural work. More classic logic elements, like conditionals, functions, and variables, can also be added for more advanced projects.

This can also work well for non-narrative text: the clearly marked, numbered choices and structured headings would translate well to a hypertextual essay or argument.

["ink" by Arnolds Auziņš is licensed under CC BY]