Finite State Machine for Games
description
Transcript of Finite State Machine for Games
Finite State Machine for Games
Mohammad Zikky, M.T
Ref: Chenney, CS679 lecturesAI Game Programming Wisdom 2
2
Outline
AI and GameIntroduction/examplesDesign Intuition State-based
ImplementationExtending Stack-based Fuzzy-state machine
3
What is AI? (and is NOT)
AI is the control of non-human entities in a game
The other cars in a car game The opponents and monsters in a shooter Your units, your enemy’s units and your enemy in a
RTS game
But, typically does not refer to passive things that just react to the player and never initiate action
That’s physics or game logic For example, the blocks in Tetris are not AI, nor is a
flag blowing in the wind
4
AI in the Game Loop
AI is updated as part of the game loop, after user input, and before rendering
Fall 2012 5
AI Module
AI Update Step
The sensing phase determines the state of the world
May be very simple - state changes all come by messaging
Or complex - figure out what is visible, where your team is, etc
The thinking phase decides what to do given the world
The core of AI
The acting phase tells the animation what to do
Game Engine
Sensing
Thinking
Acting
6
AI by Polling
Senses: looks to see what has been changed in the
world
then acts on it
Generally inefficient and complicated Different characters might require different
polling rate
AI gets called at a fixed rate
Event Driven AI
• Events triggered by a message • basically, a function gets called when
a message arrives, just like a user interface)
• Example messages: You have heard a sound Someone has entered your field of
view A certain amount of time has passed,
so update yourself
Fall 2012 7
does everything in response to events in the world
8
AI Techniques in Games
Basic problem: Given the state of the world, what should I do?A wide range of solutions in games: Finite state machines, Decision trees, Rule
based systems, Neural networks, Fuzzy logic
A wider range of solutions in the academic world: Complex planning systems, logic
programming, genetic algorithms, Bayes-nets Typically, too slow for games
Fall 2012 9
Expressiveness
What behaviors can easily be defined, or defined at all?Propositional logic:
Statements about specific objects in the world – no variables
Jim is in room7, Jim has the rocket launcher, the rocket launcher does splash damage
Go to room8 if you are in room7 through door14Predicate Logic:
Allows general statement – using variables All rooms have doors All splash damage weapons can be used around corners All rocket launchers do splash damage Go to a room connected to the current room
Fall 2012 10
Finite State Machines (FSMs)
A set of states that the agent can be inConnected by transitions that are triggered by a change in the worldNormally represented as a directed graph, with the edges labeled with the transition eventUbiquitous in computer game AI
Fall 2012 11
Formal Definitions (N. Philips)
"An abstract machine consisting of a set of states (including the initial state), a set of input events, a set of output events, and a state transition function. The function takes the current state and an input event and returns the new set of output events and the next state. Some states may be designated as "terminal states".The state machine can also be viewed as a function which maps an ordered sequence of input events into a corresponding sequence of (sets of) output events.Finite State Automaton: the machine with no output
12
FSM with Output: vending machines
OJ & AJ for 30 centsState table
13
Vending Machine: state diagram
14
FSM and Game
Game character behavior can be modeled (in most cases) as a sequence of different “mental state”, where change is driven by the actions of player/other characters, …Natural choice for defining AI in games
Fall 2012 15
FSM Examples
Fall 2012 16
Fall 2012 17
18
PacMan State Machine
19
PacMan eats a Power Pill
Timer <= 0
Collision with PacMan
Timer <= 0
Collision with GhostBox
Actions of States
20
Roam;If PacMan gets close, PathTo (PacMan)
Timer--;PathAwayFrom (PacMan)
PathTo (GhostBox)Timer—Move back-and-forth
21
Ex: predator vs. prey
Prey (laalaa)
Idle(stand,wave,…)
Flee(run)
Sees predator
No more threat
capturedDead
Fall 2012 22
Predator (Raptor)
Idle(stand)
Hungry(wander)
Pursuit(run)
Tidle > 5
Prey in sight
Tpursuit > 10
Dining
Prey captured
Tdining>5
23
Idling LaaLaa
Stand
Wave
Wander(set random target)
50%
30%20%
Target arrived
Twave>2
RTstand>4
This page illustrates:hierarchical state,Non-deterministic state transition
This page illustrates:hierarchical state,Non-deterministic state transition
FSM Design
25
Quake2 ExamplesQuake2 uses 9 different states:
standing, walking, running, dodging, attacking, melee, seeing the enemy, idle and searching.
Incomplete design
Intuitive thinking: model the events and state changes
Intuitive thinking: model the events and state changes
Fall 2012 26
Quake: Rocket
Fall 2012 27
Shambler monster
Fall 2012 28
FSM Advantages
Very fast – one array accessExpressive enough for simple behaviors or characters that are intended to be “dumb”
Can be compiled into compact data structure Dynamic memory: current state Static memory: state diagram – array implementation
Can create tools so non-programmer can build behaviorNon-deterministic FSM can make behavior unpredictable
Fall 2012 29
FSM Disadvantages
Number of states can grow very fast Exponentially with number of events: s=2e
Number of arcs can grow even faster: a=s2
Propositional representation Difficult to put in “pick up the better powerup”,
“attack the closest enemy” Expensive to count: Wait until the third time I see
enemy, then attack Need extra events: First time seen, second time seen,
and extra states to take care of counting
FSM Control System Implementation
Fall 2012 31
FSM Implementation
Fall 2012 32
Previous Example
Fall 2012 33
Code 1 Ad hoc implementation
Fall 2012 34
Code 1p
Fall 2012 35
Code 2Structure, Readable, maintainable
Fall 2012 36
Hierarchical …
FSM Extensions
Advanced Issues
Hierarchical FSMNon-deterministic FSMSwapping FSM
Fall 2012 38
Fall 2012 39
Hierarchical FSMs
What if there is no simple action for a state?Expand a state into its own FSM, which explains what to do if in that stateSome events move you around the same level in the hierarchy, some move you up a levelWhen entering a state, have to choose a state for its child in the hierarchy
Set a default, and always go to that Or, random choice Depends on the nature of the behavior
Fall 2012 40
Stack-based FSM
History stack: Remember previous state; create characters with a memory …
Pushdown automaton(PDA)
Fall 2012 41
Goal-based vs. State-based
There is also a slight derivative to the state-based engine, but it used in more complicated games like flight simulators and games like MechWarrior. They use goal -based engines - each entity within the game is assigned a certain goal, be it 'protect base', 'attack bridge', 'fly in circles'. As the game world changes, so do the goals of the various entities.
Fall 2012 42
Processing Models
Polling FSM update
frequency Easy to implement
and debug Inefficiency (Little
Red example)
Event-driven Publish-subscribe
messaging system Game engine sends
event messages to individual FSMs
An FSM subscribes only to the events that have the potential to change the current state
Higher efficiency, non-trivial implementation
Fall 2012 43
Efficiency and Optimization
In AI, FSM is the most efficient technology availableYet, there is always room for improvement Level of Detail: depending on the
condition (e.g., distance with player), use different FSM, or different update frequency
An Example FSM in Football Game
Class : Sepakbola
LapanganJadwal Pertandingan (Liga, Tournament, 2x45 mnt)Skuad Pemain (11 di lapangan + cadangan)Taktik & Strategi (4-4-2 Menyerang / Bertahan)LatihanStaff Pemain (Pelatih , Ass Pelatih, Dokter)Keuangan Transfer Pemain
Object : Pemain Bola
TechnicalsIntellegentsPhysicalsTemperaments
-----------------------------------------------------------------
Cetak Gol, Giring Bola, Tangkap Bola (penjaga Gawang), Control Bola, Tackling Bola, Tendang Jarak Jauh, Marking, dll
FSM Secara Global dlm S.Bola
Class : Sepakbola
Object : Penjaga Gawang
Tangkap
Umpan
Pendek
Umpan
Lambung
Tendangan Gawa
ng
Mental
Bertahan
Dekati Bola
~M, K~M, K
~M, K
M, K M, K~M,K
Object : Penjaga Gawang
M = Musuh Mendekat~M = Musuh MenjauhK = Teman Mendekat~K = Teman Menjauh
Object : Pemain Bertahan (Tengah)
Umpan
Lambung
Tackling : Kera
s
Umpan
Pendek
Marking=Zona
Mental :
Bertahan
Jemput
Bola
Dapat
Bola
M
M
M,~M,K,~K
Object : Pemain Bertahan (SAYAP)
Umpan
LambungTakli
ng : Norm
al
Menggiring Bola
Maju
Umpan
Pendek
Mental :
Normal
Jemput
Bola
Dapat
Bola
Object : Gelandang Bertahan
Umpan
Lambung
Takling :
Normal Menggiri
ng Bola Maju
Umpan
Pendek
Jemput
Bola
Dapat
Bola
Tendangan Jrk
Jauh
Object : Gelandang SerangUmpan
Lambung
Takling : Ringan Menggiri
ng Bola Maju
Umpan
Pendek
Dapat
Bola
Tendangan Jrk
Jauh
Jemput
Bola
Object : Sayap Kanan / KiriUmpan
Silang
Tackling : Ringan
Umpan
Pendek
Jemput
Bola
Dapat
Bola
Umpan
Lambung
Menggiring Bola
Maju
Object : Penyerang (Striker)
Jemput
BolaDapa
t Bola
Umpan
Silang
Umpan
Pendek
Tendangan Jrk
Jauh
Cetak GOL
Giring
Bola
Fall 2012 57
References
Web references: www.gamasutra.com/features/19970601/build_brain
s_into_games.htm csr.uvic.ca/~mmania/machines/intro.htm www.erlang/se/documentation/doc-4.7.3/doc/design_
principles/fsm.html www.microconsultants.com/tips/fsm/fsmartcl.htm http://www.angelfire.com/dragon/letstry/tutorials/dfa/
Game Programming Gems Sections 3.0 & 3.1
It’s very very detailed, but also some cute programming