Twine in 2019

2019 was a pretty big year for Twine, and I think now is a great time to reflect on everything that’s happened. It’ll be helpful to me to collect my thoughts and talk through how I feel about the past year, but I think it’ll also help others get caught up on what’s been happening in the Twine community and ecosystem.

Twine 2.3.0 and Electron

Twine 2.3.0 entered beta in mid-December 2018, with a full release arriving in April 2019. This version of Twine represented a pretty massive change for the project, particularly the downloadable application version. Previous versions of the downloadable application version of Twine ran on the NW.js software, a browser shell based on Chromium that allowed web applications to run kind of like native apps by using a dedicated, stripped down browser. Applications like this are often called “hybrid applications.” With version 2.3.0, Twine switched to a different browser shell (also based on Chromium) called Electron. Why? Well it’s complicated, but you can read this comment from Chris Klimas for a very brief explanation.

As you may be able to imagine, a change this drastic in the underlying middleware of a fairly complicated app was a big deal and it took a few patches to smooth things over. Posts over on the reddit announcing each version 2.3.x release track the story if you’re interested. The big takeaway is that Twine 2.3.5 is now as stable as Twine has ever been.

Twine also now opens the test and play versions of your story in your default browser, which is a great change in my estimation. Subtle differences between the shells used by the Twine apps in the past and real browsers have always existed. These differences caused widely encountered issues in Twine 2.3.x, but it’s possible they could have caused issues anyway, so I think this change makes a lot of sense. Twine also now saves back-ups in case your main story files are corrupted or deleted. This feature was added due to a specific bug in the 2.3.0 release that was eating stories, but the Twine app has been known to eat stories outside of that bug, so this was another clever and welcome change.

What’s in store for version 2.4.0? Well, nothing too exciting, really. You can look at the plans so far here.

Chooseco vs the World

Chooseco is the company behind those Choose Your Own Adventure books you maybe read as a kid. They own the term and, apparently, its acronym, “CYOA.” Lately, they’ve been letting us know about it. Also letting Netflix know about it. In a way this is fair. Companies are required by US law to proactively defend their trademarks or risk losing them. But the loss of a useful descriptive term has been a bit of a blow to the Twine community. As an alternative, I suggest “choice-based.”

Note that it does not seem that Chooseco is actively suing any developers or anything like that, but instead trying to get people to stop using the terms. If you have a game published somewhere that is described as a “CYOA” or “Choose Your Own Adventure” consider changing that language in any official descriptions or in the game itself.

Trademarking Twine

Speaking of trademarks, the IFTF also officially trademarked the name “Twine” this year. What effect that has on the community, if any, remains to be seen. My guess is that this is not going to impact any of us in any major way, though referring to games as “Twines” or games made in other programs as “Twine games” may become a point of contention in the future.

Goodbye Q&A

In late July, the Twine Q&A was retired from active duty due to an overabundance of spam and a lack of time, manpower, and technology to deal with it. For reference, I was one of the mods. As bad as it looked to an end user, you don’t know the half of it. The Q&A site still exists for users to search through and still appears in searches, so the answers written there are still available, much like the old forum archive before it.

Twine’s official online community is now the Twine category at intfiction.org. The subreddit and Discord communities continue to exist as well.

The Twine Resources Guide

I released a curated list of Twine resources in June this year. While it’s my own guide so it may be a bit inappropriate to plug it here, it is, to my knowledge, the most exhaustive and well-tested list of its kind. You can make suggestions and contributions via its repo if you’re so inclined.

Flash in the Pan

The Twine news section of the official Twine website, meant to be a twice monthly report on the biggest happenings in the Twine universe ended in February 2019 after only five or so months of operation. This was a curious addition to the Twine website in the first place, in my opinion, as the Twine Twitter account seems like a better way to handle this, but I feel like it’s unceremonious end is just as curious. I don’t have much to talk about here, I just didn’t want this short-lived news section to be lost to the ages.

Narrascope

I didn’t go to the first annual Narrascope conference that happened in June, but I’m glad it exists and I’m interested in going to one of them someday, should one happen in my neck of the woods. I do know a lot of people who went and several who spoke at the event and it generated a number of great blog posts. If you’re interested, this year’s conference is going to be held on May 29-31 in Urbana-Champaign, IL, and is accepting proposals from speakers through January 17.

Chris Klimas, creator of Twine, spoke at Narrascope 2019. Here’s his talk in blog post form. I think it’s a fascinating read for anyone with more than a passive interest in Twine.

There’s also a Narrascope podcast now if that’s your thing.

