I don’t intend to get into a(nother) flamewar with Steve Breslin, but he’s said some false things about me recently, and some provocatively semi-true ones about IF languages and the state of IF discourse. Though what follows starts out with some newsgroup politics, it winds up as some more general stuff about language design and what I consider the strengths and weaknesses of Inform.
Breslin has recently launched an argument that I, personally, have stifled productive discussion on the newsgroups by failing to control my “supporters” who attacked those criticizing Inform 7. I am thus responsible for a decline in exciting developments in IF, first because I have promoted a stunted development system and second because I have systematically silenced all those who would protest.
This is (perhaps unsurprisingly) not how I remember things happening. First, I have no “supporters”; the newsgroup is anarchical, there is no power hierarchy, and I have no power to control anyone. I don’t want the job, and no one wants to be controlled by me, so this works out nicely.
Second, lots of people have offered criticism of Inform 7; the one who has chiefly been attacked in personal terms is Breslin himself, and this I think is a reaction to his own tendency to introduce personal insults into some of his discussions. While I think it is childish to use “he started it!” as an excuse, and I don’t condone people posting nasty things about him, I haven’t really seen that as relevant to I7/TADS 3 discussion; only to interpersonal reactions. These things are impossible to tidy up from the outside. One can only wait them out, perhaps guiltily chuckling if one side or another says something witty, but for the most part feeling a sense of growing irritation and distress at the waste of time and community goodwill.
There have been some people — especially early on — who felt that they “couldn’t” say anything critical about Inform 7 because it would be perceived as part of Breslin’s flamewar. (Multiple people told me this on multiple occasions.) I think that effect is happening somewhat less now, and there have been some enlightening critical discussions about what does and doesn’t work in Inform 7. The more practical of these we have tried to take as guidance for future improvements; the more theoretical are harder to address, but that doesn’t make them invalid.
Anyway, to a couple of specific points. Breslin wrote:
On Oct 23, 12:29 pm, steve.bres…@gmail.com wrote:
> Thanks. Chasing down another reference… In that post, the thread
> which Emily maligned as
> >the GRR RAR WHAT GOES ON WITH I7??? thread
> is probably:
This is false, as a comparison of the date stamps will make clear: I am referring to something that started before the “deathmatch” thread, not two days afterward, as Steve’s linked thread does. The thread I was referring to was this one, in which the private beta cycle of I7 was framed as a sign of malice, cliquishness and ego on the part of the people working on it.
> (“GRR RAR” etc. [complete with all-caps] is another wild and hostile
> mischaracterization, coming from the same place as “steel-cage
It’s possible, I suppose, to read these comments in this way, if one doesn’t pick up my intended tone (and perhaps I didn’t convey it well). In both cases, I was trying to make light of some hostile discussion in order to get past it to something a bit healthier.
In the case of the “deathmatch” comment, this is because, from the earliest discussion of I7, Steve had a tendency to take positive or even neutral remarks about Inform 7 as a slam against TADS 3; in this particular thread (to pick only one of numerous examples) he sees Graham’s desire to have a manual ready when I7 goes into public beta as an attack on TADS 3 for *not* having a manual at the same point in its development cycle. I didn’t think this was a particularly productive mode of discussing either language, and said so, a number of times.
This should not be confused with a desire to silence critique or discussion in general.
I do not at all regard TADS 3’s creators as my antagonists — in fact I have the greatest respect for MJR (as its creator) and Eric Eve (as its chief tutorial writer and documenter). I also believe that, yes, the language provided does affect the kind of output produced — not only through what it is or isn’t capable of, but also (though more subtly) through the rhetoric surrounding its presentation; the assumptions that are built into the library and documentation about what is necessary to a piece of IF; and the community discourse that springs up around it.
It is possible that a thoughtful critique of those features of both languages will, in fact, lead to the conclusion that one is better than the other in certain circumstances — or even in most circumstances — that is to say, a value judgment may eventually enter in. I am willing to entertain the possibility.
I am not kept awake nights by the fear that someone will do a theoretical proof conclusively showing Inform 7 to have been a waste of time, though: too much interesting work has already come out of it.
That includes, in fact, exactly the kind of work that Breslin claims needs to be done: Stephen Granade’s “Child’s Play”, for instance, has some of the most successfully-incorporated goal-seeking AI I’ve seen in IF. For that matter, “When in Rome 2” and “Glass” are early I7 examples on my part that explore goal-seeking as well, and even “Bronze” uses some limited AI to work out how to give puzzle advice to the player. Aaron Reed has done some more work along the same lines with his extension for puzzle hinting. Other I7 authors have expressed a strong interest in more intelligently (and procedurally) arranged text, taking into account player knowledge and the progression of the narrative, or aesthetic principles; “Room Description Control” is an attempt to provide some tools for that in describing places, and there has been a good bit of other discussion on and off about how to achieve narratively-compelling prose effects.
What I don’t quite understand is why Breslin either ignores or dismisses these examples, since they would seem to be more or less in line with the increasing procedural sophistication he’s asking for.
The one I7 AI piece he has expressed interest in is “Mystery House Possessed” — a game I released before the public beta, which was written so early on that it had to invent its own pathfinding because I7 didn’t have any built in yet. (I had help writing the pathfinding routine, which is good, because I doubt I could have optimized it myself.) As an effort, it’s pretty darned rough around the edges; there wasn’t time for as much testing as I would have liked (and skipping the deadline was, for once, not an option); it doesn’t entirely work as a story, and as a game I am not sure it is fairly designed. At the beginning of each game, a murderer is selected at random from among the other characters, who goes around killing off victims and leaving clues about. With enough plays of the game, you can start to recognize the kinds of clues that get left and, perhaps, identify the culprit fast enough to kill him before he strikes too many times. But it’s clunky; it’s too often too obvious that there’s goal-seeking going on, and too obvious how it’s working. Though NPC movements are collated together into paragraph-like reports, the formulaic repetition makes the code pattern visible under the surface.
By contrast, in “Child’s Play”, it’s far harder to tell from the outside which pieces of NPC behavior are scripted and which are the result of goal-seeking code. All the player can really tell is that the other babies react to the player’s actions in uncannily appropriate ways, with varying and charming prose. The goal-seeking makes it robust, without making it tedious to read. To my mind, that is a triumph.
But perhaps there is an aesthetic angle from which that is not a positive development. In fact, Breslin himself has said elsewhere:
Artificiality is not a weakness to be minimized, but a strength, a necessity — indeed it’s what makes the whole project worthwhile and enjoyable. People won’t play “the party” because it’s fun to go to parties, but because (let us hope, anyway) it’s fun to go to artificial parties. — Grand Text Auto
and also, in praise of my early work
Short always strongly foregrounds the program. The mechanism isn’t a means to an end, but the inspiration itself. — also Grand Text Auto
(For what it’s worth, he completely misunderstands the internals of Mystery House Possessed in his subsequent discussion: it was the most process-intensive and completely-simulated thing I’d ever written at the time.)
But leaving aside the mischaracterization, what is attractive to him about “Mystery House Possessed” is perhaps exactly what I consider its weakness: the raw quality, the obvious artificiality, the narrative jerkiness. From my point of view it was only a step along the way towards something potentially much better. From that perspective, the fact that “Glass” (say) moves procedurally towards conversational goals is neither interesting or valuable, because of the effort that has gone into making that movement smooth. It uses simulation techniques to produce a more robust, more flexible behavior behind output that still looks hand-crafted. It is therefore not approachable as a mechanism to be toyed with in the same way.
If that is really the source of Breslin’s objection, then I think I can see better than before why he might find Inform 7 contrary to his purposes.
The question is only partly one of procedural efficacy: while I7 is not as general-purpose a programming language as TADS 3, it is sophisticated enough to handle various procedural advances. In fact, the possibility of using it for mild AI was very much in my mind when I wrote my parts of the documentation. This is why some of the most longwinded and, I suspect, little-used examples are in there: I wanted to offer a sort of sketch of how someone might go about writing some goal-seeking behavior, or an intelligently adaptive hint system, or maybe even a plot manager (though that example doesn’t go very far). I hoped that authors would see possibilities and experiment in those directions.
But the natural language surface of Inform 7, and the book metaphor in the IDE, and all of the trappings that accompany it, do seem strongly to say “you are making a story, not a mechanical toy”. That was deliberate. I think it may be productive in some ways; I suspect it may have problems in others. But it almost certainly does promote a set of aesthetic values directly at odds with the ones that Breslin prefers. While I7 does not (in my experience) preclude procedural simulation, its library encourages the author to focus his procedural efforts where they are needed for the interaction of the game.
That is obviously not the only way to approach IF; and that fact is why it is so important for us to have multiple, thriving IF languages.
Moreover, there are cases (as Jeff Nyman attests) where I7 is perhaps not yet (or not ever? but I prefer to think not yet) flexible enough to handle the ambitions of the narratively-minded author. He particularly cites the ability to interfere with UNDO output: not impossible in I7, I think, but it would take some hacking. There may be other points, which I hope he will share in due course.
I have a few items on my own list. To my mind, the biggest indictment of I7’s procedural capabilities is the “Noisy Cricket” example, in which mixtures of liquids are analyzed using linear algebra to determine which recipe most closely approximates the contents of the container, regardless of the total amount of liquid currently measured out. It also works out in what respect the mixture most *deviates* from the recipe, so that it can say things like “minty grasshopper”, where a smaller mint component would make the drink more like a typical grasshopper.
It’s possible to do this for a small number of components, but the difficulty of juggling table entries, and the absence of floating point math, make it ugly source and limited in practice. One of my private goals has always been the ability to recode Noisy Cricket cleanly and easily in native I7. We have occasionally talked about working more on I7’s handling of math, and that remains on the table; so I hope that any tackling of that problem would take us in the right direction.
If the example of liquid-mixing seems too narratively bleak to be compelling, consider that a similar kind of math could be used to take a number of different mood vectors (annoyance, excitement, lust, whatever) and find the specific emotional state that best conveyed that mixture of moods.
But the reason I’m interested in doing all that is because I think it’s important in translating abstract numerical information back into something that looks like hand-tailored text. You take a bunch of numbers — too many to efficiently look up in a table in a conventional sense — and reduce them to a much smaller set of predefined nodes; and then you use that information to build output for the player. The numbers are useful because they allow incremental adjustments (action X makes your aunt Lucy 1 point angrier) to be effectively incorporated into larger state (she’s somewhat angry but also much too worried about the car accident to react much) without requiring such large steps as one gets from a “mood maze” or simple state machine. In essence, what I’m talking about is using a Chris Crawford-esque approach to numerical modeling of character state, but adding a layer to turn that data back into something qualitative before attempting to use it in a story context. So what I created with such mechanics would probably still be very far from the fascinating toy machine that Breslin considers the ideal future of IF.
I’ve put all this down here not to take a prolonged swipe at Steve Breslin. On the contrary, I often want to engage his ideas (or at least some of them) but have not had a great deal of success discussing them with him directly. Whoever is at fault for that, he’s right: critical discussion about these languages is not as rich as it could be. I agree with him that that is at least partly due to the rhetorical spin added by some members of the discussion. I (predictably) disagree with him about where that rhetorical spin entered the system.
But if he is sincere about wishing that I would make a statement in favor of more extensive, thoughtful, and civil critique of IF languages — well, I just did.