View Single Post
Old 04-05-2006, 05:10 AM   #2
KaVir
Legend
 
KaVir's Avatar
 
Join Date: Apr 2002
Name: Richard
Home MUD: God Wars II
Posts: 2,052
KaVir will become famous soon enoughKaVir will become famous soon enough
Perhaps it's the programmer part of me, but to be honest I actually prefer a fairly rigid syntax.  I know natural language parsers are supposed to be "fashionable and cool", but the question is, do they really add anything to the game?

Let's look at some of the advantage of a rigid (but well-designed) command syntax:

1. Quick to type: It's much faster to type "get 2.sword" than "get the second sword".  This becomes particularly important in combat situations where even a single second can make a difference.  It can also save the player a lot of unnecessary typing over the many hundreds of hours they put into the mud.

2. Consistent: Once you understand the syntax for one command, you'll be able to apply the same syntax rules to other commands.

3. Reliable: Because the syntax is rigid, you won't have to worry about it trying to second-guess you or misinterpretting what you're trying to do.

4. Easy to learn: Learn the commands, learn the simple syntax rules, and that's it.  You don't have to worry about learning how the various quirks of a natural language parser apply to each command, because there won't be any.

5. Easy to implement: Much easier to implement, particularly for a game which is always evolving and changing.

Even if you could create a 'perfect' natural language parser, which didn't make mistakes or misunderstand command requests, you'd most likely still find that hardly anyone used it.  Perhaps the occasional newbie trying their first mud would use it, but they'd soon wittle it down to the shortest form possible.  It'd be a huge amount of work for something which most people wouldn't use, just for the sake of having something 'cool' on your feature list.  Plus there's the fact that no natural language parser is 'perfect'.

However that doesn't mean that the command syntax can't be made a bit more flexible.  For example, my 'give' command supports the following:

Syntax: give <object>
Syntax: give <object> <creature>
Syntax: give <object> to <creature>
Syntax: give <creature> <object>
Syntax: give to <creature> <object>


This is obviously fully compatible with the standard Diku syntax, but it also supports the other typical variations that newbies tend to try, without the implementation effort required for a natural language parser.

Feedback such as "There's no sowrd here - did you mean 'sword'?" is of dubious value in my opinion.  In that example it's fairly obvious what the player meant, and there's no real need to tell them about it, while other cases (eg "There's no artwork here - did you mean 'armour'?") are just going to sound odd.  It's also likely to start requiring a lot of extra processing, and could end up giving some really strange messages once you start taking player names into account.

The combined verbs idea is nice though, and could certainly add some flavour to the game, particularly for roleplaying muds.
KaVir is offline   Reply With Quote