[MUD-Dev] Re: MUD Design doc (long)

Emil Eifrem emil at prophecy.lu
Sat Jan 2 22:14:29 New Zealand Daylight Time 1999

At 08:48 PM 1/2/99 , Travis Casey wrote:
>[Emil Eifrem:]
>> That's true. Unfortunately, my server is not that far to the soft side of
>> things that the above would be possible. Our scripting lang is designed
>> specifically for world manipulation and would be quite unsuitable for
>> commands programming.
>Without seeing your scripting language, I can't say for sure, but it
>seems to me that a world-manipulation language should be suitable for
>implementing at least some commands:  those that make the body affect
>the world.  Thus, things like give, take, wield, wear, etc. ought to
>be implementable in it.

Our world scripting language is designed specifically for non-geeks. We
don't discourage geeks from building, but we're actively looking for
creative arts people and the like and they tend to be afraid of stuff like
'if player.mana > 0 && player.hp > 0 then player.print("blah") fi'. So in
general, our scripting syntax largely avoids symbols in favor for words.

For example

player.hp = 3;

would be written

set the hp of player to 3   ! or: set player's hp to 3
print "blah" to player's output

So, aye, this could be used to implement most world manipulating commands
and some skills. But why? For clarity, I feel it's either one or the other.

> - Easier quality control.  I already mentioned this with regards to
>   the possibility of builders adding synonyms for verbs that already
>   exist, but there are a lot of other ways that centralized verbs
>   make it easier.  Take a "read" verb for example:  to really work
>   right, a "read" verb ought to check whether there's enough light to
>   read, whether the character understands the language (if your mud
>   has languages), if there's any spell on the character or thing
>   being read which might prevent it (e.g., AD&D's confuse languages
>   spell, or a blindness spell).  With a centralized verb, all this
>   only has to be coded once.  If each builder has to manually add a
>   "read" action to each object that can be read, you can be sure that
>   many of them won't think of some of these things.

Hmmm, what do yuo mean? Surely, you're not saying that you have every
single command coded for every object type you have out there? The code
duplication would be enormous and like you say, maintainability and quality
control non-existant. 

The most reasonable thing is probably to have some kind of 'default
function' (be it via inheritance or some other construction) that handles
everything but the 'unusual case,' where the builder overloads this
'default function' with his scripting code. This should probably be done
regardless of whether you implement all your commands in the scripting
language or in your static server.

>   (A side note:  on SWmud (an LP which used the add_action() system),
>   we often ran across situations where there was a neat idea that
>   would have made things better, but it would have required changing
>   hundreds of objects throughout the game.  Naturally enough, none of
>   those were ever implemented, because we simply didn't have the time
>   to redo all those things.)

Aye, I've had such cases as well. Perl has proven to be a trustworthy
friend in most situations.

Out of curiousity, what does SW stand for? Star Wars?

> - It can help prevent "guess the verb" situations.  I know -- some
>   people like those.  Personally, though, I hate them.  Why?  Because
>   if I were actually my character, I'd just *do* whatever it is, and
>   it wouldn't matter what I *called* doing it.  Thus, to me, it
>   discourages roleplaying by bringing the divide between the player
>   and the character to the fore.

Yes. Guess-the-verb is a Bad Thing (tm) by my book.

-EE [emil at prophecy.lu]

More information about the MUD-Dev mailing list