1 / 24

Artificial Intelligence in Game Design

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

reuel
Download Presentation

Artificial Intelligence in Game Design

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

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 Another State Current StateActions incurrent state Stimuli Another State Stimuli

  3. “Guardbot” Example start 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

  4. Pac-Man Example

  5. Finite State Machines • 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

  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 ReturnMove towards door Energy = Energy - 1 Dead Energy == 0

  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 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

  8. Implementing FSMs • Typical methods in class: • Update()Executed by game engine each framewhile NPC in this stateExample: reflex actions taken by NPC in “Fight” state • intCheckTransitions() • Executed by game engine each framewhile NPC in this state • Returns ID 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 Player HP < 10 Confident Angry Player hit > 5 HP Player hit > 10 HP Heavy hit by me My HP < 10 Frightened

  11. Emotional FSMs • Can combine with action states appropriate to emotion • Looks more realistic if orc displays fear before running Player HP < 10 Confident Angry Player hit > 5 HP Player hit > 10 HP Heavy hit by me My HP < 10 Frightened My HP < 5 Running

  12. Emotional FSMs and Personalities • Can “tweak” parameters for different NPCs • Differences must be large enough to be noticeable Player HP < 5 Confident Angry Player hit > 1 HP Player hit > 20 HP Heavy hit by me My HP < 5 Orc with anger management issues Frightened

  13. 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!

  14. Emotional FSMs

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

  16. 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

  17. 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) }intCheckTransitions() { if (timeout > 0) { timeout--; return 1; // stay in run state } else return 0; // go to walk around state }

  18. Extended “Guardbot” Example Player in front Turning Forward Player visible Player to side Obstacle in front Dodge PatrolMove back and forth in front of door Energy at 100% Player visible Player not visible Player within 2 units Escaped Move towards door Energy = Energy - 1 Fire At door Energy below 50% ReturnMove towards door Energy = Energy - 1

  19. FSM Issues Problems with Finite State Machines: • Complexity • Potentially hundreds of states • Design difficult • Debugging impossible • Duplication • Many blocks of states similar • Example: Return state also needs “Turn”, “Move”, and “Dodge” • Many transitions similar • Example: Need “low energy” transition from all states in “Chase”

  20. Hierarchical State Machines Single high-level state contains entire low-level FSM • Need initial state that high-level passes control to • Need final states that correspond to transitions from high-level state Chase Escaped Turning Player not within 10 units Player to side Obstacle not in front Start Dodge Player in front Player to side Obstacle in front Forward Fire Player within 2 units

  21. Hierarchical State Machines • Usually implemented as stack • Push low-level state on stack when enter • Pop and move to next state when finished Start Turning Escaped Chasing Chasing Chasing Chasing Escaped … Guarding Door Guarding Door Guarding Door Guarding Door Guarding Door

  22. Exiting Low-level States • “Interrupts” may cause exit before task is completed • Example: Caution flag interrupts passing • All states on stack may have interrupt conditions • Check all at each frame • Better than having same transition for all states Player in front Forward Turning Energy < 50% Chasing Return Guarding Door Emergency recall Go to HQ

  23. Exiting Low-level States • Can store current low level state and return if necessary once exception handled Build Farm Clear land Build barn Plant crops Return to appropriate state when dam fixed Dam break Fix Dam

  24. 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

More Related