Inform is one of those tools, like Game Maker and Unity, which unlocks new creativity. It’s a programming system for creating text adventures in which you can write your stories using something resembling natural language. It’s more complicated than Twine, but also consequently more powerful. It is, basically, good enough that it makes you want to write interactive fiction, even if you’ve never considered that before.
It’s exciting then that a new version has been released, “three years in the making”, which expands the languages handling of procedural storytelling.
Inform is powerful in ways which sound small, but are actually magical. If you write “Bathroom is a room.” in your code, then Inform understands that the Bathroom is a location you can leave and enter. If you write “Hallway is east of Bathroom,” then Inform understands that Hallway is a new location and its relative position with the bathroom. If you write “The helmet is a wearable thing,” then Inform understands that the player can pick that thing up and wear it. It’s basically taking English and turning that into a simulation the player can reside within. Here’s a representative example of what the code looks like.
From update post, here’s the key set of changes in this new version:
It has the following main objectives: to clarify and better enforce the syntax of the language (which is now formally documented); to have much greater linguistic flexibility, enabling stories to be written in any person and tense, and paving the way for translation to non-English languages; to remove phrases and features which have been deprecated for some years; to remove procedural rules, which were little used or understood and incurred a significant speed cost at run-time, in favour of simpler ways to substitute rule behaviour; to remove assumptions about the kind of narrative being written (i.e., that Inform is always making a “game” which is “won” or “lost” and has a “score”); to reform the rules handling “blocked” actions, such as listening; to redesign the Index, the in-application documentation, and the extensions index; to reform the handling of text, unifying “text” and “indexed text”, and improving their performance; to introduce a simple but powerful system of “responses” allowing authors to change stock replies in the Standard Rules and other extensions, including third-party ones (and also to make it easy to translate these to non-English languages); and to implement full floating-point arithmetic in numerical kinds of value, at least on the Glulx virtual machine.
I like that it has ‘floating point arithmetic in the Glulx virtual machine’, because those are all fun words to say, but the really interesting bit is the changes to procedural rules. I’ll let Emily Short, one of the systems’ main architects, explain via her own blogpost:
There are loads of new things going on, but I’m particularly excited by Inform’s new adaptive text, which I see as a partial step towards making the system more capable of doing interesting things with procedurally generated text output. The adaptive text allows Inform to inflect verbs according to the current tense and viewpoint of the story, automatically turning “[We] [walk]” into “You walk” or “He walked” or “We will walk” according to the current settings.
But it goes considerably beyond this. The new example “Narrative Register” shows how to associate verbs with different actions, then have the narrator automatically describe what has just happened with a verb that is appropriate to a current “diction” setting. The “Relevant Relations” example associates verbs with relations as well, and shows a way of doing room descriptions in which the author tells Inform which relations ought to be described to the player, leaving the system to assign appropriate verbs and construct sentences around them.