1997Q3/
<!-- MHonArc v2.4.4 -->
<!--X-Subject: NPC AI and Learning. -->
<!--X-From-R13: [vpunry Vburafrr <zvpunryNfcnegn.znvafgernz.arg> -->
<!--X-Date: Sun, 07 Sep 1997 19:51:13 +0000 -->
<!--X-Message-Id: 3413048A.3DADEA7E#sparta,mainstream.net -->
<!--X-Content-Type: text/plain -->
<!--X-Head-End-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>MUD-Dev message, NPC AI and Learning.</title>
<!-- meta name="robots" content="noindex,nofollow" -->
<link rev="made" href="mailto:michael#sparta,mainstream.net">
</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="msg01145.html">Previous</a>
&nbsp;|&nbsp;<a href="msg01147.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Thread:&nbsp;
[&nbsp;<a href="msg01411.html">Previous</a>
&nbsp;|&nbsp;<a href="msg01158.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Index:&nbsp;
[&nbsp;<A HREF="author.html#01146">Author</A>
&nbsp;|&nbsp;<A HREF="#01146">Date</A>
&nbsp;|&nbsp;<A HREF="thread.html#01146">Thread</A>
&nbsp;]

<!--X-TopPNI-End-->
<!--X-MsgBody-->
<!--X-Subject-Header-Begin-->
<H1>NPC AI and Learning.</H1>
<HR>
<!--X-Subject-Header-End-->
<!--X-Head-of-Message-->
<UL>
<LI><em>To</em>: MUD-Dev &lt;<A HREF="mailto:mud-dev#null,net">mud-dev#null,net</A>&gt;</LI>
<LI><em>Subject</em>: NPC AI and Learning.</LI>
<LI><em>From</em>: Michael Hohensee &lt;<A HREF="mailto:michael#sparta,mainstream.net">michael#sparta,mainstream.net</A>&gt;</LI>
<LI><em>Date</em>: Sun, 07 Sep 1997 15:46:18 -0400</LI>
<LI><em>Sender</em>: <A HREF="mailto:michael#sparta,mainstream.net">michael#sparta,mainstream.net</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 believe there was a thread on the subject of how to make NPCs
act/fight in a more intelligent manner.  Instead of writing complex
programs, or mirroring the actions of a (supposedly) intelligent player,
one could institute a learning process for NPCs.

The idea (cheerfully stolen from one of the "Berserker" stories) is
based on the fact that for any given situation, there are a certain
number of possible actions to take.  Which action is actually taken by
the NPC is determined randomly from the availible choices. 

If the NPC is successful (ie, wins a game, gains something, or survives
a fight) the choicelist stays the same.  If the NPC loses, all choices
it selected are deleted as possibilities for future events.

At first, this creates increadably stupid NPCs.  They'll go around
hitting themselves in combat, attacking walls, trees, and large
monsters, and basicly losing at every turn.  But as time goes on, they
lose less and less, as the negative behaviors are wiped from the
possible choices.

So we end up with fiendishly efficient NPCs, while retaining a random
element for variety. :)

The only problem with this is the tremendous overhead it would generate
if implemented per creature.  Perhaps a better way would be to have one
unified "action bank" which all NPCs draw from.  That would be something
special.  If Bubba the goblin slayer goes out and stomps lots of goblins
to dust, they'll eventually become more resistant (as possible) to his
attacks.  If Bubba then tries to seek greener (and wimpier) pastures,
he'll find that the neighboring orc tribe has heard about the new goblin
tactics, and have an interesting time of it. :)

This effectively makes killing creatures very difficult.  The only safe
way I can see to kill NPCs under this system would be to either grossly
outclass them, or kill them instantly, before they can react. :)

Any comments on this?

-- 
Michael Hohensee       michael#sparta,mainstream.net
<A  HREF="http://www.geocities.com/SiliconValley/Heights/9025/">http://www.geocities.com/SiliconValley/Heights/9025/</A>
      Finger me for my PGP Public Key, or use: 
