The Sins of Inform 7
Inform 7, while powerful, has some serious flaws that a round or two of proper beta-testing from anyone outside the I7 sanitarium would have discovered. But as Inform has always been an incestuous affair governed by the Old Ones, it’s no surprise that horrific wonders would be birthed. Behold, the sins of Inform 7.
1. Tables. In Inform 7, tables are a powerful construct, allowing more than one interesting use (such as responses given a proper topic). However, when tables fall apart, it’s not pretty and it’s downright counter-intuitive and painful. Where would that be? Where the comparison between a table in a book is at its weakest, because a table is wrenched into a programming context, but retains all the restrictions of being a table in a book. Yes. You too can try to fit paragraphs of text into narrow columns!
In other words, this makes sense:
Table of Outer Planets planet semimajor axis Jupiter 5 AU Saturn 10 AU Uranus 19 AU Neptune 30 AU Pluto 40 AU
THIS does not:
Table of Instruction Options
title subtable description toggle
“About Interactive Fiction” a table-name “The game you are playing is a work of Interactive Fiction. In interactive fiction you play the main character of a story. You type commands which determine the actions of the character and the flow of the plot. Some IF games include graphics, but most do not: the imagery is provided courtesy of your imagination. On the other hand, there’s a wide range of action available: whereas in other games you may be restricted to shooting, movement, or searching items you can click on with a mouse, IF allows you a wide range of verbs.” a rule
It’s ugly, hard to follow, and loses all of the power of the metaphor. It really forces people into defining the table rows later where text can flow freely, which says “chuck it” to the whole table layout.
2. Documentation. I don’t often toot my own horn, but I write documentation FOR A LIVING. I get paid to understand how to fit docs to audience and I understand genetically the need for testing. If the Inform 7 cabal could have been bothered to ask for public feedback (something like “Hey, we’d like input on the docs. Can anyone help?”), I could have spared them tons of harsh feedback, and a general decline in their estimation in the whole IF community.
The documentation for Inform 7, is in two words, an obtuse horror. It begins with a trivial example, but never builds on the trivial example to a robust one. Instead it leapfrogs from application to application of the general concept. It’s much like starting off in a field behind your house, and within ten minutes of walking, you’re on the moon. Newbies it doesn’t help; old hands it frustrates. The docs are simply masterful at giving no-one what they really want.
For instance, say that you want to set the describe properties of a thing. Specifically, you want what displays when the object is in a room to vary. Good luck on finding that. The docs never mention it. Sometimes the only reference to how to do something is buried within the documentation of particular extensions. Yeah, I kid you not.
Mostly, the docs describe how to do little things that don’t add up to much; even the extended examples aren’t thorough. I’m sure I’ll find out just how threadbare they are as I go searching through the entire freaking book just trying to find a clue. It’s documentation by piece, but not by whole; I don’t think anyone reviewed the finished project as a whole.
The docs read like some barely-connected daydream instead of an actual description of how to do things or even, how things work. It’s almost like the authors weren’t well-versed on the necessities of typical IF games and the needs of their authors; that sounds bizarre, but how else can you explain the patchwork effect here? I suppose substance abuse is always a possibility, as is the authors being so far out-of-touch with other human beings, that they really believed that everybody knows everything they do and so “Inform for Me” was all that was necessary. What we really need is an “Inform 7 Beginner’s Guide” to parallel the magnificent “Inform Beginner’s Guide” put out by Roger Firth and Sonya a while back. That book’s approach covered all the bases and had a handy set of appendices that listed common commands, properties, and so on.
3. The language itself. I7 is in many ways, a real step backwards for people who actually want to make games, instead of people who want to throw together a few cute objects that don’t do much. Take for instance the age-old problem of objects that are both containers and supporters, like oh, say, a toilet bowl. Is I7 any improvement over I6? No. You’re still stuck trapping verbs that go to one object and shunting them over to another. You’re still stuck modeling two different objects and trying to obscure their differences to the player.
The fundamental problem is that the language just isn’t thing-oriented. It doesn’t help you make things and govern their interactions well. It’s too high-level to deal with the messy reality of a world of objects, and it makes the low-level stuff even more difficult by forcing you to write near-English sentences about stuff instead of
breaker.oos = true;
The latter is more compact and really, semantically more sensible, as you don’t talk your programs into existence; no, you program them, and a programming languages are created for the purposes of achieving what is cumbersome in English. C, PERL, JAVA, all use these “linguistic shortcuts” or more properly said, have their own language constructs to achieve things simply and quickly. I shudder to think of trying to do pointer arithmetic in I7.
But really, the source code of Weishaupt Scholars says it all. I remember beginning to program in I6. I checked out the source code to Christminster. If you were trying to learn a new language and you came across these two examples, which do you suppose would be easier to learn?
No matter how much I7 repents, it can’t be saved.
14 Comments
Comments are closed.
Stephen Granade said,
October 14, 2010 at 2:46 am
Then why, I must ask, donyou keep bothering with Inform 7?
poster said,
October 15, 2010 at 2:32 am
Do you find it a good use of your time to post contrary opinions hoping to start fights? I’ve learned that such actions are futile, so it appears you have yet to learn just how little influence you have, especially with me. This should be instructive, if nothing else.
My reasons are my own, my patience is finite, and I owe you no explanation. Needless to say, I will not be justifying my actions to you. Neither do I imagine that any explanation will convince you of anything. Therefore, nothing remains to be said, except “Get out of my house.”
Scratch Monkey said,
October 15, 2010 at 6:01 am
Wow. I’m a T3 guy myself, but I’ve been thinking I would buy Aaron’s book and learn a bit of I7 just for the hell of it. But then I took a look at the source code you linked to, and I don’t think I can bring myself to do it now. I’ll probably look at a few more examples and Ron’s guide, but thanks for saving me the stupidity of just buying the book first.
poster said,
October 16, 2010 at 3:13 am
Not a problem!
Gunther said,
October 15, 2010 at 6:01 pm
It’s amazing how full of yourself you are. Do you really think anyone gives a shit about your constant paranoid attacks on a mythical cabal? You just come across as an ass.
Which you are.
Get a fucking grip. Use something else if you hate I7 so much. Write better documentation if you hate it so much. For ONCE do something positive and constructive.
poster said,
October 16, 2010 at 2:35 am
I didn’t solicit your opinion, and neither do I care what it is. I don’t care really what anyone else thinks about what I say, either — otherwise, I would change what I said to please the crowd. One thing that is obvious, however, is that you are so offended by my words that you must attack them. Further, you resort to profanity because of your inability to control yourself.
As for positivity in general, you are a profane troll. As for productivity in general, you are a profane troll. Those who live in glass houses should not throw stones.
As for my positivity and my productivity, the evidence is apparent if you are interested. If you don’t care to look, that is not my problem. In any case, I have no need to justify myself to you.
Further attacks will be deleted on sight.
Ice Cream Jonsey said,
October 15, 2010 at 6:37 pm
Yeeeee-ow! Lookout, Sarge! You just gotcher ass INFORMED!!!!!!
poster said,
October 16, 2010 at 2:40 am
Hardly. And comments like yours are less than interesting or helpful. Post trash like this again and you’ll be gone.
Stephen Granade said,
October 15, 2010 at 8:51 pm
I wasn’t actually interested in starting a fight, and in fact expressed no opinion, let alone a contrary one. I was curious why you keep battering yourself against a wall merely to complain that it’s in your way. Why pour energy and time into something that, by your own judgment, cannot be saved?
poster said,
October 16, 2010 at 2:38 am
Vaporware, I have told you before that I do not wish to converse with you, and you have ignored my words. That’s not very civil of you, so from now on, anything you type here will be deleted on sight.
The Inform 7 Documentation Fails as a Reference « Sturm Und Drang IF: A Stormy Romance said,
November 1, 2010 at 6:51 am
[...] have discussed other ways in which the I7 docs do not succeed here, in terms of tone and style and here, in terms of general organization and approach. However, beyond those offenses was buried an even deeper, systematic flaw: the documentation [...]
Using Pointers in INFORM 7 « Sturm Und Drang IF: A Stormy Romance said,
November 5, 2010 at 8:14 pm
[...] told, briefly, by someone that INFORM really wasn’t for using pointer arithmetic, as though here (at the end) I was asking for something completely impossible. Yet nearly all programming languages allow for [...]
2010 in Review (from Wordpress) « Sturm Und Drang IF: A Stormy Romance said,
January 2, 2011 at 5:11 pm
[...] The Sins of Inform 7 October 201012 comments 3 [...]
The Abused and the Abusive Lover « Sturm Und Drang IF: A Stormy Romance said,
December 18, 2011 at 2:32 am
[...] recognize that the Inform 7 docs suck (as I’ve pointed out in several articles here, and here), yet they continue to use the language anyways. Why? Maybe they were where I was, thinking that [...]