170 likes | 294 Views
Artificial Intelligence in Game Design. Representing NPCs as Finite State Machines. 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
E N D
Artificial Intelligence in Game Design Representing NPCs as Finite State Machines
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 Another State Current StateActions incurrent state Stimuli Another State Stimuli
“Guardbot” Example Chase Move towards player Energy = Energy - 1 PatrolMove back and forth in front of door Energy at 100% Player visible Player not visible Energy below 50% ReturnMove towards door Energy = Energy - 1 At door
Finite State Machines • Note: Each state can be reflex agentExample: “fight” state Fight Player swings Raise shield Player waits Swing sword Player moves Move towards player Run Hit points < 5
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 ReturnMove towards door Energy = Energy - 1 Energy == 0 Dead
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 enteredExample: 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
Implementing FSMs • Typical methods in class: • Update()Executed by the game engine each framewhile NPC in this stateExample: reflex actions taken by NPC in “Fight” state • int CheckTransitions() • Executed by the game engine each framewhile NPC in this state • Returns the number of the next state to enter based on current stimuli (same as current state if no change)
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; } }
Emotional FSMs • States represent emotions for character • Actions express emotion • Stimuli change emotional state Player HP < 10 Confident Angry Small hit by player Heavy hit by player Heavy hit by me My HP < 10 Frightened
Emotional FSMs • Can combine with action states appropriate to emotion • Looks more realistic if orc displays fear before running Player HP < 10 Confident Angry Small hit by player Heavy hit by player Heavy hit by me My HP < 10 Frightened My HP < 5 Running
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!
Timeouts in FSMs • Problem: Abrupt transitions in FSMsExample: • As player approaches, NPC jumps back and forth between “Walk around” and “Run” states Player < 5 feet away Player >= 5 feet away
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
Timeouts in FSMs class Run extends State { int timeout;void Update() { Flee(player.getLocation()); if (distance(location, player.getLocation()) < 5) timeout = 10; // run for 10 frames even after escape) }int CheckTransitions() { if (timeout > 0) { timeout--; return 1; // stay in run state } else return 0; // go to walk around state }
Weaknesses of FSMs • Abrupt transitions between emotional states • Confident Terrified not a realistic transition • May need more intermediate statesConfident Worried Terrified • Multiple next states may be indicated by stimuli • Must make sure all are mutually exclusive Attack Chasing Within 1 unit Return Energy < 10