1998Q3/
<!-- MHonArc v2.4.4 -->
<!--X-Subject: [MUD&#45;Dev] npc memory and reactions -->
<!--X-From-R13: Xnzrf Ivyfba <wjvyfbaNebpurfgre.ee.pbz> -->
<!--X-Date: Sat, 5 Sep 1998 07:02:27 &#45;0700 -->
<!--X-Message-Id: 98090509551200.23580@d185d1e96 -->
<!--X-Content-Type: text/plain -->
<!--X-Head-End-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>MUD-Dev message, [MUD-Dev] npc memory and reactions</title>
<!-- meta name="robots" content="noindex,nofollow" -->
<link rev="made" href="mailto:jwilson#rochester,rr.com">
</head>
<body background="/backgrounds/paperback.gif" bgcolor="#ffffff"
      text="#000000" link="#0000FF" alink="#FF0000" vlink="#006000">

  <font size="+4" color="#804040">
    <strong><em>MUD-Dev<br>mailing list archive</em></strong>
  </font>
      
<br>
[&nbsp;<a href="../">Other Periods</a>
&nbsp;|&nbsp;<a href="../../">Other mailing lists</a>
&nbsp;|&nbsp;<a href="/search.php3">Search</a>
&nbsp;]
<br clear=all><hr>
<!--X-Body-Begin-->
<!--X-User-Header-->
<!--X-User-Header-End-->
<!--X-TopPNI-->

Date:&nbsp;
[&nbsp;<a href="msg00961.html">Previous</a>
&nbsp;|&nbsp;<a href="msg00963.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Thread:&nbsp;
[&nbsp;<a href="msg00969.html">Previous</a>
&nbsp;|&nbsp;<a href="msg00963.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Index:&nbsp;
[&nbsp;<A HREF="author.html#00962">Author</A>
&nbsp;|&nbsp;<A HREF="#00962">Date</A>
&nbsp;|&nbsp;<A HREF="thread.html#00962">Thread</A>
&nbsp;]

<!--X-TopPNI-End-->
<!--X-MsgBody-->
<!--X-Subject-Header-Begin-->
<H1>[MUD-Dev] npc memory and reactions</H1>
<HR>
<!--X-Subject-Header-End-->
<!--X-Head-of-Message-->
<UL>
<LI><em>To</em>: <A HREF="mailto:mud-dev#kanga,nu">mud-dev#kanga,nu</A></LI>
<LI><em>Subject</em>: [MUD-Dev] npc memory and reactions</LI>
<LI><em>From</em>: James Wilson &lt;<A HREF="mailto:jwilson#rochester,rr.com">jwilson#rochester,rr.com</A>&gt;</LI>
<LI><em>Date</em>: Sat, 5 Sep 1998 09:00:45 -0400</LI>
<LI><em>Reply-To</em>: <A HREF="mailto:mud-dev#kanga,nu">mud-dev#kanga,nu</A></LI>
</UL>
<!--X-Head-of-Message-End-->
<!--X-Head-Body-Sep-Begin-->
<HR>
<!--X-Head-Body-Sep-End-->
<!--X-Body-of-Message-->
<PRE>

I've been thinking about how one could best implement
certain scenarios, mainly social ones involving NPC reactions
and memory. (I think these issues generalize to certain sorts of
special effects as well, but am most interested in social effects.)

For instance, suppose that when Robot Zeke sees Tom wearing 
a swastika, he immediately reports him to the local ADL and 
Tom is brought in for questioning...

First, how does Zeke get the information about Tom's sartorial 
faux pas? Perhaps Zeke is the consumer of a stream of 'sensory 
events', i.e. some machine-reasonable encoding of "You see 
Tom wearing a swastika".  When Tom does something notable,
he broadcasts a stream of such events to all who can sense him. 
Ideally, only events appropriate to the receiver would be sent (or 
there'd be some wasted effort there). 

Another possibility is that Tom's coming into sight sends just
one event, "Here's Tom", to Zeke, and then it is Zeke's job to 
inspect Tom for the swastika. This way, viewers don't get any
information they don't ask for; conversely, Zeke will have to
scan every object that comes into sight, rather than simply 
waiting for a 'you see swastika' event.

I believe this is the 'double dispatch' problem. To viewers who
couldn't care less what Tom's wearing, Tom should seem like
just another guy (and no irrelevant information should be sent).
BUT to viewers who care about the swastika, Tom should be
seen as a swastika-wearer AND a guy without the swastika 
should be seen as just another guy. This bleeds into the 'different 
people see differently' (or 'see different', as Apple would put it -
feh!) thread of a while back, which I am very interested in.

A bit of a different issue has to do with the internal representations
of 'the Tom object' and 'the Zeke object'. If Zeke wants to 
remember Tom (so he can still be mad even if Tom takes off the 
swastika), does he store some information about Tom in 'the
Zeke object'? Or does he set a 'cookie' in 'the Tom object' 
which he then can look for upon re-encountering Tom? Both
have pros and cons... I will call the former method 'Zeke saves',
and the latter 'Tom saves'.

'Zeke saves' has the advantage that the information Zeke retains
might be imperfect; that is, he might mistake someone else for
Tom later if the way he remembered Tom was 'squat and balding
and white and middle-aged and male [etc]', and if he runs into
Bill who also happens to meet all (or maybe just MOST?) of
those criteria. One could use some fuzzy logic sort of thing here,
where if all the squat white men Zeke meets are evil, he builds up
a hatred for all squat white men and a dislike for white people
in general. I think there would also have to be a division 
between short-term and long-term memory, so only the most
significant facts get permanently saved; otherwise Zeke's memory
could grow quite large and unwieldy. If there is also a mechanism
for transmitting memories from NPC to NPC (possibly distorting
them along the way) this could be quite a nice system.

'Tom saves' has the advantage that it can be implemented very
simply by just adding a new slot or property to 'the Tom object',
which other anti-nazis can then check quite easily. This also
bundles all the information about Tom inside 'the Tom object', 
so if he dies or leaves the game the now-irrelevant info
can be removed. However, using cookies is a little too exact
for my taste; that is, if Tom becomes persona non grata with
Zeke, then takes off his swastika and goes across town to visit
with Phyllis, how could she possibly know immediately how 
Zeke felt  about Tom? One could build in a time delay, I suppose, 
but it'd be kind of nice to give Tom the chance to save his 
reputation by killing Zeke before he can spread the word, or 
something similar. This technique could also lead to 'cookie 
buildup', where cookies that are no longer relevant accumulate. 
However, it becomes more difficult to determine whether a cookie 
is in fact irrelevant - if Zeke's cookie turns all of Happytown 
against Tom, and Zeke is killed a week later (by which time 
everyone's heard the news), Tom shouldn't suddenly go back 
to 'just some guy'.

James


</PRE>

<!--X-Body-of-Message-End-->
<!--X-MsgBody-End-->
<!--X-Follow-Ups-->
<HR>
<ul compact><li><strong>Follow-Ups</strong>:
<ul>
<li><strong><A NAME="01060" HREF="msg01060.html">[MUD-Dev] Re: npc memory and reactions</A></strong>
<ul compact><li><em>From:</em> Ross Nicoll &lt;rnicoll#lostics,demon.co.uk&gt;</li></ul>
<li><strong><A NAME="00963" HREF="msg00963.html">[MUD-Dev] Re: npc memory and reactions</A></strong>
<ul compact><li><em>From:</em> Caliban Tiresias Darklock &lt;caliban#darklock,com&gt;</li></ul>
</UL></LI></UL>
<!--X-Follow-Ups-End-->
<!--X-References-->
<!--X-References-End-->
<!--X-BotPNI-->
<UL>
<LI>Prev by Date:
<STRONG><A HREF="msg00961.html">[MUD-Dev] Re: Wild idea.. :)</A></STRONG>
</LI>
<LI>Next by Date:
<STRONG><A HREF="msg00963.html">[MUD-Dev] Re: npc memory and reactions</A></STRONG>
</LI>
<LI>Prev by thread:
<STRONG><A HREF="msg00969.html">[MUD-Dev] Re: Equipment Fit</A></STRONG>
</LI>
<LI>Next by thread:
<STRONG><A HREF="msg00963.html">[MUD-Dev] Re: npc memory and reactions</A></STRONG>
</LI>
<LI>Index(es):
<UL>
<LI><A HREF="index.html#00962"><STRONG>Date</STRONG></A></LI>
<LI><A HREF="thread.html#00962"><STRONG>Thread</STRONG></A></LI>
</UL>
</LI>
</UL>

<!--X-BotPNI-End-->
<!--X-User-Footer-->
<!--X-User-Footer-End-->
<ul><li>Thread context:
<BLOCKQUOTE><UL>
<LI><STRONG>[MUD-Dev] Re: [CODE QUESTION] How to encode floats into bytes?</STRONG>, <EM>(continued)</EM>
<ul compact>
<ul compact>
<LI><strong><A NAME="00997" HREF="msg00997.html">[MUD-Dev] Re: [CODE QUESTION] How to encode floats into bytes?</A></strong>, 
Adam J. Thornton <a href="mailto:adam#phoenix,Princeton.EDU">adam#phoenix,Princeton.EDU</a>, Wed 09 Sep 1998, 22:30 GMT
<UL>
<LI><strong><A NAME="01000" HREF="msg01000.html">[MUD-Dev] Re: [CODE QUESTION] How to encode floats into bytes?</A></strong>, 
Ben Greear <a href="mailto:greear#cyberhighway,net">greear#cyberhighway,net</a>, Thu 10 Sep 1998, 01:31 GMT
</LI>
</UL>
</LI>
</ul>
</ul>
</LI>
<LI><strong><A NAME="00975" HREF="msg00975.html">[MUD-Dev] (fwd) CODE RELEASE: [server] SlashMUD (MacOS mud server)</A></strong>, 
J C Lawrence <a href="mailto:claw#greek,kanga.nu">claw#greek,kanga.nu</a>, Sun 06 Sep 1998, 22:04 GMT
<LI><strong><A NAME="00969" HREF="msg00969.html">[MUD-Dev] Re: Equipment Fit</A></strong>, 
Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Sun 06 Sep 1998, 16:28 GMT
<LI><strong><A NAME="00962" HREF="msg00962.html">[MUD-Dev] npc memory and reactions</A></strong>, 
James Wilson <a href="mailto:jwilson#rochester,rr.com">jwilson#rochester,rr.com</a>, Sat 05 Sep 1998, 14:02 GMT
<UL>
<LI><strong><A NAME="00963" HREF="msg00963.html">[MUD-Dev] Re: npc memory and reactions</A></strong>, 
Caliban Tiresias Darklock <a href="mailto:caliban#darklock,com">caliban#darklock,com</a>, Sat 05 Sep 1998, 14:41 GMT
<UL>
<LI><strong><A NAME="00964" HREF="msg00964.html">[MUD-Dev] Re: npc memory and reactions</A></strong>, 
James Wilson <a href="mailto:jwilson#rochester,rr.com">jwilson#rochester,rr.com</a>, Sat 05 Sep 1998, 16:29 GMT
</LI>
<LI><strong><A NAME="00972" HREF="msg00972.html">[MUD-Dev] Re: npc memory and reactions</A></strong>, 
T. Alexander Popiel <a href="mailto:popiel#snugharbor,com">popiel#snugharbor,com</a>, Sun 06 Sep 1998, 18:26 GMT
<UL>
<LI><strong><A NAME="00973" HREF="msg00973.html">[MUD-Dev] Re: npc memory and reactions</A></strong>, 
Richard Woolcock <a href="mailto:KaVir#dial,pipex.com">KaVir#dial,pipex.com</a>, Sun 06 Sep 1998, 18:46 GMT
</LI>
</UL>
</LI>
</UL>
</LI>
</UL>
</LI>
</UL></BLOCKQUOTE>

</ul>
<hr>
<center>
[&nbsp;<a href="../">Other Periods</a>
&nbsp;|&nbsp;<a href="../../">Other mailing lists</a>
&nbsp;|&nbsp;<a href="/search.php3">Search</a>
&nbsp;]
</center>
<hr>
</body>
</html>