Hello parser-making friends! Until a few short months ago, I had never tested another author’s game, but since that time I have partially or completely tested some ten or twelve games. In the course of doing so, several recurring themes have emerged, so I figured it might be of some help to publish them so that authors may be able to apply them during the course of game creation.
My suggestions are concerned mainly with some elements of what I consider to give a game a higher degree of polish. Perhaps some of them will be considered overkill or too much work for a given game. But I think a general awareness of these principles won’t be amiss…
Provide default responses for every NPC, covering every conversational verb. TalkTo, GiveTo, ShowTo, AskAbout, TellAbout, AskFor, “actor, hello/goodbye”, “actor, do command”.
If it’s a very prominent NPC I suggest that each verb has a unique default. "Igor doesn’t feel disposed to answer your question. " "Igor manifests no interest in what you are telling him. " Even better if the default cycles through a few different wordings. If the NPC plays only a small role, it’s okay to catch multiple verbs with the same message, but just don’t leave the default as "There is no reply. " (sounds unimplemented)
"You can’t go that way. " If it’s not already obvious from the room description, tell us why we can’t go that way! In a given location, three directions might be implausible because the protagonist would be abandoning the mission, two might be implausible because of obvious physical impediments, and one might be a water body that we could swim but it’s just really not the time for swimming. That’s a really bad location to report “You can’t go that way” for every direction except the road to the north. For locations with very prominent or compelling reasons to not go in a particular direction, give that direction a unique cantGo message. But otherwise rooms that aren’t obviously boxed off with the exits listed should have a customized default cantGo, that catches anything not more specifically defined: at the very least it can say "It only makes sense to head down the road to the north at this point. "
Untakeable objects: default cantTake/cantMove messages! It’s really detrimental to the atmosphere to try to take a lightweight chair or the shards of a broken urn and be told “It is fixed in place.” Specifically, customize the cantTake/cantMove messages for all objects that are motivationally disallowed or else not impossible but impractical. In TADS3 this is quite simple, as there are separate classes for objects that are actually fixed and those that are not practically movable, but this distinction doesn’t seem to be made in the Inform standard library. If you don’t care to customize all of your applicable cantTake/Move messages, at least customize the game-wide default to something noncommittal like “You won’t be taking the object” instead of “It is fixed in place.”
It’s understandable that an author doesn’t want to make every object in their game a Container. But if you aren’t going to allow containment functionality, at least be conscious of whether containment is logical for the object in question, and provide a custom cantPutIn message. If a player tries to put the cup in the cabinet, they shouldn’t be told “That can’t contain things.”
For objects that are described as plurals, always include the singular form in your vocab. Mimesis-breaking to enter “x paintings” and get a lovely description, then “take painting” and be told “You see no painting here.” While on the subject of vocab, include every form you can think of. Just because you carefully called it a “bookshelf” in your description doesn’t mean someone won’t type “book shelf” or “book-shelf” or “shelving”. The more you cover, the less ground a player will have for associating frustration or annoyance with your game.
And include both British and US spellings!
Also make sure all plural objects are programmatically marked as plural. Otherwise the player will see “The guard dogs isn’t here.”
Other default verb messages as yet undiscussed: you’ve put this much effort into your game, go a little further and put the defaults in your own words. Many times you can tailor the message a little bit more to your PC or the general atmosphere, and banishing library messages from a game is almost always a step in the right direction. Most players would rather hear “Quarbucchio isn't interested in sitting anywhere less comfortable than a recliner” than “The front desk is not something that you can sit down on”.
PITFALL: be careful when awarding points, that it is impossible for the player to repeat the action and score the points again! I’ve run into this twice in the last week. Some puzzles take care of this unintentionally, because the obstacle or the foe disappears, but if it’s something like picking a lock, make sure that the player can’t pick the lock again right after they’ve opened it. Or, if they can re-lock and re-pick it, make sure the points and the celebration only happen once.
- the parser should be able to recognize input beginning with * as a comment
- use Wade/@severedhand’s menu extension. When testers access in-game hints with a transcript on, the standard setup clutters the transcript with huge chunks of repetitive and unnecessary hint menu text.
That’s all for now! Thanks for listening!