Dannii Willis on Best Technological Development

Dannii Willis is the maintainer of Parchment and a developer of Kerkerkruip. He hopes to one day produce a work of IF himself, but for now his creativity seems limited to the ones and zeros of technology.

The finalists for Best Technological Development were adv3lite, Twine 1.4 and Versu.


Almost every programming language is a combination of two things: the language itself and a standard library. People often don’t distinguish between them, but standard libraries are often written in the language itself. A few of the most basic functions might be implemented in that most masochistic form, assembly language, but most of them will be written in code just like your own. When you compile your code theirs is added in, gluing your functions together.

Not everyone will like the standard library. Usually this means they’ll choose a different programming language altogether, but occasionally it will prompt them into writing an alternative library. The language syntax and compiler are kept, but the whole feel of the language changes with the new library. There have been a couple of alternative libraries for Inform 6, most notably Platypus, and more recently Felix Pleşoianu shared the process of writing a new minimalistic library for Alan 3.

adv3lite is a new alternative standard library for TADS 3 written by Eric Eve. The TADS 3 standard library adv3 is comprehensive. For some people that’s a good thing, but for others it has required too great an initial investment, the library’s complexity being more hindrance than beneficial. I believe that adv3lite was initially planned to address the problem of complexity by being a lite cut-back version of the original library, with a new parser based on the Mercury parser by Mike Roberts (creator of TADS 3 and adv3), but through its development period it morphed into its own being. It’s simpler and more flexible than the original, but it’s much more than a subset too.

My take on the changes is that they reflect the community’s changing conception of what good (parser) IF looks like. Much of what got removed was for making very detailed physical models of the world: ways to specify where in a room something is and non-binary brightness options for example. Additions include making it much easier to specify noun adjectives and synonyms, tracking more knowledge states in conversations, scenes and regions, and a lot of built in things that would’ve been extensions previously: pathfinding. debugging verbs, irregular English vocab, better action reporting and automatically correcting bad commands. All in all it looks like a really solid library, which is only proved by its strong early uptake.


I was never able to experience Versu myself because it was only available on iOS, so unfortunately I don’t consider myself qualified to review it. But I think it’s a safe bet that someday we might just see again in some new way some of the things Emily learnt through making it…

Twine 1.4

Twine was created by Chris Klimas and is now developed but a large team. Twine 1.4 was released in 2013 and is the first proper release since 2009, which makes it a pretty big deal! (There were some alpha releases in 2012-2013, but I’m not sure how stable or popular they were.)

Twine is a development system for hypertext fiction which compiles to a webpage. It’s designed so that you don’t need to be able to program, but if you want to go beyond simple links to other passages then it has its own mini programming language as well as the full power available to all webpages through embedding Javascript. But Twine gets no credit for that, so lets see what version 1.4 brings to those authors who couldn’t implement it in pure web programming.

In the Twine lingo a “passage” is used to hold the text shown at a particular time. It’s the equivalent of a page in a paperback CYOA book. But Twine passages are used for more than just that, and they show some of the advantages of 1.4. Prior to 1.4 if you wanted to include images in your story you would have to upload them separately. Now uploading files is getting easier every year now, especially with Dropbox, but it could still be a challenge for some potential authors. I’m not opposed to challenges, and anyone who is going to do anything highly polished or truly innovative will come up against innumerable challenges. Twine 1.4 avoids this particular challenge by allowing you to upload an image as an ‘image passage’, keeping to the single-file aim of Twine. You can similarly upload custom fonts into font passages. Twine isn’t dumbed down, but instead removing unnecessary challenges, so that if you can only learn five new things today, they’re going to be five new things worth learning.

What else is new in 1.4? There are numerous syntax improvements, which in general will reduce the amount of code you’ll need to type in. The syntax is more consistent and it’s more straightforward to use and alter variables. It’s possible to give passages tags to control their CSS styles, simplifying what was possible before but is now more regular. And there are a bunch of improvements to do with the player’s progress through the story: you can have it remember values between browser sessions, can control whether or how the player can visit old passages, and can more easily determine within a passage how the player got to that passage. Twine was already one of the most non-programmer friendly development systems, and with this update that can only be more true.

Leave a Reply

Your email address will not be published. Required fields are marked *