Command Processing

 'Do you have a suggestion? Discuss this topic on the forums !' When players type an instruction (or "command line") and press enter, Tohm's command processor tries to figure out what exactly they want to do in the game world. Not all text games need to use a command line to get instructions from players - some may offer a list of valid actions. But offering a command line interface gives the player a sense of freedom and wonder at the possibilities yet to be discovered.

Other Works
Many online text games today expect players to use a rigid syntax, meaning that they have to use exactly the right words in exactly the right order to ensure the game server will understand what they want. Curiously, this is actually a step back from the famous ancestral text game Zork  , which was surprisingly flexible way back in 1980. It's true that rigid command line syntax is the standard in some areas of computing today (outside of gaming), but today's gamer probably isn't an IT pro, software engineer, or computer enthusiast, so expecting players to cope with a rigid syntax is expecting too much.

Measuring Player Expectations
It's impossible to guess at all the different words and syntaxes players will try in the future, so Tohm has a special server log where all the failed command lines go. Using that log, we eliminate the guesswork and witness what players actually try to do that doesn't work, so we can teach Tohm to be better at understanding what players want to accomplish based on real player behavior.

Synonyms, Typos, and Misspellings
The basic travel verb is "go", as in "go west". Players might also try "walk west", "run west", "travel west", "move west", and so on. So all of those verbs are synonyms of "go" until we decide they should mean something distinctly different. We also add synonyms (or "aliases") to verbs when typos like "slahs" instead of "slash" are common in the logs, and for common misspellings. Tohm can never have too many synonyms.

Command Suggestions
When synonyms don't do the job, Tohm builds a list of verbs which are similar to what was typed and offers them as suggestions - "Did you mean 'time' or 'travel'?" This is much more helpful than the typical "I don't understand what you mean." offered by many online text games.

Optional Parameters
In some situations, it's obvious what the player wants to do even when he's not very specific about it. If a player says "go" in a location where there's only one possible exit, Tohm will navigate him without asking him which way he wants to go. When he says "punch" and there's only one target close enough, Tohm makes a reasonable assumption. When he says "punch" and there are many potential targets, Tohm assumes the player wants to punch the same bad guy he attacked last time (if there was a last time).

Tolerance for Verbosity and Punctuation
Only players familiar with a command line interface think like minimalists when typing a game command. Everyone else starts with natural language patterns which tend to include a lot of unnecessary words. Tohm will accept all of the following: This flexibility is critical for making new players feel as comfortable as possible.
 * punch goblin
 * punch the goblin
 * punch the smelly goblin
 * punch that goblin
 * punch a goblin
 * walk into the inn
 * Walk into the inn.

Allowance for Abbreviation
Abbreviations make players with mobile devices more comfortable, and long-time players appreciate the shortcuts as well. Tohm doesn't enumerate valid abbreviations - instead it just finds the closest matching word using a dictionary-style lookup. In cases where we want an ambiguous abbreviation to map to a specific verb, we make that abbreviation a synonym of the verb. For example, "g" might map alphabetically to "get", but we prefer it means "go" because that verb is used more frequently, so it's more likely to be the verb the player intended.

Compound Command Lines
Tohm will accept command lines like this one, as long as the instructions don't involve wait time and there's no doubt about the player's intent: "Say "Goodbye", then put on my coat and head west."