User Tools

Site Tools


This is an old revision of the document!

Twine 2 wishlist

This is a private page for Leon to brainstorm the features he wants in Twine 2, then frown discontentedly at them.


  • Syntax highlighting that is equivalent to Twine 1.
  • The passage editor's “Silent Area” - a section separate from the main text of a passage, where macros can be run with impugnity. Works very well with the “separation of text and control” that hooks afford - the notion of setting up hooks, then defining functionality to them.
  • Imported Images

Game Engine (Harlowe)

  • Some way of specifying stretchtext on a *per-link* basis. If a passage is a “stretch”, it appears below the last, instead of replacing and removing it. (This will be a Link Changer)
  • Imported Images

Macro Syntax

  • ~~Block syntax for macros - using multiple macros in a row without opening and closing symbols separating them.
  • Named parameters for macro parameters?
  • 's syntax - 's as a substitution for Javascript's dot syntax. “Person's name” instead of “”. Math's random?
  • A sigil for passages - a way of passing passages around as easily as variables - «print»ing them akin to «display», eliminating the need for separate macros.
  • Auto-currying: (takesTwoArgs: “one”) becomes a macro. (But how many multi-var macros are there?)
  • JS regex syntax?


  • colour complement macro: (complement: red + white)
  • Textfile HTTP macros - import a text file as easily as an image.
  • Something equivalent to «cyclinglink» - a set of versions of hooks.
    • But what of the variable-setting?
  • HTML5 Audio Macros: the ability to play MP3s.
  • <<render>> : “Style with Twine syntax instead of CSS”. Use familiar Twine syntax to select types of elements, or hooks, or pseudo-hooks, then write the properties to use. Separate the selectors from properties. Define styles per-passage, or for the whole story, based solely on which passage they're in.
    • CSS syntax can remain, of course, but as a 'fallback', much like complex JS is to basic macros currently.
    • “Extend Twine syntax”: define new basic styling syntax using «render». Convert Twine's standard syntax to a “standard library” rather than an engine built-in?? (Will require yet more Marked.js refactoring…)

"Passage the Ultimate"

  • Passage the Ultimate is the lackadaisical philosophy that passages should be used for any complex data structure, simply because A) the passage data structure already exists and is familiar to Twiners, and B) an alternative necessitates needless complexity or needless intrusion of Javascript.
  • Passage the Ultimate Template: this already exists in Twine 1 in the form of the “widget pattern” popularised by SugarCube, and canonised by Twine 1.4's shorthand <<display>> and parameter() function. Whether or not people are using it, though…
  • Passage the Ultimate Array: An immutable array of strings in the form of a passage. Obviously impractical for one-use datasets, but for multi-use data…
  • Passage the Ultimate Documentation: See annotations in Twine 1.
  • Passage the Ultimate Stylesheet: a passage full of «render» macros that get used for the whole story. Not a CSS alternative, but an accessible alternative.
  • Passage the Ultimate Abstract Asset: Twine 1 already regards images, stylesheets and scripts as passages.


  • «what's ?red»: Some way of identifying what a thing has (for a hook, its cycle).
twine_2_wishlist.1413552601.txt.gz · Last modified: 2017/10/09 20:38 (external edit)