Independent PC/Mac/Linux 2018

Fractive is an open-source hypertext authoring tool, primarily intended for the creation of interactive fiction.

Stories are written in Markdown, and (optional) game logic is added with Javascript. The results are kind of like Twine, but the authoring process is very different.

Fractive has three core goals:

  • Keep story text readable, unencumbered by the details of scripted game logic and with minimal additional syntax
  • Don’t require any scripting at all for basic “choose your own adventure” style games, and use complete, standard Javascript for custom/advanced game logic
  • Compile finished stories to portable HTML which can be played on any (reasonable) browser, platform, and device

Check out the GitHub repository


I started this project because I wanted to spin up a small-scope side project and start exploring the web development space, specifically Javascript by way of Node.js, and get some experience running an open-source project with contributors.

Also, I love the stuff people create with Twine, but I’ve always been bothered by how difficult it is to extend Twine games with surprising/unexpected functionality, so I wanted to create something that would produce similar results but using a very different process that’s more amenable to custom extensions.

Fractive’s approach to Javascript integration makes it trivially easy to add custom scripting without muddying up your source text, but also goes further, making it possible to merge whole other frameworks – like Phaser – into your Fractive stories.

The Fractive compiler is written in TypeScript as a CLI-based Node.js app. It takes in a Fractive project, which is a folder containing Markdown and Javascript files, a fractive.json which contains project metadata, and optional additional assets like images, sounds, etc. It spits out an HTML file which embeds all the game source text and Javascript plus the Fractive “core” code, which is a minimal subset of Javascript required to run a Fractive game in the browser. For simple stories, this HTML file is all that needs to be distributed to end users.