Introducing Inform 7

Inform 7, or I7, is a dramatic departure from what has come before. IF languages such as Inform 6, TADS, and Hugo are procedural, C-like languages, familiar to most any modern computer programmer. I7 doesn’t take that approach. Instead, its language is based on English.

I’ll pause a moment to let that sink in.

Rather than using a small set of terse programming directives as Inform 6 did, Inform 7 uses a subset of English, in an effort to make interactive fiction programming more accessible to writers who lack a computer programming background. For instance, the following I7 code creates a three-room house:

The Living Room is a room. “This is your living room, as featured in a number of games written by first-time interactive fiction authors.” East is the Kitchen. North is the Bedroom.

I7 also deviates from the standard object-oriented approach to IF, where objects in the game are mapped to objects in code, and the interaction between objects is contained as code associated with the objects. Instead, I7 uses a form of logical programming, where you define rules that explain how the game world works and how objects interact. For example,

Instead of taking the fire, say “It would burn you.”

This sets up a rule that, when the player tries to take the fire, they can’t; instead, they’re told that the fire would burn them. And if you just found yourself thinking, “Well, of course; that’s obvious,” then you’ve identified one of the selling points of I7. —Introducing Inform 7 (Brass Lantern)

Such a major shift in the approach to IF programming is going to have repercussions.

While the syntax for I7 is based on English, you still have to think like a programmer in order to code in I7.

However, reading I7 code is much, much easier now. Those who already know how to read code — and who have internalized coding processes so much that I7 seems like a straitjacket — probably won’t appreciate just how valuable that change is to the general public.

Scott Adams created the first commercial interactive fiction game, and by some accounts the first commercial game of any sort, with his “Adventureland” in 1979.

When he participated in a panel I hosted, he said, “People like [English major] Amanda here, shouldn’t have to be a programmer to put into the media her creative thoughts. Today you have to be. Five years? I don’t think that will be the case… There will be an underlying tool that you’ll be able to use to shape, be creative as you need to. Today, that doesn’t exist. It will exist.”

He said that on May 3, 2001. http://jerz.setonhill.edu/if/adams/qanda2.html

And Inform 7 was officially released on April 30, 2006 — almost exactly five years later.

A pleasant coincidence.

He was speaking in more general terms of the mod community, but interactive fiction is a very mature mod community — one that has sustained a whole genre long past the point where it is commercially viable. This is a good thing, because for a decade we’ve seen what tremendously creative things people can do when they get their hands on these tools.

You no longer need to be a programmer to write text adventure games. Graham Nelson and an army of collaborators have made game creation into just another form of composition.

We’re still a long way from a vision of the Holodeck, where Geordie can say, “Computer, create an original Sherlock Holmes mystery with an opponent capable of defeating Data” (not the exact quote — working from memory here…. but see this interesting article likening TNG’s holodeck to the genre of the masque. http://faculty.gvsu.edu/royerd/courses/495/masque.htm

I don’t often get this excited and make wild predictions. But that sound I hear… could it be the footsteps of Janet Murray’s cyberbard, some rough beast now armed with Inform 7, and slouching towards cyberspace to be born?

3 thoughts on “Introducing Inform 7

  1. Good points. Accomplished programmers who already know what “while x do(foo(x))” means won’t see any advantage in Inform 7, and their coding efficiency will surely take a hit.

    That’s the same reason why I’ll probaby never switch to an alternative keyboard, despite the fact that I believe I’d probably eventually type a lot faster if I didn’t have to use my most awkward fingers to type common letters such as ASE & D, while my right pointer finger is wasted on rare letters like JU and Y.

    I’m fairly confident that non-programmers will find IF authorship a lot easier if they don’t first have to learn how to code in an object-oriented environment. The logical structure of Inform 7 is narrative, which is how most English majors are trained to think.

    Experienced programmers can continue to use whatever works best for them.

  2. It’s always nice when you can easily read the code. But there’s often a reason why programming languages are terse and use their own language. It’s because the english language has words that have wildly divergent meanings based on context, whereas in programming there needs to be much greater clarity.

    Just look at a word like “love”. If I say “I love you” to someone, what exactly does that mean? Well, it depends entirely on who I’m talking to, and the situation. Obviously I wouldn’t mean the same thing saying that to my father as I would saying it to my girlfriend. It wouldn’t mean the same thing if I said it as an actor in a play as opposed to my child at a funeral. And, of course, adding a sarcastic or kidding tone completely flips the meaning of what I’m saying.

    You can see other problems in other fields which redefine common words to have different meanings – if I remember correctly, in physics an object has exerted no force on another object if the other object didn’t move. So if I slam my car into a tree, and the tree doesn’t move, I haven’t exerted any force.

    So anyways, my point is that a programming language based on english often subtly redefines what words mean, creating code that may be easier to read but is sometimes even harder to write.

Leave a Reply to Dennis G. Jerz Cancel reply

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