[MUD-Dev] Re: Stack-Based NPC AI
zell at alyx.com
Sun Dec 6 17:18:59 New Zealand Daylight Time 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=
as extending it. Many years ago I did write a system such as what Eli des=
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 =
hairy when all possible permutations of events had to be taken into accou=
It's very necessary to be able to do priority interrupts, like entering a=
"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=
to be very complex functions.
On the other hand, there is the danger of relying too heavily on the stac=
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=
the basic level, we've found money, healed, and bested the beasts, an hou=
have passed and we've mostly likely criss-crossed the world several times=
same aspect of stacking tasks that makes it easy to define behaviour in m=
that same behaviour look very silly. Infact, in my code I had to include =
for the behaviour code itself to shortcut and wipe out the stack - essent=
throwing an exception, needing to skip up several call layers. I believe =
stack is useful but must be used with discipline.
The guys at "The Motion Factory" sell a product which includes a behaviou=
programming module, consisting of a scripting language, an API to their
motion-control library (they work with 3D actors), and "Hierarchical Fini=
State Machines". I have only an intuitive understand of what HFSM's are, =
seems likely they could be help reduce the complexity growth of FSM's, an=
perhaps model behaviour better than the stack, as well?
Has somebody on this list used them?
A small blurb can be found at=20
for the interested.
More information about the MUD-Dev