Skotos Forums  

Go Back   Skotos Forums > General Skotos > Articles > Current Columnists > Trials, Triumphs & Trivialities

Reply
 
Thread Tools Rate Thread Display Modes
  #1  
Old 12-03-2001, 11:47 AM
ShannonA ShannonA is offline
Administrator
 
Join Date: Aug 2000
Location: Berkeley, CA
Posts: 2,357
#51: Building Blocks: Names

I recently received the following question, and offered up the following answer, via email. With the questioner's permission I'm reprinting them here as I think they're of general interest.

>Regarding your latest article about Names, I wanted to ask if
>you have any advice on handling a number of like objects in
>the same proximity that don't differ in any major way. The
>example I'll use is 8 chairs around a dining room table. How
>do we allow our players to specify a particular chair at the
>table that they want to sit in? It seems strange to break
>a table up into several proxes just to be able to manipulate
>a specific chair and not every home would have name plates
>on each chair. Generally speaking, the chairs around a table
>are all exactly alike except a few minor differences like the
>tiny scratches on its legs and sides, but I don't believe
>most people would search for the tiny scratches in a wood
>varnish to find a particular chair. So I'm just curious if
>you had any insight into this matter.

Yeah, we've thought about that one quite a lot, because it's a continuing
problem here. In general, we've come to the conclusion that this isn't an
issue of naming at all. Rather it's an issue with how the parser (and how
we as people) deal with multiple substantially identical items.

Here's a couple of possible solutions:

1. Have your eight chairs each be unique, discrete objects in your room.
But, treat them specially because they have the ability to be "filled" or
"used up". (This flag might end up being useful in other parts of your
system too ... say if you have an oven with a cake in it, who knows what
else ...)

Let each fillable object have two states: full and empty. By default, all
chairs are empty, but when someone interacts with a chair, most likely by
sitting in it, it becomes full. Based on the fullness or emptiness of
chairs, modify the description of your room (basically, by having "full"
and "empty" descriptions):

Joe, John, and Diane are sitting in chairs. There are five empty chairs
about the table.

Make sure that when a chair is filled, the "empty" adjective/description
goes away; and when a chair is unfilled, the "empty" adjective/description
returns.

Finally, only let people sit in empty objects, not full ones.

1b. OK, that works great to first half of the problem--the fact that chairs
can be used up, but doesn't deal with the fact that they're substantially
identical.

So just set up your parser so that whenever a user tries to interact with a
substantially identical item, it arbitrarily chooses one from the set or
randomly chooses one from the set.

> look

Joe, John, and Diane are sitting in chairs. There are five empty
chairs near the table.

> sit in chair

[Here, the system decides you can't mean the full chair, because that's
illegal, so only considers the five empty chairs, figures out that they're
all substantially identical by whatever algorithm you use to determine
that, so picks the first one.]

You sit in the first empty chair.

> look

Joe, John, Diane, and you are sitting in chairs. There are four empty
chairs near the table.

