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

Par Winzell zell at alyx.com
Sun Dec 6 17:18:59 CET 1998


Richard Woolcock wrote:
> 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.

I don't see the stack-based system so much as alternative to a state-base=
d one
as extending it. Many years ago I did write a system such as what Eli des=
cribes,
for an LPMud. It worked quite well, and I was able to use it to allow our
"mascot" NPC to solve the simplest game quest.

For this, the stack is very convenient. Even so, this simple mascot grew =
quite
hairy when all possible permutations of events had to be taken into accou=
nt.
It's very necessary to be able to do priority interrupts, like entering a=
 brief
"panic heal" state during combat.

In a flat state machine, when such an urge is satisfied, all of the NPC's
current goals in life must essentially be reevaluated. The transitions th=
en grow
to be very complex functions.

On the other hand, there is the danger of relying too heavily on the stac=
k and
this can cause ludicrous behaviour. If several pushes occur, like:

 - walking down the road state [encounter monster]
 - combat state [run low on hp]
 - healing state [realize we have no gold]
 - walk aimlessly looking for trash to sell state [encounter monster]
...

(and this is what my mascot did) then by the time everything has popped d=
own to
the basic level, we've found money, healed, and bested the beasts, an hou=
r might
have passed and we've mostly likely criss-crossed the world several times=
. The
same aspect of stacking tasks that makes it easy to define behaviour in m=
akes
that same behaviour look very silly. Infact, in my code I had to include =
a way
for the behaviour code itself to shortcut and wipe out the stack - essent=
ially
throwing an exception, needing to skip up several call layers. I believe =
the
stack is useful but must be used with discipline.

The guys at "The Motion Factory" sell a product which includes a behaviou=
r
programming module, consisting of a scripting language, an API to their
motion-control library (they work with 3D actors), and "Hierarchical Fini=
te
State Machines". I have only an intuitive understand of what HFSM's are, =
but it
seems likely they could be help reduce the complexity growth of FSM's, an=
d
perhaps model behaviour better than the stack, as well?
Has somebody on this list used them?

A small blurb can be found at=20

        http://www.motion-factory.com/products/features_programming.html

for the interested.

P=E4r




More information about the mud-dev-archive mailing list