Harlowe 3

Harlowe 3 technically released late last year, two weeks before the year ended with the first beta release of Twine 2.3.0 in mid-December 2018. However, it wasn’t widely used until April this year when Twine 2.3.0 had its full release, so I’ll consider it a 2019 development for our purposes.

I’m not a fan of Harlowe 3. It’s just Harlowe 2, honestly. Changes I feel Harlowe desperately needs, like any kind of mobile support or responsive design, did not happen, and those changes are likely to be breaking for users, meaning there is a high chance we’ll have to wait for Harlowe 4 to see them, if we ever see them at all (I’m not holding my breath).

Other than that, Harlowe 3 now has a few input types like dropdowns and cycling links, but still doesn’t have actual text inputs and still uses ugly prompts (though the situation there has improved somewhat) even though users have been asking for textbox inputs for years now. I should clarify, the new input macros could support a traditional textbox-style input easily, Harlowe 3 just hasn’t added it yet (and again, I’m not holding my breath).

Overall, I was disappointed with the limited changes here, especially for a major version bump. I do think Harlowe has great ideas. I’ve dug pretty deep into its source code in developing HAL, and I can assure you that there’s a stroke of genius every few lines.

But for as much brilliance is on display in some areas of Harlowe’s design, I think it is hamstrung by other design decisions. Decisions that box authors in, lock them out of any extensibility or options, or simply don’t make sense, like the aforementioned indefensible lack of responsiveness. Harlowe literally just needs a single line of HTML code to become responsive, but the so-called beginner format would instead force authors who want to fully support mobiles to manually add the line required.

In my opinion, Harlowe’s design decisions remain as at odds with themselves in version 3 as they were in version 1 and 2. It is a format that wants to be limited and focused and opinionated, but also strives to be as full-featured and wide-ranging as SugarCube. I think it’s spread too thin and I don’t know that it will ever strike that balance.

SugarCube 2

SugarCube 2 is still mostly what you probably expect. It’s still the format that’s hardest to go wrong with. It’s still clunky, but straightforward, syntax-wise. It’s still powerful, simple, and packed with features, options, and extensibility. That’s not to say there haven’t been improvements this year, though.

First, the SimpleAudio API is now fully documented, giving authors the ability to more easily leverage SugarCube’s audio subsystem from JavaScript code. SugarCube has also added a Template API and syntax for text replacements and now features a new State.metadata API that replaces the <<remember>> and <<forget>> macros. Improved documentation rounds out the changes we’ve seen from the format over the year.

So, all-in-all, nothing life changing, but the releases this year, particularly v2.29.0 in June, have been impactful and full of features and improvements.

As a general rule, I still recommend SugarCube 2 for most Twine users and that’s on track to continue throughout 2020. It’s as simple, or nearly so, as Harlowe, almost as extensible as Snowman, and it has the deepest bench of features, options, and functionality. It’s just so hard to go wrong with SugarCube.

Snowman 2

Snowman has impressed me this year. Chris Klimas has moved to developing Chapbook (more on that in a moment) and handed development duties for Snowman off to Twine guru and cookbook editor Dan Cox (AKA Videlais), who has been working on developing a second major version of the format and providing actual documentation for the first version.

Snowman 2 does make a small handful of changes I don’t like, but by and large it’s mostly just added some conveniences, features, and functions that make the format more usable by more people. Snowman was always meant to be minimal, and I think that central design concept needs to be respected. But I think you could argue that Snowman was too minimal in its first incarnation. I think adding a few bells and whistles is a great idea and is likely to make the format more appealing to the advanced users it was meant to attract.

Under this new direction, I think Snowman is gonna be a format to keep your eye on in 2020. That’s not to knock the solid base provided by Chris, but I do feel like Snowman was stagnant at best for the past few years and I’m excited to see where it ends up.

Chapbook

I love the idea of Chapbook even though I have some issues with its implementation and execution. I think that Chapbook could become what I feel like Harlowe should be, and that’s massively exciting to me, because there’s value in a simple, opinionated, somewhat limited story format. I feel that Chapbook fully commits to being different and more focused, whereas Harlowe seems to want to simultaneously compete with SugarCube’s wide-ranging design and provide a slimmer, more focused feature set. Where Harlowe is, in my estimation, at odds with itself, Chapbook strikes a completely different balance that has long been foreign to Twine. Or at least it’s on the way to doing that.

Chapbook has a neat backstage feature that provides the best built-in testing features in any Twine story format, with live updates, styling options, variable editing, and all sorts of other goodies, which is a stroke of genius, especially since you can omit all the backstage code to slim down your game when you go on to release it. Backstage is excellent and has no downsides.