2. A totally different approach: again, figure that chairs (or other
objects) can be either empty or full, but this time just treat it all as
one object "eight chairs" and place a limit on it "eight people" or "2000
pounds" or whatever you prefer. You then only have to create one object,
which might be a little easier (though allowing for the adjective "eight"
might be tricky, since it's usually used for counting), and it still looks
about the same. (The trick here is that if you have identical objects it
really *doesn't* matter which is used for what.) You then get output like this:

> look
There are eight chairs near the table. Joe, John, and Diane are
sitting in chairs.

[As you can see the naming is a little trickier here. "eight chairs" is
probably what I call the brief, but somehow the system has to be able to
use just the word "chairs" for the further description -- which means you
might have to set a special flag for "multiple object" or something, so
your system can figure out to only use the counting number for certain
types of description.]

> sit in chair

[Here's the point where the system realizes that "chair" is another name
for the "eight chairs" object, looks,
sees there is room for you, then allows you to sit down.]

You sit in a chair.

> look
There are eight chairs near the table. Joe, John, Diane, and You are
sitting in chairs.

Hope that helps.
Reply With Quote
  #2  
Old 12-03-2001, 03:36 PM
Anjalena Anjalena is offline
Junior Member
 
Join Date: Dec 2001
Location: Bangor, ME
Posts: 2
Send a message via ICQ to Anjalena
RE: #51: Building Blocks: Names

Well, I'm the mysterious author of the above email. I thought I would post a follow-up reply giving a bit more detail than I did originally. =)

I'm a little abashed with regards to my lack of clarity in my question, Shannon. Uriel and I have struggled with the answer to the question and came up with the same answers you gave as well. But my dilemna came into play when it actually matters in _which_ chair you sit around the table. For example, I have a character who is a high-ranking noblewoman. She has a large dining hall for dinner parties and gatherings. But as you know,
the nobility have a flair for needless classifications and pomp. As such, they tend to pay particular attention to where certain people sit at which tables as it tells a tale of their importance. So, when it _does_ matter which chair you sit in around the table... how do you handle that? Gets a bit tricky.

Thanks for all the help,

Anjalena
__________________
Mothers tell your children; Be quick you must be strong;
Life is never simple; Love is never wrong;
Remember what they taught you; How much of it is fear?;
Refuse to hand it down; The Legacy stops here!
--Melissa Etheridge
Reply With Quote
  #3  
Old 12-03-2001, 04:16 PM
ShannonA ShannonA is offline
Administrator
 
Join Date: Aug 2000
Location: Berkeley, CA
Posts: 2,357
Re: RE: #51: Building Blocks: Names

Quote:
Originally posted by Anjalena
I'm a little abashed with regards to my lack of clarity in my question, Shannon. Uriel and I have struggled with the answer to the question and came up with the same answers you gave as well. But my dilemna came into play when it actually matters in _which_ chair you sit around the table. For example, I have a character who is a high-ranking noblewoman. She has a large dining hall for dinner parties and gatherings. But as you know,
the nobility have a flair for needless classifications and pomp. As such, they tend to pay particular attention to where certain people sit at which tables as it tells a tale of their importance. So, when it _does_ matter which chair you sit in around the table... how do you handle that? Gets a bit tricky.
Tricky indeed. I think the main issue you need to concentrate on here, however, is that the chairs are *not* substantially identical if there's some way to differentiate between them. And, in the situation that you describe there is: namely, how close a chair is to the head of the table--or to to the most important person at a table.

If you want to have a really proper dinner party, you could have details like the following:

* head chair
* first righthand chair
* second righthand chair
* third righthand chair
* first lefthand chair
* second lefthand chair
* third lefthand chair
* foot chair

[I suspect this exact naming scheme might not be doable in the Skotos parser because of the use of cardinals in the briefs, which means a slightly less intuitive name might be required.]

Hopefully your parser will then show something like this:

Billy is sitting in the head chair, Denise is sitting in the first righthand chair, Sal is sitting in the first lefthand chair, and Colin is sitting in the third lefthand chair. The second righthand chair, the second lefthand chair, the third righthand chair, and the foot chair are empty.

It's not pretty, but it does get the idea across.

If you wanted a little more abstraction, which is less realistic, but more easily intuitive in a textual game, you might create details like:

* table head
* table middle
* table foot

Then characters could just choose which third of the table to sit at based on their station:

Billy, Denise and Sal are sitting at the table head. Colin is sitting at the table foot.

So, those are my first thoughts. Any other ideas or considerations would be very welcome.

Shannon

Reply With Quote
  #4  
Old 12-04-2001, 03:44 AM
Anjalena Anjalena is offline
Junior Member
 
Join Date: Dec 2001
Location: Bangor, ME
Posts: 2
Send a message via ICQ to Anjalena
Very interesting. I don't believe we'd thought of things in that way before so that's quite helpful. Unless we'd figured out something better, we were just thinking about doing nameplates on chairs or something... which would be a bit annoying since the names would have to change for each new party. And it wouldn't be very realistic in a more common home.

Thanks so much for the insight, Shannon. I hope we can come back and bother you when we have other brainteasers that confound our grey matter. *grin*

Anjalena
__________________
Mothers tell your children; Be quick you must be strong;
Life is never simple; Love is never wrong;
Remember what they taught you; How much of it is fear?;
Refuse to hand it down; The Legacy stops here!
--Melissa Etheridge
Reply With Quote
Reply

Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Forum Jump


All times are GMT -8. The time now is 04:23 AM.


Powered by vBulletin® Version 3.7.1
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.