[MUD-Dev] Re: Stack-Based NPC AI

Richard Woolcock KaVir at dial.pipex.com
Mon Dec 7 01:04:06 CET 1998


Eli Stevens (KiZurich) wrote:
> 
> [Emil Eifrem, Re: Spell components, chemistry and the like...]
> > I've never played on a mud that has an AI worth mentioning. :(
> 
> This statement (which was made some time ago, I should add) got me thinking
> on ways to design a simple, yet powerful "tasking" (for lack of a better
> word) system for a MUD's mobs.  I had read on the web about using a stack to
> simulate a mob's priorities, and was wondering if anyone here had attempted
> (successfully or not) to design/implement anything like what I describe below.
> (Please note that I assume the MUD has a system in place for mobs to find
> their way to a given room, mobile, or player.)

[snip example stack-based system]

The simplest solutions I've seen are purely state-based.  Each mob can be
in one of a number of states, each of which can lead on to other states.
Imagine an animal such as a wolf, for example:

Default:
   If being attacked, attack person back
   If hurt, lick wounds
   If thirsty, drink
   If hungry, eat
   If tired, sleep
When sleeping:
   If attacked, wake up (default state)
   If hungry or thirsty, wake up (default state)
   If no longer tired, wake up (default state)
When eating:
   If being attacked, attack person back
   If more thirsty than hungry, start drinking
   If no longer hungry, go back to default state
When drinking:
   If being attacked, attack person back
   If more hungry than thirsty, start eating
   If no longer thirsty, go back to default state
When fighting:
   If losing, try and run away

Once you have something simple like that in place, you can start
making the code a little more complex - the wolf might have to 
hunt down other animals for example, or perhaps she brings back
food for her pups.

The only advantage a stack-based system has over a state-based
system is that the former method allows mobs to 'remember'
situations they were previously doing and go back to them at a 
later point - but for animal-level intelligence, I don't think 
that would be necessary.

If you're planning immitation of human-level intelligence, your
greatest problem is going to be mob speech.  You could also
store the 'memory' as a list rather than a stack, so that things 
can be inserted - thus allowing mobs to plan things ahead (next
week, Bubba has to go and pay his Council Tax).

KaVir.




More information about the mud-dev-archive mailing list