[MUD-Dev] Introductions and

Adam Wiggins nightfall at user2.inficad.com
Sun Dec 14 20:40:23 CET 1997


[Chris Gray:]
> [Adam W:]
> This is not at all meant as an attack, but more a reminder that there is
> a lot that has to go on behind the scenes, in order to make a MUD do what
> looks like simple things. We sometimes forget that in our discussions here.
> Alternatively, some of the MUDs that are out there may just be a lot more
> sophisticated than I imagine!

Oh, certainly.  I think that applies to 90% of what gets posted to this
list.  That's why I enjoy it.  You have to know where you're going - if
not with this generation of muds, than with the next.  Personally I
think all the stuff in this post is *far* below the level of a lot
of the crazy stuff proposed here :)

> :You're confusing 'name' with description.  The situation you describe
> :should look like so:
> :
> : ] n
> : You enter Arms 'R' Us.
> : This is a large, bare room.  On one wall are mounted quite a few different
> : swords.  On another wall there is a myriad of armor.	On a third wall are
> : several dozen helmets.
> : Bubba the shopkeeper is standing here.
> : ] look swords
> : There seem to be around 20 different swords.	Most of them are typical
> : longswords, but you notice two particularly rusty swords, three short-swords,
> : two claymores, and a rapier.
> : ] get short
> : You get a shortsword from the wall.
> : Bubba says, 'That's an excellent weapon for any use.	Sold to me by an older
> :  hobbit fellow younger today, he said it served him quite well.'
> : ] examine short
> : You take a close look at the shortsword.
> : It weighs around six stones.	The blade is about three handsbreath long.
> : The hilt is wrapped in leather.  Delicate paterns are etched into the
> : well-worn blade.  It could use some sharpening.
> : ]
> : Bubba says, 'Only fifty coppers for that fine item.'
> : ] name sword Sting
> : You will now call the shortsword 'Sting'.
> : ] l in purse
> : You have three copper pieces.
> : ] doh
> : ] return short
> : You return the shortsword to its spot on the wall.
> : Bubba says, 'You'll regret giving up such a bargain, my friend..'
> : ] l
> : This is a large, bare room.  On one wall are mounted quite a few different
> : swords, one of which you recognize as the shortsword Sting.  On another
> : wall there is a myriad of armor.  On a third wall are several dozen helmets.
> 
> This looks quite nice. Too nice, I think. Going through this with the eye
> of an implementor, I see a lot of things that would take a lot of work to
> implement. Some MUDs will have some of these, but does any have them all?

I didn't just make this up.  This is identical to how our system is
set up, right down to the shopkeeper responses.  It looks complex, but
if you break it down into the parts, it's actually fairly simple.

> First, the description of the room is algorithmically generated. This

Yeah.  We finally gave up and went to this a little while ago.  This *does*
result in some slightly 'stale' room descriptions at times, although
we continue to try to expand the function which generates them, adding
in new phrasing and methods of concatinating objects in order to get
something that looks more like a hand-written area.
Upside is that we have an infinitely dynamic system which requires no
specific area building.  Although you certainly *can*, just by plunking
objects down.

> requires the code to be maintaining location of objects within the
> room, in order to associate them with particular walls. The code also

Yeah...I supose this would be a lot more dynamic with a very tight
coordinate system and object placement.  We haven't quite gotten to that
just yet - rooms are stored as six 'surfaces' (== walls), to which objects
can be attached.  Thus, there is a weapons rack attached to one wall,
an armor rack attached to another, etc, which are just transparent
containers.

> has to be able to do dynamic grouping of objects based on their names.

Uh-huh.  This is an important issue, I think.  One that we've touched
on many times on this list.  It's the kind of thing where you can get
away with a very simple figure-out-what's-different routine, or go
crazy with the crowd stuff folks have been discussing recently (taking
time to notice where people are in the crowd, etc).

> Similarly, the description for 'swords' is generated, but uses some
> different rules to extract more detail. It has had to decide what details
> are important (perhaps the MUD scheme is that only "important" details
> are actually stored on the objects). All of this has been done while
> maintaining pleasing English output.

Yeah, detail culling is very important.  Object names were the first
thing we tackled.  The routine first just went through and extracted
the top three details about the object, and that was the name.  Later
we moved to a "what's different about this object?" routine.  It could
still be improved upon tripplefold, I'm sure.

> Sting: (hey, isn't that the Grey Mouser's weapon?) The output requires
> that the MUD have recorded some history on the weapon (or perhaps it is
> on the shopkeeper, but keyed to the specific item - is it there only
> because the sword actually is special, or are such things generated and
> maintained for all buy/sell transactions?).

Yes.  We have character record 'events' that they've witnessed as
part of their memory.  This is extremely easy based on our event
propagation system.  What's difficult is deciding when and how to
compress events from the past, or ditch them altogether.  Secondly
is extracting the information.  I started a brief thread asking folks
about the best attempts at semi-NLP for getting info out of NPCs.
I settled on a keyword approach - all events have a number of keywords
associated with them.  Then there are modifiers that allow you to
extract specific data.  So if some player says, 'where is bubba' the
shopkeeper accesses his memory for objects he names 'Bubba'.  This
results in some great confusion, as well, if the shopkeeper things
you're talking about some *other* Bubba.
Similarly, you can ask 'who bought sting?'  'bought' is a keyword
for EVENT_PURCHASE, 'who' is a modifier looking for the object name,
and 'sting' is the object in question.  Thus the shopkeeper looks in his
memory for an EVENT_PURCHASE involving an object named sting as the direct
object, and if found, reports the name of the actor for the event.

> Sting needs some sharpening. Well, is that added description given to
> everyone who examines it? I would imagine that only those with some
> experience with swords could make that judgement. Would an IQ 60 troll
> see it? Should he?

It's based on your weapons knowledge skill, specifically short blades.
Yes, this is another thing we tackled straight off - greater knowledge
gives you greater perception.  Also, rather than using INT for these
kind of skill rolls, we use perception.  This allows characters which
are highly perceptive but not necessarily smart - ie, the typical
thief character.

> Looking in the purse. Well, the output isn't generic for looking in a
> container, since that would likely be along the lines of "the purse
> contains ....".

Yes, you're right.  I was sloppy there, along with the place where
I said 'shortsword' where it should have said 'the shortsword Sting'.

> Does the 3 coppers total include all money that the
> character is carrying, or does it purposely only report the money in
> the purse (reasonable, but unclear given the output syntax). It is
> quite reasonable to group money in reports, but it should be noted that
> perhaps the purse contained a 2-copper piece as well as two half-copper
> pieces, and the code had to add up the values.

Nods.  Money is a great place for grouping container code, especially
when you throw in the perception rolls.  Thus you get the ogre seeing,
'You are holding some coins', the elf seeing 'You are holding around
fifty coins', and Rain Man seeing 'You are holding 53 coins, one of
which has a small scratch on the bottom of it.'

> [Aside: I've always thought it would be fun to use the old English
> monetary system in a MUD - its so colourful, with farthings, ha'pennies,
> thre'penny bits, shillings, etc.]

Heh.  Currently the money denominations we have are brass rings, steel
rings, golden rings, silver Celendrian pieces, jade Celendrian pieces,
mithril marks, galvorn pieces, and galvorn pentacles.  However we may
well be throwing all of these out as we're axing a few of our more
boring races for something a bit more original.




More information about the mud-dev-archive mailing list