Skip to content

Story Formats#

Each story format provides a different visual layout, set of macros, and internal JavaScript functionality.

Harlowe#

Harlowe is the default story format in Twine 2. It is designed for ease-of-use and for those using Twine 2 for the first time.

Harlowe Example:

(if: $hasKey)[It looks like the key will open the door.]
(else:)[No way forward!]

SugarCube#

SugarCube continues the traditions of Twine 1 while also expanding the available macros. It has more functionality than Harlowe, but can sometimes require greater knowledge of programming techniques and development patterns for more advanced usage.

SugarCube Example:

<<if $hasKey>>
It looks like the key will open the door.
<<else>>
No way forward!
<</if>>

Snowman#

Snowman is designed to be written with custom JavaScript and CSS. It has no built-in macros, but includes the Underscore.js, Marked, and jQuery JavaScript libraries.

Snowman Example:

<% if (s.hasKey) { %>
It looks like the key will open the door.
<% } else { %>
No way forward!
<% } %>

Chapbook#

Chapbook is a "second-generation" Twine 2 story format that separates its functionality into "inserts", which cause text to appear, and "modifiers", functionality that affect text in some way.

Chapbook Example:

[if hasKey]
It looks like the key will open the door.
[else]
No way forward!