<A  HREF="http://sparta.mainstream.net/michael/pgpkey.txt">http://sparta.mainstream.net/michael/pgpkey.txt</A>

</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="01158" HREF="msg01158.html">Re: [MUD-Dev]  NPC AI and Learning.</A></strong>
<ul compact><li><em>From:</em> "Travis S. Casey" &lt;efindel#io,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="msg01145.html">Re: MUD Development Digest</A></STRONG>
</LI>
<LI>Next by Date:
<STRONG><A HREF="msg01147.html">Re: [MUD-Dev]  Invitation to mudlist, a mailinglist for concepts in mud design</A></STRONG>
</LI>
<LI>Prev by thread:
<STRONG><A HREF="msg01411.html">RE: [MUD-Dev] Affecting the world</A></STRONG>
</LI>
<LI>Next by thread:
<STRONG><A HREF="msg01158.html">Re: [MUD-Dev]  NPC AI and Learning.</A></STRONG>
</LI>
<LI>Index(es):
<UL>
<LI><A HREF="index.html#01146"><STRONG>Date</STRONG></A></LI>
<LI><A HREF="thread.html#01146"><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>Re: [MUD-Dev] Affecting the world</STRONG>, <EM>(continued)</EM>
<ul compact>
<ul compact>
<LI><strong><A NAME="01343" HREF="msg01343.html">Re: [MUD-Dev] Affecting the world</A></strong>, 
Jon A. Lambert <a href="mailto:jlsysinc#ix,netcom.com">jlsysinc#ix,netcom.com</a>, Sun 21 Sep 1997, 19:16 GMT
</LI>
</ul>
<LI><strong><A NAME="01407" HREF="msg01407.html">Re: [MUD-Dev] Affecting the world</A></strong>, 
Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Wed 24 Sep 1997, 06:01 GMT
<UL>
<LI><strong><A NAME="01437" HREF="msg01437.html">Re: [MUD-Dev] Affecting the world</A></strong>, 
Jon A. Lambert <a href="mailto:jlsysinc#ix,netcom.com">jlsysinc#ix,netcom.com</a>, Thu 25 Sep 1997, 17:18 GMT
</LI>
</UL>
</LI>
<LI><strong><A NAME="01411" HREF="msg01411.html">RE: [MUD-Dev] Affecting the world</A></strong>, 
Caliban Tiresias Darklock <a href="mailto:caliban#darklock,com">caliban#darklock,com</a>, Wed 24 Sep 1997, 16:24 GMT
</LI>
</ul>
</LI>
<LI><strong><A NAME="01146" HREF="msg01146.html">NPC AI and Learning.</A></strong>, 
Michael Hohensee <a href="mailto:michael#sparta,mainstream.net">michael#sparta,mainstream.net</a>, Sun 07 Sep 1997, 19:51 GMT
<UL>
<LI><strong><A NAME="01158" HREF="msg01158.html">Re: [MUD-Dev]  NPC AI and Learning.</A></strong>, 
Travis S. Casey <a href="mailto:efindel#io,com">efindel#io,com</a>, Mon 08 Sep 1997, 15:29 GMT
<UL>
<LI><strong><A NAME="01160" HREF="msg01160.html">Re: [MUD-Dev]  NPC AI and Learning.</A></strong>, 
Alex Oren <a href="mailto:alexo#bigfoot,com">alexo#bigfoot,com</a>, Mon 08 Sep 1997, 16:31 GMT
</LI>
<LI><strong><A NAME="01163" HREF="msg01163.html">Re: [MUD-Dev]  NPC AI and Learning.</A></strong>, 
Michael Hohensee <a href="mailto:michael#sparta,mainstream.net">michael#sparta,mainstream.net</a>, Mon 08 Sep 1997, 17:23 GMT
</LI>
</UL>
</LI>
</UL>
</LI>
<LI><strong><A NAME="01145" HREF="msg01145.html">Re: MUD Development Digest</A></strong>, 
Matthew R. Sheahan <a href="mailto:chaos#crystal,palace.net">chaos#crystal,palace.net</a>, Sun 07 Sep 1997, 16:44 GMT
</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>