#twine

I love Twine. I love the sense that, with Twine, anything is possible. About 25 years ago, my folks bought me and my brother our first PC--second-hand and 5 years out of date already, a time-frame for software commensurate with saurians-to-sentience. My mom tried to get us excited about it (as if we needed help with that) by telling us that not only could we play games on it, but we could make them, too!

At about the same time, we got our hands on a pirated VCR of Mortal Kombat: The Journey Begins--the one with the same frames reused over and over, and the mid 90s 3D-animated cut-scenes. It was neither a game, nor good, but it stood in my mind for what kinds of "games" I could make on my PC. Of course, I couldn't. And honestly, there were so many games to be played! (mostly late 80s, early-90s ones, my PC couldn't run anything else)

I realized, also, I was more into language than math, more into writing prose, not code. My mother's words stayed with me with that vague sense of feeling sorry for an adult trying to give her kids something nice without realizing its limitations, especially compared to what my peers had. When I discovered Twine, I felt that her words had been vindicated. I was happy for that as much as I was for getting the opportunity to do something with Twine. Another thing that drove my excitement was that I could write (what amounted to) gamebooks! (To this day, I still have a musty collection of about 500 of them somewhere back home, and I'm not ashamed to admit that they were my introduction both to games and reading.)

It took me a long time to realize another set of limitations--my own. I ADHDed and dysthymied my way through years and years of simply fiddling inside it, afraid to commit. Early on, I also came across various alternative paradigms to "branching narrative".

Side note:
Why branching narrative? It is, as far as I'm aware, the most persistent visualization of interactive narrative in the field.
There is the wonderfully free-floating concept of storylets--so free-floating, indeed, that the term seems not to have settled anywhere outside a limited circle of indie developers, even though blockbusters like Hades essentially use exactly that.
And then there are the micro-reactive dynamic-text extravaganzas of Inkle, for which there isn't even a term, as far as I know, since they are pretty much sui generis, at the scale they do it.
But yeah. Branching narrative.
It may have started as an outgrowth of gamebook/IF diagramming, but it has been continually reinforced by narrative designers discussing conversation trees, as well as long-running in-house tools like Obsidian's or Articy: Draft, famously the authoring playground of Disco Elysium and only growing in popularity since.
On the high-aspirations end, there is the venerable Storyspace, used since the 90s for "spatial hypertexts", the post-post-modern revolution-in-the-making lauded by Robert Coover--which never made it.
On the anything-goes end, there is, of course, Twine.

Flowcharts, despite what Jon Ingold says in his (otherwise wonderful) talk, are not only for office managers. My brain finds them a much more congenial thinking tool.
Ingold does have a point, however, in that the stop-start, chunky nature of writing in nodes simply doesn't mesh well with writing in anything but the more or less classic branching paradigm, form following function and all--not to mention re-drafting or even just double-checking a piece of content for consistency/continuity. And a personal peeve of mine: having to face the equivalent of a blank page with each new passage.

I could have done any number of things to circumvent this:

  1. Install Twee.
  2. Switch over to Inkle's Ink.
  3. Learn in-Twine tricks to somehow approximate the other paradigms.

(1.) and (2.), however, didn't exist--either in open-source form or at all--at the time when I first thought of doing, well, (3.) There were many false starts there as well, and also a lengthy period when I had simply given up. However, for the past 2 years, on and off, I have been trying to place my own little Jack of Spades on top of the house of cards that is Twine (specific formats on top of JS on top of html) so I can have my cake, though the eating part is still in question. What was the thing about giving a man an engine vs. teaching him how to make--or even just extend--one?

My own Twine hack is essentially a pile of widgets on top of Sugarcube, which of all the formats has the best proportion of extensibility to learning curve, and whose widgets were my only way into anything approximating writing code. (Github repos and the way code actually looks still scare me, to be honest.) In that sense, it was indeed the syntactic sugar on the pill.

Firstly, my "thing" doesn't preclude the use either of any other Twine functionality, nor of the Sugarcube standard syntax.

What it does do:

  1. Writing an arbitrarily long story (or a portion thereof) in a single passage, with the option to redirect to another passage and keep doing the same.
  2. Knots, stiches, tunnels (all with the option to name them and call back to them) and weave patterns akin to those in Ink, as well as its dynamic conditional text functionality.
  3. A storylet functionality.
  4. Some widgets to reveal text in stages; or reveal/hide hidden text conditionally through interactions; or activate/deactivate links conditionally.

In hindsight, this post may have been a long wind-up to something that, on the outside, probably doesn't look like much, and may not be much at all, but it's something I wanted to make, and I made it, and it works, and now I have no more excuses to not sit down, and write.