0xDECAFBAD

It's all spinning wheels and self-doubt until the first pot of coffee.

Inform 7 is insanely wonderful and full of words

If you've yet to check out the new Inform 7, "A Design System for Interactive Fiction Based on Natural Language," you really need to do so.

Back when I was a wee lad with access to an assortment of Commodore 64, Apple ][, and Atari 800 computers, text adventures pretty much had me in their thrall. I loved to play them, getting lost for hours in all that Infocom and others had to offer. I also loved to write them - if only for myself, with rooms plotted out on green-lined gridpaper and engines implemented in clumsy BASIC and LOGO.

Since then, I've returned now and then to see what's going on in that world. In the intervening years, the whole field has reinvented itself as "interactive fiction," and hobbyists have reverse engineered a number of classic game engines. They've picked up where defunct companies left off and pursued even further development.

I've not gone back to write any further adventures of my own, though I've peeked in at the authoring tools from time to time. For the most part, things seemed just obscure and weird-edged enough to leave me thinking I might better spend my time learning more about Python or even Lisp. I've played some of these modern games over the years, though, and there's quite a bit of great writing talent at work out there.

But now, this: Inform 7. This is a world-building environment built by and for writers. The truth of this is embedded in every facet of it - from the mind-bogglingly cool natural language in which worlds can be described, to the painstakingly elaborated documentation, to the fully narrated and apologized-for error messages.

In sharp contrast to my past toe-dippings into interactive fiction authoring - and even MOO / MUD citizenship - this system compells me to use it. It makes me want to write stories and describe worlds.

And, most amazing of all: This is Open Source software not commercially developed software. (Update: Turns out it's not totally Open Source, but it's beer-free at least.)

Of course, I've found great annoyance in the past with languages like AppleScript and Lingo - both of which attempt to follow some sort of natural language patterns, yet only result mockeries of all language. I haven't dug deep enough into Inform 7 to tell if I'll reach this same point of frustration. So far, though, it seems promising from the little I've thrown together in a morning's coffee and in the examples I've browsed at lunch.

Maybe one of these stories in my head will find it's way out this way.

Archived Comments

  • One interesting side-effect of it being based on English is that it presumably makes it harder to use for someone who is attempting to write a story in another language. That doesn't really bother me, as a native English speaker, but that doesn't stop me wondering exactly what it would take to adapt Inform to mimick another language.

  • Martin - apropos of that, I just read this bit in the documentation a little while ago:

    2.12. Accented letters

    Inform 7 is infused by the English language and for the present it would be difficult to write a work of IF in any other language with it. (Inform 6 remains a practical tool for non-English IF, though, having been translated into French, Italian, Spanish, German, and a number of other languages.)

  • Inform 7 looks very cool -- I plan to try it out -- although I wonder if the verbose language won't get in the way for experienced users. For example, can you imagine what writing a shell script in English would look like?

    It is a pity that the source for the command line tools is not available; an Emacs version of the console would be really appealing.

  • Oh wow, that looks delicious.

    The screenshots of the Transcript make me want something like that for unit testing code in more ordinary programming languages.

  • Tim: Yeah, I've been kind of wondering about that too. I've not ever really played for more than two minutes with Inform 6 and below, but I wonder if there are some particularly tricky things that Inform 7 won't make easy? On the other hand, from everything I've read, Inform 7 is a frontend to Inform 6 almost as C++ is a frontend to C. I wonder if you can drop down a level, if need be?

  • Oh, but speaking of ability to complex things in Inform 7, one of the examples at which I've peeked is "Damnatio Memoriae":

    http://inform-fiction.org/I7Downloads/Examples/dm/

    There's a surprisingly complex magic system of linked associations at play there. And that's a pretty short example game.

  • And, to answer my own question, a quote from a Brass Lantern article:

    If I7 is built on top of I6, can you get access to I6 within I7 code? Yes. You drop down into I6 by surrounding your I6 code with "(-" and "-)".

    To end the game in death: (- deadflag=1; -).

    You can use small snippets of I6 code, as above, or include entire routines. This can be useful for programming tasks that are much more easily handled in a procedural language such as I6.

    The drawback to doing so is a loss of readability: much as when you embed assembly directives in C, you now need to understand two very different languages. You can encapsulate I6 code and give it a natural-language form; in fact, parts of the I7 standard library do just that.

  • Strictly speaking, this isn't (all) Open Source software: While the source code to the GUI is under the GPL, the source code to the compiler will be available only under a "look but don't touch" license (same as Inform 6). I respect their decision not to GPL the compiler, but I'm slightly less excited than I would be if it were really open.

  • Matt Brubeck said:

    I respect their decision not to GPL the compiler, but I'm slightly less excited than I would be if it were really open.

    I have to agree with Matt on this. I'm a programmer. And I don't mean a mouse-oriented, Eclipse IDE-loving programmer. I mean a vi, makefile, command-shell programmer.

    So, if I can't use my text editor and can't build binaries from source with the command line (as you would with make), then I can't use it. It's just not programming in the sense that I've come to enjoy for the past 25 years.

    All that aside, after reading the new manual, I think this language is fantastic. Wow. I very much want to try it. I hope at some point non-IDE programmers can have access to the tools to compile this new language.

    I'm really blown away by what these guys, Mr. Nelson, Emily Short and everyone else, have done here. Wow again.