My issues with Chapbook are mostly in the inconvenient way it handles control logic like if statements. Sure it has conditional assignment via the JavaScript ternary operator and a few other conveniences, but this limitation coupled with enforced separation of variable control and story content mean that it can be a challenge to make logic-heavy games compared to the other formats. I am also concerned by the fact that all variables are global unless you namespace them yourself (a sharp edge less experienced coders are likely to get cut on), that saves are automatic and very outside author control, and that Chapbook seems to lack a history system or a rewind/undo feature.

Taken together, I’m more excited to see what Chapbook evolves into throughout 2020 than I am to use it right now. I think the promise of what Chapbook could become is more exciting than what it is right now, but I don’t want to belittle what it is right now either. It is a bold, new direction for Twine story formats that does challenge some of the core concepts we expect, and I think that’s very much worth celebrating.

Paperthin

I think Paperthin should be replaced by Illume or poof (yes, I made poof, so I’m biased, but I hate Paperthin). We should bug Chris on Twitter about this. Otherwise, Paperthin remained bad throughout 2019 (it hasn’t changed since it was made, honestly). It still doesn’t let you print or copy paste passage titles along with passage content, and is basically useless.

Twee Compilers

It’s no secret to anyone who knows me that I prefer working with Twee and command-line compilers to the Twine application any day of the week. And this was a big year for Twee and Twee compilers. First, we finally got an official Twee3 specification so that tools using Twee can now enjoy greater interoperability and developers of such tools actually know what the rules are.

In response to the new Twee3 spec, Tweego 2 (by Thomas Michael Edwards, developer of SugarCube) and Extwee (by Dan Cox/Videlais, developer of Snowman and editor of the Twine Cookbook) were also released this year. While I still prefer Tweego overall, I really like Extwee, and that it’s an NPM package is sure to make it super tempting to some authors. It also has built in transpilation and minification, things I do anyway. I think there’s a chance it tries to do too much stuff at once for some people, but for most users, these are good choices and good inclusions. Tweego on the whole is more mature and has more features, though.

Other Twine specs are also in the works, so the future of third party tools for Twine is looking particularly bright for 2020. As a developer of a few such third party tools, I can’t begin to express how nice it is to have some real specifications.

Final Thoughts

2019 was a pretty big year for Twine, and I think looking back on it helps us see where we may be going, and how we’re going to get there. So let’s speculate a bit.

First, I don’t think we’ll see any big changes in the Twine app next year like we did this year with the jump to Electron. I do think 2.4.0 will arrive sometime next year, but I don’t foresee major or dramatic changes in the way we use the app, in how it feels to use, or in its underlying tech.

I don’t have any specific expectations for the story formats outside the normal updates we tend to see over time. I wouldn’t expect a Harlowe 4. I would expect Chapbook to change a lot over the course of 2020. Don’t hold your breath for a SugarCube 3, though the Trello for SugarCube should help you manage your expectations for what’s coming in SugarCube 2. There’s only so much you can add to a format that’s meant to be minimal, so I also wouldn’t expect Snowman 2 to get more than maybe a handful of additional convenience features. Dan Cox has shown a willingness to rethink parts of Snowman, though, so I’d still keep an eye on it in 2020.

I think we’ll see more custom story formats and other tools for Twine now that there’s actually documentation on Twine’s HTML data chunk, documentation on developing story formats, and a proper spec for Twee. I don’t expect things to suddenly explode, but having these things documented is step one in expanding the base of people who are capable of experimenting with them. I had to read source code to figure out how to make poof. I think now that you don’t have to do that, there’s no reason why other community members won’t start making their own tools.

Finally, I wouldn’t sweat Chooseco’s crack down too much, or Twine’s trademark. Chooseco has to protect their brand–that I, and many others, I’m sure, think of Twine or other computer software when I hear “CYOA” or “Choose Your Own Adventure” is proof of that. Likewise, I think Twine should be more proactive in protecting its own brand. Any old schlub can come along and make a website with the brand name in it, after all*.

I’m interested in hearing from others, too. I may release a follow up to this piece in early 2020 where I cover some of the things I missed in this article, but also some things I haven’t touched on, like game releases. If you have ideas or know something I don’t, leave a comment or drop me a line. I’m also interested in what Twine games you’ve played that were released this year and what you thought of them.

Thanks a lot for reading. Happy holidays and happy new year.

*Note: I actually doubt that TwineLab.net would run afoul of this trademark.