The First Oration against the Parser

Emily Short wrote an intriguing post about the parser in IF – actually, somewhat against the parser in IF. She explores alternatives to what she calls the “command line” in IF (not entirely inaccurate, but not the connection I’d most want to make) and ends up finding it to be more or less the worst of all systems except all the others, like democracy. The post has already garnered about 50 comments. In it, Short writes:

We have a two-part accessibility problem. One part is the interpreter: people don’t want to download separate files and don’t want to have to figure out file formats … The other problem is the parser.

I see a few problems with this. First off, let’s not stop at two. The world model that IF presents (with “rooms,” containment, light sources, and so on) is hardly accessible or immediately obvious. I think it works fairly well and creates a good abstraction of world that is suitable for text-based interaction. I think the world model of IF is a strength of the form, a success. But you still have to learn it. Figuring out the layout of an IF world is perhaps easier for new players in 2010 than it was in 1976, but there are certainly challenges to accessibility today in this aspect of IF.

The discussion in this post of the natural-language interface of IF and its supposed failings is what really seems to me to fall short:

Fundamentally, however, we’ve got a bigger problem, which is that the command prompt is a lie. It tells the player “type something, and I’ll understand you.” Which it won’t.

All interfaces are lies, in this case. If I click on my desktop, or on a blank area of the menu bar, it does nothing – or, you could say, it “doesn’t understand me.” If Mario is up against a wall, pushing the joystick (or d-pad) in the direction of the wall does nothing. There are plenty of ways to get almost any computer interface to not give you results, if you don’t learn how it works. You always have to learn something about how to use the interface to be able to control the computer program that uses it.

The parser, which asks “What do you (the detective) want to do now?” is making an offer: Tell me a simple action, usually a physical one such as PICK UP AX, and I’ll instruct the player character to do that. Yes, we have abbreviated way to indicate these actions: “east” or even “e” to mean “walk east,” “inventory” to mean “look at what I’m holding,” and so on. But I see the overall framework of interaction as being clear enough for players to learn, even if there are some issues for newcomers to IF.

I find Aaron Reed’s work hypertextualizing IF and allowing for other sorts of inputs to be intriguing, but I’m not compelled to go in this direction myself. I’m pleased with the textual exchange between player and computer and the basic framework in which the player is invited, consistently, to give a character an action to carry out. In the service of making things accessible, efforts to extend the parser to understand things such as “herring” are moves away from consistency. They may work in some ways, but they make this sacrifice.

Similarly, I disagree that it would be a good idea to have (as Short proposes) “a system where the player could select a noun, see what he could do with it, and select one of those options.” I actually wouldn’t particularly want this, any more than I’d want to be able to say “TURN LEFT!” to my car and have that override the steering wheel. It makes sense for a programmer to be able to determine an object’s methods, but the experience of IF for me is not mainly about programming; instead, it’s about directing a character through a world, often one that is strange. Using langauge, and specifically, a reasonably negotiated subset of a natural language like English, seems suitable for this.

I have to note in closing something that I find a bit amusing: As Inform 7 is taking a programming language for interactive fiction in a radically more natural-language direction, Short is arguing for an IF interface that is less like natural language.

Short has provided a prototype as part of her discussion, which I admire and wish I could do. Maybe after I finish Curveship…

6 Replies to “The First Oration against the Parser”

  1. Short herself doesn’t seem particularly ready to abandon the parser either, but it wouldn’t be a fair analysis to ignore the possibility. Plus there’s the fact that the alternatives she’s discussing already have a history, eg. the lists of verbs and nouns in sidebars. And the shift from text-based parser to a clickable set of verbs and nouns is essentially what adventure games went through. (Which was a success-failure-success rollercoaster historically, I guess?)

  2. You always have to learn something about how to use the interface to be able to control the computer program that uses it.

    True. On the other hand, most interfaces are full of little hinty reminders about how to control them: buttons, drop-down menus, toolbars, radial menus, whatnot. IF offers the opportunity to review what nouns are available (sort of, if you accept that you’re not going to get a complete list and that there may be some unimplemented nouns in descriptions). There’s no guarantee of a refresher on verbs.

    The only part of my desktop that behaves like IF in its opacity is the Terminal window.

    It makes sense for a programmer to be able to determine an object’s methods, but the experience of IF for me is not mainly about programming; instead, it’s about directing a character through a world, often one that is strange. Using langauge, and specifically, a reasonably negotiated subset of a natural language like English, seems suitable for this.

    What I suggest would still allow for the typing of standard commands; it would still continue the paradigm of commanding a character. It would just offer a bit more clarity about what that subset of natural language *is* — as though you were being allowed to say, hey, character, remind me what you know how to do with a door? Ah, right. LISTEN AT IT.

    (This said: Ad Verbum is one of the few IF games I can think of that absolutely positively could not work at all, not even for some of the content, in the system I’m describing.)

    I have to note in closing something that I find a bit amusing: As Inform 7 is taking a programming language for interactive fiction in a radically more natural-language direction, Short is arguing for an IF interface that is less like natural language.

    Less ironic if you consider that the natural-language aspect of Inform 7 wasn’t my idea. I like it — as an expert user, I don’t struggle too much with the syntax, and I find some advantages in it — but I also acknowledge that it is unsuitable for many authors. If I7 were the only kind of language available to write IF in, I would also think we needed an alternative in that arena. Fortunately we’ve already got several.

  3. Emily’s proposal would create something like a different genre of IF, which wouldn’t necessarily be better or worse, but different.

    Mostly I wanted to point out that I rather liked this phrase:

    “a reasonably negotiated subset of a natural language”

    It makes me think both of poetry and of second-language learning. If learning how to play traditional IF is like learning a second language, do I feel much sympathy for those who aren’t willing to investigate the half-hour or so of frustration that it takes to learn the basic outlines of the grammar so that they can participate in the conversation? Especially those who haven’t bothered to read the (one- or two-page) grammars beforehand? Well, no, not really, but I’m also not terribly bothered if they decide not to experience IF either.

Leave a Reply

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

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

This site uses Akismet to reduce spam. Learn how your comment data is processed.