Keyword Interface, Topics and more
Z-Machine Matter Manual

Recent Alpha Updates

Small Cover

Based on feedback from testers, I've added several new capabilities to The Z-Machine Matter. This includes the previously described Keyword interface to accomodate both objects and locations as well as new commands TOPICS, SUSPECTS, CONFRONT and hopefully elimination of some parser ambiguities.  The game is chugging along now at over 58,000 words, 174 objects and 44 rooms.  With still plenty of work to be done.

Several testers have given me feedback that it's difficult to know what topics are valid for ASK and TELL commands with the non-player characters, so I've implemented a very basic TOPICS command that suggests some topics.  Right now, the TOPICS command is largely (but not completely) static, but over time I'll dynamically suggest topics based on game play to help move things forward.    

I've recently implemented a new command called SUSPECTS that tells you which of the NPCs are suspects.  Both the TOPICS and SUSPECTS commands provide a mechanism to help the player along but fall short of really giving away any significant hints in the game play.  For those who get really stuck, there's always the built-in HELP system.  I figured these new commands are a good way to provide a ramp for players who want a little advice but don't want full-blown hints.

I've also added the ability to accuse a character of lying using commands in the form:

> ACCUSE Beverley of lying
> TELL Charlie he's lying

The logic on how the characters respond depends on what evidence you've uncovered in the game.  Each of the suspects has something they're hiding, and so if you find out what that is, you'll get different answers to some questions.  

I've also expended some efforts to eliminate many of the annoying ambiguities that arise in Inform.  The worst case is when ambiguity arises when you ask about an object and the parser asks if you mean some new undiscovered object.  These messages tend to act as spoilers telling the player about objects they haven't even seen yet.  For example, I have two different newspapers, the San Moreno Informer and the LA Times in different areas of the game.  

Most of the time, it's not a problem, but if you ask someone about newspaper, Inform won't know which one you mean, even if you've not yet encountered one of those objects.  I've eliminated the ambiguity, by implementing several "Does the player mean" rules such as:

[ Disambiguate other newspapers ]

Does the player mean quizzing about the Informer newspaper when last thing examined is the Informer newspaper: it is very likely. 
Does the player mean quizzing about the Informer newspaper when location is not in the Blakely Estate: it is very likely. 
Does the player mean quizzing about the Informer newspaper when it is visible and The Times Newspaper is not visible: it is likely. 

That said, I'm not sure outguessing the parser is always a good idea.  It seems to lead to some occasional odd behavior.  Maybe the best solution may be to just eliminate ambiguously named objects from the get go, but that sometimes leads to awkwardly named objects.  And even though I have two differently named newspapers in different areas of the game, it's entirely reasonable that a player would simply refer to either one as newspaper and expect the game to figure out which one is appropriate.  

Alpha testers, feel free to contact me to get the latest version.  And if someone wants to do a code review to help me that would be awesome!  

Update: Also, if you've contacted me about alpha testing and not gotten a response, please check your spam folder or send me another email.  Thanks!


Feed You can follow this conversation by subscribing to the comment feed for this post.

Hey there,

This is probably way too late in your development cycle to be a good idea, but I felt I ought to mention that one of the features the Disambiguation Control extension provides is the ability to remove things from the parser's match list entirely in a rule, giving you a way to remove poor suggestions.

Depending on the way your grammar works, you could maybe give known topics an attribute, and then only allow the player to quiz about "known" facts? That might stop things from getting into the list in the first place.

The DC extension replaces quite a lot of parsing routines too, so may not be compatible with Keyword Interface, for example.

Best of luck with the project, sounds ambitious!


Jon's second suggestion (restricting the grammar to "known" things) is the first thing I thought of while reading your post. Relying on DTPM rules for this not only sounds cumbersome, but it will be too easy to miss some cases. If you do stick with DTPM rules, make sure to code an appropriate rule for "Clarifying the parser's choice of something" which prints nothing, to prevent output like:

>ask joe about newspaper
(The Times)

... which would also be somewhat spoilery.


Thanks much for the suggestions, guys. I will investigate these areas and see if I can make some improvements!

The comments to this entry are closed.