<!-- MHonArc v2.4.4 --> <!--X-Subject: [MUD-Dev] npc memory and reactions --> <!--X-From-R13: Xnzrf Ivyfba <wjvyfbaNebpurfgre.ee.pbz> --> <!--X-Date: Sat, 5 Sep 1998 07:02:27 -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> [ <a href="../">Other Periods</a> | <a href="../../">Other mailing lists</a> | <a href="/search.php3">Search</a> ] <br clear=all><hr> <!--X-Body-Begin--> <!--X-User-Header--> <!--X-User-Header-End--> <!--X-TopPNI--> Date: [ <a href="msg00961.html">Previous</a> | <a href="msg00963.html">Next</a> ] Thread: [ <a href="msg00969.html">Previous</a> | <a href="msg00963.html">Next</a> ] Index: [ <A HREF="author.html#00962">Author</A> | <A HREF="#00962">Date</A> | <A HREF="thread.html#00962">Thread</A> ] <!--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 <<A HREF="mailto:jwilson#rochester,rr.com">jwilson#rochester,rr.com</A>></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 <rnicoll#lostics,demon.co.uk></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 <caliban#darklock,com></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> [ <a href="../">Other Periods</a> | <a href="../../">Other mailing lists</a> | <a href="/search.php3">Search</a> ] </center> <hr> </body> </html>