[MUD-Dev] Usability and interface and who the hell is supposed to be playing, anyway? (Was: PK Again)

Adam Wiggins nightfall at user1.inficad.com
Thu Oct 2 01:44:50 CEST 1997


[JCL:]
>    at 09:44 AM, Maddy <maddy at fysh.org> said:
> >I'd like to refer to everyone consistantly all the time, although I
> >do see merits in providing a longer description when looking. 
> >Maybe....
> 
> >  A one-armed elf is here.  He has a beard and is dressed in a 
> >  long flowing robe.
> >  The one-armed elf says, 'Hello.'
> 
> This is essentially a Level Of Detail question (LOD).  The simplest
> model is that of a graphical world.  When the object is far distant,
> and only represented by a couple pixels, who cares how well rendered
> it is?  Conversely when he is 6" away, that rendering quality can be
> important.  

The really nice thing about graphics, of course, is that someone can
'notice' something without it being in the forefront.  Thus you can depict
Bubba smiling and Buffy in the background even if the character is currently
in a battle to the death with his hated enemy.  It's unlikely the player
themselves will notice, of course, but it is still there.

> The same things really applies to textual descriptions of characters
> in text MUDs with a couple extra caveats thrown in:
> 
>   -- Familiarity breeds contempt.  If you've seen Bubba all day every
> day for the last 50 MUD years, you don't want to read his full desc
> every time he enters a room.  Wiggins(?) has written several bits on
> his approach to this point.  The most key of which appears to be
> having the server recall how you last saw the other character, and how
> you are most familiar with seeing him, and on that basis adjudicating
> whether or not you actually recognise him as the character you know.  

Yeah.  I posted quite a bit (from Orion's account, I believe) on Wout's
list.  At the time our mud was just begining to mature into something
semi-unique, and the feature I was most proud of at the time was that.
Now it's just one of many things, but we haven't changed our approach to
it very much at all since we've been so happy with it.  Instead the rest
of the system has been busy catching up with it.

>   The key example given was something on the order of:
> 
>     > l
>     Bubba is here.
>     > l at bubba
>     Bubba has long hair, a beard that reaches his knees, etc 
>     and is wearing very tattered and filthy clothes.
>     > enter inn
>     Bubba goes upstairs.
>     ...
>     A youg clean shaven man comes down stairs.
>     The man claps your shoulder and says, "Boffo!  Don't recognise 
>     me all cleaned up eh?  Its me, Bubba!"
> 
>   One thing that I don't think Wiggins ever touched on is how to
> detect and manage the transition from unknown to to known.  Above, you
> knew Bubba as the hairy woodsman.  Now he's spiffed up.  How does the
> server detect and re-bind your familiarity with Bubba to his new
> clean-shaven self?

I usually tend not to talk about actual techniques or code for doing the
stuff I put forward, except in a very broad manner.  This is mainly because
the details don't interest me all that much.  Code is cheap.

Anyhow, slightly more detail on how we resolve this:

The routine which finds the name for someone or something searches through
your character's memory for the closest match.  This involves finding
a memory node, comparing it to the current 'best match' to see which one
fits closer and replacing the best match with the current node if it fits
better.  By the time you get to the end you should have the closest fit.
We do fudge this a little bit - each memory node stores the actual id number
of the object it identifies, and a special roll is made once you find the
'real' memory node.  This involves checking the familiarity of that character
with some other variables (character's perception, how long it's been since
they last saw them, how different their appearance is).  Criteria for
non-character objects is not fully fleshed out just yet...location is still
the main factor for recognition.

Also, we have delayed recognition.  Thus:

Bob waves a black runesword at you.
<pause>
You recognize Bob's black runesword as the mighty blade Stormbringer!

Here the character had probably read about stormbringer in a book somewhere,
attaching a (faint) memory node about the object to them.  Again a fudge -
memory nodes about famous things tend to persist for longer, even for something
you've never seen.
By the same token:

A stately gentleman smiles at you.
<pause>
You recognize the stately gentleman as Bob Thorpfoot, King of the Realm!

This gave us a somewhat unexpected side-effect that I rather liked:

A clean-shaven, well-groomed young man is standing here.
You recognize the clean-shaven man as Bubba!

Since I liked that, we went for the obvious addition:

You recognize the clean-shaven man as your old friend Bubba, whom you haven't
seen in three years!

>   -- Comparitive significance.  You know Bubba well, and can recognise
> him on sight.  As such you want the minimal desciption as above. 
> However, now Bubba is in a crowd of 500 others milling about a room. 
> Glancing in the room you are should not see "A large crowd of people
> and Bubba are here".  Bubba's familiarity should be drowned out in the
> mass of other data represented by the crowd.  
> 
> Nathan has written some interesting pieces on this area specifically,
> mot especially in the handling of crowds and loss off detail due to
> data overload.

We use the data clipping to actually define the amount of detail.  Thus,
when the player types 'look', we simply query the object they are owned
by for a description of the nearby area that fits into between two and
three lines.  The code will use as little or as much detail is as necessary
to fill those lines.  This, of course, allows for sliding detail levels.
Instead of the normal briefed mode which just gags out the room desc, the
user can set their level of detail to whatever they like.  While it's
true that setting their detail to, say, 20 lines per 'look' means that
they get a whole bunch of extra info, this doesn't bother me too much,
as they still have to read through it all.  I consider this similar to
taking a very close look at a large crowd to determine who's all there.
Regardless, five hundred people are going to be hard to sort through.
Of course, here's a place where a good coordinate-based system takes care
of some problems.  If Bubba's on *this* side of the crowd, you spot him
straight off.  If he's on the opposite side, your view of him is actually
blocked, so forget it.




More information about the mud-dev-archive mailing list