Squiffy 6.0 Beta

Squiffy is a tool for creating multiple-choice interactive fiction. You write your story in a simple text format using sections and passages, and Squiffy compiles it into a playable HTML page. No programming knowledge is required for basic stories, but you can use JavaScript for more advanced logic.

The last release of Squiffy was v5 back in 2015, and I stopped working on it (along with Quest and textadventures.co.uk) in early 2017.

I came back in mid-2024, and now I’m happy to announce the first beta of Squiffy 6.0, which is a big rewrite (no more jQuery, Squiffy is now a monorepo consisting of various TypeScript packages).

There is a brand new site at squiffystory.com, and there’s a what’s new page which has all the details, but here’s a summary…

New web-based editor

The Squiffy editor is at app.squiffystory.com. The old downloadable desktop app is gone, replaced by a Progressive Web App which works offline. Instead of syncing your game with an account on textadventures.co.uk, everything is now saved locally to your device.

Editor features include:

  • Live preview as you type
  • Responsive design that works on mobile and tablets
  • A “go back” button for testing, so you don’t have to keep restarting your story
  • Export as a single self-contained HTML file, or as a ZIP

New template engine

The biggest breaking change is that the old “text processor” syntax ({if}, {else}, etc.) has been replaced by Handlebars. This gives you a much more capable and well-documented template language. Basic stories that only use sections, passages, links, and simple attributes should work without changes.

Handlebars helpers are used for some of the new features, including:

  • Animation effects - Text can appear with typewriter, fade-in, toast, and other animation effects using {{#animate}}
  • Live text - Use {{live "attribute"}} to display text that updates in place when an attribute’s value changes
  • Conditional attribute setting - Use {{set}}, {{inc}}, and {{dec}} inside {{#if}} blocks without needing JavaScript

Upgrading from v5

Basic stories should work without changes. If you used dynamic text features, you’ll need to update to the Handlebars syntax. The what’s new page in the documentation has more details.

Try it out:

This is a beta, so there will be bugs. Please report any issues on GitHub, and feel free to ask questions or share feedback in GitHub Discussions, on Discord, or here!

9 Likes

can you put links inside an #if. I get an error. or maybe my code is bad?

 

In this game, your aim is to Fibble.

Let’s [[Start]].

[[Start]]:
Ho ho. Do you want to,

[[Wibble]]

[[Wobble]]

[[Wibble]]:
It’s time to wibble, [[Start]].

{{#if (seen “Wobble”)}}
Because you’ve already wobbled, why not [[Fibble]].
{{/if}}

[[Wobble]]:
Not forget to wobble. Or maybe you can [[Wibble]].

[[Fibble]]:
Fibble-a-go-go!


`Because you've already wobbled, why not <a class="squiffy-link link-section" data-section="Fibble" role="link" tabindex="0`

You’ve got some curly quotes in there.

{{#if (seen “Wobble”)}}

should be

{{#if (seen "Wobble")}}
1 Like

Damn those fancy quotes! Thank you.

This is great news! The new editor is most welcome, and Squiffy having its own site should help.

1 Like