Wednesday, March 23, 2011

Understanding More

The world of interactive fiction can sometimes seem like a secret club: you can only get in if you know the handshake, and you can't learn the handshake without getting in. The snake oil sold by the parser affects the initiates but not the masses: if you type the wrong things, it rarely tells you what to try instead.

There are two mistaken assumptions in the perpetuation of this model, both dating from the 1980s: people will read the manual, and natural language processing is an unsolved problem. The first has never been particularly true and is less so all the time, while the second gets less accurate with each passing year. We may not be able to recognize all natural language yet, but I feel we can at least try a little harder.

Player Experience Upgrade is a single-download compilation of ten Inform 7 extensions by several leading authors that will improve the success rate of commands entered into an IF that includes it. Some preliminary testing suggests about 20-40% more commands are recognized than with vanilla I7, reducing player frustration and increasing retention time. Little to no additional work is required by authors other than downloading and including the extension. (At least, that's the intention; if you find otherwise, please let me know so I can continue improving.)

The packaged extensions include the group I developed while trying to make Blue Lacuna more accessible to non-IF initiates (a wildly successful experiment, by most accounts) as well as others adding many basic improvements to the standard distribution, from commonly tried but unrecognized verb synonyms to oft-fixed and re-fixed rough spots in the standard rules. Many of the most common and easily correctable input patterns are silently recognized: things like ending a command with a question mark, simple spelling errors, typing a noun without a verb, or entering a blank line (the single most common response to an IF command prompt, now mapped to >LOOK). The two most common unrecognized command forms, asking who/what/where questions or trying to >GO TO an item within the room, produce tutorial-style messages explaining what better options to try might be. (>GO TO adjacent locations is also understood, providing an alternative for the (many) people unused to compass directions.) Other stuff we've all seen new players try, like >SIT DOWN or >GET OUT OF THE CAR, now works, and when you can't see any such thing it's much more likely to be true.

One of the extensions within Player Experience Upgrade is new, and worth mentioning on its own: Neutral Library Messages. Every Inform-based game comes pre-loaded with several hundred texts which explain the results of actions or refuse to carry out commands that aren't understood or contradict the world model. The default set of these messages (which also date back to the '80s and have accumulated, barnacle-like, on IF design systems ever since) are riddled with many misleading, distracting, or unhelpful responses that experienced players see past but newcomers stumble over.

Neutral Library Message replaces many of the standard messages with more neutral or helpful variations, as well as styling out-of-world parser messages differently than in-game narration. Jokes, puns, and especially humor at the expense of the player have been excised, as well as messages implying too much about the player character or story world: "Violence isn't the answer to this one" may not be true, and not all PCs are "adventurers" or poor singers. Many parser-related messages go to greater lengths to try to explain what was wrong or confusing, and the style change makes clear to players what text is from the author and what text is from the underlying system. An extension like this will never make default messages interesting, of course, but it hopefully builds a safer baseline less likely to intrude on the author's voice or the player's experience.

To add Player Experience Upgrade to your Inform 7 project, download it then click File > Install Extension from the Inform 7 application. You can now type Include Player Experience Upgrade by Aaron Reed. in your source text, and you're done. Some tips on customization can be found in the documentation (also accessible from the "Installed Extensions" link in Inform's Documentation panel), or you can browse the individual extensions for even more details:

6 comments:

Jason Dyer said...

I like! This definitely is going in my next project (I was using some but not all of the extensions included).

I'm not sure how I feel about Neutral Library Messages yet though. Example:

>jump
[Jumping would have no effect, or that's not the way to do so.]

"That's not the way to do so"? What does that even mean? I was confused and I was just testing the thing, I can imagine a player who genuinely wants to jump would be baffled.

Anyhow, let me poke at it more and I'll send a list of concerns to the intfiction.org thread.

Aaron A. Reed said...

Hi Jason-- some actions, such as taking, directly interface with the world model and thus can fail with specific explanations as to why. But actions without a detailed world model supporting them can't know whether the player's request is categorically impossible (>JUMP in a game where you play a wheelchair-bound character), plausible but not implemented (>JUMP from the top of a building), or simply not being tried with the correct grammar (if >JUMP OFF BUILDING is expected). Jumping in particular is especially problematic, because the default message ("You jump on the spot, fruitlessly.") implies the action succeeded, when it's actually blocked by a check rule.

What we need to do instead is explain why the player can't jump, without assuming that there's no other way to do so. The compromise approach is to just be completely honest, which is what the message is trying to do: either jumping does nothing at this part of the story, or there's a way to jump that's different than the command the player tried.

I agree this is less than ideal, and am open to changing the way these messages are worded (they've already been through several iterations on intfiction, and we're far from consensus satisfaction). A longer-term solution that I support is simply removing all of the do-nothing actions from the Standard Rules; jump would go unrecognized, unless the author specifically wants there to be some response for it, but that's a bigger change to the default behavior than Player Experience Upgrade is comfortable with making.

Aaron A. Reed said...

(And authors, of course, can always change the messages for their own game: if your story includes a protagonist who likes jumping, but it's never important to the plot, you could feel free to unlist the block jumping rule and write a report rule describing your protagonist jumping.)

Jason Dyer said...

or simply not being tried with the correct grammar (if >JUMP OFF BUILDING is expected).

I would actually chalk this example under the "bad parsing" category -- there's no reason JUMP shouldn't either work or prompt with the correct jumping syntax.

Zack Urlocker said...

Awesome Aaron! Apologies I have not been able to beta test due to my work overload right now.

BTW, also found that keyword interface does not appear to work properly on the iPad iFrotz Glulx interpreter. I submitted a bug (issue #124) to the iFrotz developer Craig Smith. Looks like it's in the queue to get fixed.

http://code.google.com/p/iphonefrotz/issues/detail?id=124

Not sure if there's anything you need to do here regarding safer defaults on color coded text or if there's something I should do as an author using Keyword interface.

Works great in Frotz Z-code interpreter, and w Glulx interpreter on Windows Glulxe, Spatterlight, Filfre.

--Zack

Zack Urlocker said...

FYI the iFrotz issue around the keyword interface has now been corrected in iFrotz 1.5.1 available now on iTunes for iPad and iPhone.
--Zack