<!-- 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> [ <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="msg01145.html">Previous</a> | <a href="msg01147.html">Next</a> ] Thread: [ <a href="msg01411.html">Previous</a> | <a href="msg01158.html">Next</a> ] Index: [ <A HREF="author.html#01146">Author</A> | <A HREF="#01146">Date</A> | <A HREF="thread.html#01146">Thread</A> ] <!--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 <<A HREF="mailto:mud-dev#null,net">mud-dev#null,net</A>></LI> <LI><em>Subject</em>: NPC AI and Learning.</LI> <LI><em>From</em>: Michael Hohensee <<A HREF="mailto:michael#sparta,mainstream.net">michael#sparta,mainstream.net</A>></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" <efindel#io,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="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> [ <a href="../">Other Periods</a> | <a href="../../">Other mailing lists</a> | <a href="/search.php3">Search</a> ] </center> <hr> </body> </html>