I’ve already written one interactive fiction system, Quest - so why create another? It was while writing my first game Moquette last year that I realised I needed a simpler tool for the kind of interactive story that I was interested in writing. I wanted something that would let me sit down and “just write”, mostly getting out of my way.
So I’ve now created the tool that I wished I had back then. This version 1.0 release is intentionally very simple - it’s a command-line Python script that reads in a text file, and writes the output to the same folder. Here’s how to install Squiffy.
Game text is written using Markdown. Players click links to interact with the game. Unlike other systems, Squiffy’s equivalent of “nodes” or “pages” are split into two types:
An example might help to explain the distinction between the two.
You enter the room. There's a [chair] and a [table] here. You can go to the [[kitchen]]. [chair]: Just a chair. [table]: An ordinary table. [[kitchen]]: You enter the kitchen...
Here, “kitchen” is a new section, whereas “chair” and “table” are links in the same section. You can click the chair, and the chair’s description appears, but the table and kitchen links remain enabled. If you click the kitchen link, the table link is now disabled, as you’ve moved to the next section.
If this sounds confusing, don’t worry - you can build you game entirely out of sections, and it will play as a traditional multiple choice game. But by including passages, you could create works that have a bit more of an exploratory feel. If Moquette were written now using Squiffy, I could use sections for each train, and passages for interacting with people in the same train carriage, for example.
A player’s progress is saved automatically to the browser’s local storage. They can close their browser tab, and the game will be restored immediately when they come back.
Instead of “big bang” releases, the plan is to improve Squiffy one feature at a time. We will build up to a web-based editor over a series of what will hopefully be relatively frequent releases. For the plan, see the Development Roadmap.
For full details on using Squiffy, see the documentation.