Presentation is loading. Please wait.

Presentation is loading. Please wait.

Artificial Intelligence in Game Design Representing NPCs as Finite State Machines.

Similar presentations


Presentation on theme: "Artificial Intelligence in Game Design Representing NPCs as Finite State Machines."— Presentation transcript:

1 Artificial Intelligence in Game Design Representing NPCs as Finite State Machines

2 Finite State Machines Non-player character in one of several possible states –Must be some initial state That state controls actions taken by the NPC Transitions to other states caused by internal/external stimuli Current State Actions in current state Another State Stimuli Another State Stimuli

3 “Guardbot” Example Patrol Move back and forth in front of door Energy at 100% Chase Move towards player Energy = Energy - 1 Player visible Return Move towards door Energy = Energy - 1 At door Player not visible Energy below 50%

4 Pac-Man Example

5 Finite State Machines Note: Each state can be reflex agent Example: “fight” state Fight Player swings  Raise shield Player waits  Swing sword Player moves  Move towards player Run Hit points < 5

6 Designing FSMs What different things does NPC do? –Types of action taken Chase, wander, etc. –Steps in some process Get food from fridge  Cook food  eat food –Can include “terminal” state Object destroyed and deallocated Return Move towards door Energy = Energy - 1 Energy == 0 Dead

7 Implementing FSMs Can treat each state like a C++/Java class –Possibly derived from some base “State” class Typical methods in class: –Enter() Executed once when state entered Example: entering “Fight” state causes NPC to select weapon –Exit() Executed before go to another state Example: exiting “Guard door” state causes NPC to lock door

8 Implementing FSMs Typical methods in class: –Update() Executed by the game engine each frame while NPC in this state Example: reflex actions taken by NPC in “Fight” state –int CheckTransitions() Executed by the game engine each frame while NPC in this state Returns the number of the next state to enter based on current stimuli (same as current state if no change)

9 Implementing FSMs class Chase extends State { int stateNumber = 1; // Patrol = 0, Return = 2 public: void Enter() {say(“intruder alert”);} void Exit() {say(“intruder has escaped”);} void Update() { moveTowards(player.getLocation); if (rand() < 0.3) say (“exterminate”); energyLevel--; } int checkTransitions() { if (energyLevel <= distance(location(door.getLocation)) || distance(location(door.getLocation)) > 10) return 2; else return 1; }

10 Emotional FSMs States represent emotions for character Actions express emotion Stimuli change emotional state ConfidentAngry Frightened Player HP < 10 Small hit by player My HP < 10Heavy hit by me Heavy hit by player

11 Emotional FSMs Can combine with action states appropriate to emotion –Looks more realistic if orc displays fear before running ConfidentAngry Frightened Player HP < 10 Small hit by player My HP < 10Heavy hit by me Heavy hit by player My HP < 5 Running

12 Emotional FSMs NPC must clearly express emotional state –Facial expression (difficult in low resolution) –Body language Posture, motion, etc. –Sound (speakers must be on) Spoken phrases Sounds (growl, etc.) –Abilities Strong emotion might make character less accurate!

13 Emotional FSMs Confident Smiles Shouts insult Stands ground Angry Growls Frowns Faster attack Less accurate Fearful Backs away Grimaces Slower attack

14 Timeouts in FSMs Problem: Abrupt transitions in FSMs Example: –As player approaches, NPC jumps back and forth between “Walk around” and “Run” states Player < 5 feet away Player >= 5 feet away

15 Timeouts in FSMs Solution: State “timeouts” –Continue high-emotion states for fixed amount of time after stimulus gone Keep running for time even after at safe distance Supported by evidence from biology Stay in running state for at least 10 seconds even in player not close

16 Timeouts in FSMs class Run extends State { int timeout; void Update() { Flee(player.getLocation()); if (distance(location, player.getLocation()) 0) { timeout--; return 1; // stay in run state } else return 0; // go to walk around state }

17 Weaknesses of FSMs Abrupt transitions between emotional states –Confident  Terrified not a realistic transition –May need more intermediate states Confident  Worried  Terrified Multiple next states may be indicated by stimuli –Must make sure all are mutually exclusive Chasing Attack Within 1 unit Return Energy < 10


Download ppt "Artificial Intelligence in Game Design Representing NPCs as Finite State Machines."

Similar presentations


Ads by Google