# Finite State Machine for Games

```Finite State Machine for Games
Ref: Chenney, CS679 lectures
AI Game Programming Wisdom 2
Outline
AI and Game
Introduction/examples
Design


Intuition
State-based
Implementation
Extending


Stack-based
Fuzzy-state machine
2
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
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
3
AI in the Game Loop
AI is updated as part of the game loop,
after user input, and before rendering
4
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

Sensing
Game
Engine
Thinking
The core of AI
The acting phase tells the
animation what to do
Fall 2012
AI Module
Acting
5
AI gets called at a fixed rate
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
6
Event Driven AI
does everything in response
to events in the world
• Events triggered by a message
•
basically, a function gets called when a
message arrives, just like a user interface)
• Example messages:



Fall 2012
You have heard a sound
Someone has entered your field of view
A certain amount of time has passed, so
update yourself
7
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
8
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 door14
Predicate Logic:





Fall 2012
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
9
Finite State Machines (FSMs)
A set of states that the agent can be in
Connected by transitions that are triggered
by a change in the world
Normally represented as a directed graph,
with the edges labeled with the transition
event
Ubiquitous in computer game AI
Fall 2012
10
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
Fall 2012
11
FSM with Output: vending
machines
OJ & AJ for 30 cents
State table
12
Vending Machine: state diagram
13
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
14
FSM Examples
Fall 2012
15
Fall 2012
16
Fall 2012
17
18
PacMan State Machine
Timer <= 0
PacMan eats a
Power Pill
Timer <= 0
Collision with
GhostBox
Collision with
PacMan
19
Actions of States
Roam;
If PacMan gets close,
PathTo (PacMan)
Timer—
Move back-and-forth
Timer--;
PathAwayFrom
(PacMan)
PathTo (GhostBox)
20
Ex: predator vs. prey
Prey (laalaa)
Sees predator
Idle
(stand,wave,…)
No more threat
Flee
(run)
captured
21
Predator (Raptor)
Idle
(stand)
Tdining>5
Tidle > 5
Hungry
(wander)
Dining
Prey captured
Pursuit
(run)
Prey in sight
Tpursuit > 10
Fall 2012
22
Idling LaaLaa
hierarchical state,
Non-deterministic state transition
Target arrived
Wander
(set random target)
Stand
Tstand>4
20%
R 30%
50%
Wave
Twave>2
23
FSM Design
Quake2 Examples
Intuitive thinking:
model the events and
state changes
Quake2 uses 9 different states:
standing, walking, running, dodging, attacking, melee,
seeing the enemy, idle and searching.
Incomplete
design
25
Quake: Rocket
Fall 2012
26
Shambler monster
Fall 2012
27
Very fast – one array access
Expressive 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
behavior
Non-deterministic FSM can make behavior
unpredictable
Fall 2012
28
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
Fall 2012
29
FSM
Control System Implementation
FSM Implementation
Fall 2012
31
Previous Example
Fall 2012
32
Code 1
Fall 2012
33
Code 1p
Fall 2012
34
Code 2
Fall 2012
35
Hierarchical …
Fall 2012
36
FSM Extensions
Hierarchical FSM
Non-deterministic FSM
Swapping FSM
Fall 2012
38
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 state
Some events move you around the same level in the
hierarchy, some move you up a level
When entering a state, have to choose a state for its
child in the hierarchy



Fall 2012
Set a default, and always go to that
Or, random choice
Depends on the nature of the behavior
39
Stack-based FSM
Pushdown automaton
(PDA)
History stack: Remember
previous state; create
characters with a
memory …
Fall 2012
40
Goal-based vs. State-based
There is also a slight derivative to the statebased 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
41
Processing Models
Polling



FSM update
frequency
Easy to implement
and debug
Inefficiency (Little
Red example)
Event-driven




Fall 2012
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, nontrivial implementation
42
Efficiency and Optimization
In AI, FSM is the most efficient
technology available
Yet, there is always room for
improvement

Fall 2012
Level of Detail: depending on the condition
(e.g., distance with player), use different
FSM, or different update frequency
43
An Example FSM in Football Game
Class : Sepakbola
Lapangan
mnt)
Taktik & Strategi (4-4-2 Menyerang / Bertahan)
Latihan
Staff Pemain (Pelatih , Ass Pelatih, Dokter)
Keuangan
Transfer Pemain
Object : Pemain Bola
Technicals
Intellegents
Physicals
Temperaments
---------------------------------------------------------------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
Keterangan
 CG : Cetak Gol
 TB : Tangkap Bola (Penjaga
Gawang)
 US : Umpan Silang
 UP : Umpan Pendek
 UL : Umpan Lambung
 TJ : Tendangan Jarak Jauh
 TC : Tendangan Pojok
 TP : Tendangan Pinalti
 T : Tackling / Jegal
 LMB : Lari Kejar Bola
 LB : Lempar Bola
 MM : Menjaga Lawan (Man







Marking)
MZ : Menjaga Daerah (Zona
Marking)
SB : Sundul Bola
GB : Giring Bola
LMD : Lari Maju ke depan
LMBC : Lari Mundur ke Belakang
AM : Mental Menyerang
DM : Mental Bertahan
Object : Penjaga Gawang
~M, K
Umpa
n
Pende
k
Tangk
ap
~M, K
~M, K
Tendan
gan
Gawan
g
M, K
Dekati
Bola
~M,K
M, K
Mental
Bertah
an
Umpa
n
Lambu
ng
Object : Penjaga Gawang
M = Musuh Mendekat
~M = Musuh Menjauh
K = Teman Mendekat
~K = Teman Menjauh
Object : Pemain Bertahan
(Tengah)
Tackli
ng :
Keras
M,~M,K,
~K
M
M
Umpa
n
Lamb
ung
Jemp
ut
Bola
Umpa
n
Pende
k
Dapat
Bola
Marki
ng=Z
ona
Menta
l:
Berta
han
Object : Pemain Bertahan
(SAYAP)
Taklin
g:
Norm
al
Umpa
n
Pende
k
Umpa
n
Lamb
ung
Jemp
ut
Bola
Dapat
Bola
Menggirin
g Bola
Maju
Menta
l:
Norm
al
Object : Gelandang Bertahan
Taklin
g:
Norm
al
Tendan
gan Jrk
Jauh
Umpa
n
Pende
k
Umpa
n
Lamb
ung
Jemp
ut
Bola
Dapat
Bola
Menggirin
g Bola
Maju
Object : Gelandang Serang
Taklin
g:
Ringa
n
Tendan
gan Jrk
Jauh
Umpa
n
Pende
k
Umpa
n
Lamb
ung
Jemp
ut
Bola
Dapat
Bola
Menggirin
g Bola
Maju
Object : Sayap Kanan / Kiri
Umpa
n
Lamb
ung
Umpa
n
Silang
Jemp
ut
Bola
Tackli
ng :
Ringa
n
Dapat
Bola
Umpa
n
Pende
k
Menggirin
g Bola
Maju
Object : Penyerang (Striker)
Giring
Bola
Tendan
gan Jrk
Jauh
Umpa
n
Silang
Ceta
k
GOL
Dapat
Bola
Umpa
n
Pende
k
Jemp
ut
Bola
References
Web references:





www.gamasutra.com/features/19970601/build_brains_into_
games.htm
csr.uvic.ca/~mmania/machines/intro.htm
www.erlang/se/documentation/doc4.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

Fall 2012
It’s very very detailed, but also some cute programming
57
```

18 cards

25 cards

23 cards

29 cards

43 cards