Machine-readable IF formats (for non-traditional IF applications)

I have been looking for a format I can use to represent IF that is audio- and video-based, rather than text-based. I was inspired when I found Twine, but it appears to use HTML as a persistence format, and that’s not really what I had in mind in terms of machine-readability.

Twee looked interesting as a language/file-format, but it looks like Twine doesn’t use it any more, and I’m really hoping to find a format with a decent GUI editor, so the author (who is non-technical) can write the IF without having to know a “programming language”.

I’d also like it to be possible to introduce randomness and other kinds of procedural “navigation” capabilities, perhaps written in JavaScript?

Is there some combination of Twee + that might make this possible? Or is there some other format/toolset that I should look at?


Turberfield Dialogue is a Python library which defines extensions to the reStructuredText markup format.

These extensions allow you to write in a plain-text screenplay style, and to define the point at which sound effects, etc appear.

It assumes you are working in a Python environment, since RST is part of the Python infrastructure. But as a syntax it is entirely portable to other frameworks.

Here is an example of some dialogue with accompanied music.

Twee is still viable, as far as I know, but if you’re going for something with a GUI, you could take a look at the recently announced “Elm Story” tool, which (if I recall correctly) can export to a machine-readable file.


Twee is still available: you’d want to look at (most likely) Tweego or (possibly, if you want a JavaScript/Node.js-based tool that you can extend yourself) Extwee to build your Twee source into HTML files (which can then be played in a web browser or opened in the Twine editor).

Cyrus Firheir’s Twee3 language tools plugin for VSCode has a story graph display (which opens in a browser window rather than right in VSCode, but it gives you the basic features IIRC).

Twine should probably be able to handle whatever randomness and procedural navigation you need (I’m not entirely sure what that means, but it should be do-able).

StJohnLimbo mentioned that Elm Story is just getting serious: but also if you’re open to commercial software I gather some people use articy:draft for this kind of visual planning/storywriting?

Ink was designed to make text games integrated into a game platform (e.g. Unity) with associated sound, graphics, and animation effects. It should be possible to do that and just omit the text output.

Thank you for the mention!

Elm Story is free, entirely visual (limited JavaScript-like expressions are also available) and does support JSON import and export using our open schema. Multimedia support is currently limited to character elements in v0.6.

To note, Elm Story has supported validation and seamless data migrations since v0.1.3.

v0.7 is our multimedia update, with a release scheduled for early January. Our Discord server and open issue tracker are great places to weigh in and take a look at our progress.

Our Storyteller engine supports random and conditions specificity (0.6) event pathing. In 0.7, the Storyteller will also support weighted random for event pathing.



Conditions Specificity


1 Like