Você está na página 1de 23

INF 1771 Inteligncia Artificial

Aula 26 Mquinas de Estados Finitos

Edirlei Soares de Lima


<elima@inf.puc-rio.br>

LOGO

Introduo

Mquinas de Estados Finitos (Finite State Machines


- FSM) so provavelmente o padro de software mais
utilizado em jogos para selecionar o comportamento
de agentes reativos.

LOGO

Mquina de Estados

Uma mquina de estados um modelo


matemtico usado para representar programas.
Conjunto de estados.
Regras de transio entre estados.
Estado atual.

LOGO

Mquina de Estados

Um exemplo bem simples de uma FSM um


interruptor de luz.
Switch On
On

Of
Switch Of

Em um jogo normalmente uma FSM no to


simples assim, visto que geralmente os agentes
podem ter um conjunto muito maior de
estados.

LOGO

Exemplo Pac-Man

Os fantasmas Inky, Pinky, Blinky e Clyde


do jogo Pac-man so implementados
via FSM.
Os fantasmas tem 3 comportamentos:
Caar (Chase)
Fugir (Evade)
Dispersar (Scatter)

A transio de estados ocorre sempre


que o jogador conseguir alguma plula de
energia.
A implementao da ao caar de cada
fantasma diferente.

LOGO

Exemplo Pac-Man

Mquina de Estados:
tempo_dispersar >= 5 (sec)

Disper
sar

tempo_caar >= 20 (sec)

Caar

tempo_player_
energia >= 10
(sec)

player_pego
u_ energia
== true

Fugir
Os tempos variam em cada nvel do jogo.

LOGO

Exemplo Pac-Man

Comportamento de Dispersar:
Mover em direo aos cantos
e ficar andando em crculos.

tempo_dispersar >= 5 (sec)

Disper
sar

tempo_caar >= 20 (sec)

LOGO

Exemplo Pac-Man

Comportamento de Fugir:
Movimentar-se mais lentamente
com movimentos aleatrios.

tempo_player_
energia >= 10
(sec)

player_pego
u_ energia
== true

Fugir

LOGO

Exemplo Pac-Man

Comportamento de Caar:

Movimenta-se mirando na posio do Pac-Man.

tempo_dispersar >= 5 (sec)


tempo_caar >= 20 (sec)

tempo_player_
energia >= 10
(sec)

Caar

player_pego
u_ energia
== true

LOGO

Exemplo Pac-Man

Comportamento de Caar:

Movimenta-se mirando na posio 4 tiles a frente do


Pac-Man.

tempo_dispersar >= 5 (sec)


tempo_caar >= 20 (sec)

tempo_player_
energia >= 10
(sec)

Caar

player_pego
u_ energia
== true

LOGO

Exemplo Pac-Man

Comportamento de Caar:

Movimenta-se mirando em uma posio que combina a


posio/direo do Pac-Man e do Blinky.

tempo_dispersar >= 5 (sec)


tempo_caar >= 20 (sec)

tempo_player_
energia >= 10
(sec)

Caar

player_pego
u_ energia
== true

LOGO

Exemplo Pac-Man

Comportamento de Caar:

Quando est longe do Pac-Man, movimenta-se em direo


ao Pac-Man. Quando est perto, movimenta-se em
direo ao canto da tela.

tempo_dispersar >= 5 (sec)


tempo_caar >= 20 (sec)

tempo_player_
energia >= 10
(sec)

Caar

player_pego
u_ energia
== true

LOGO

Exemplo Pac-Man

Fim de jogo?
Teoricamente Pac-Man foi
projetado para no ter fim,
mas no level 256

LOGO

Exemplo Quake

Os NPCs do jogo Quake tambm


so implementados via FSM.
Estados/Comportamentos:
Procurar Armadura (FindArmor)
Procurar Kit Medico (FindHelth)
Correr (RunAway)
Atacar (Attack)
Perseguir (Chase)
...

At mesmo as armas so
implementadas como uma mini
FSM.
Mover (Move)
Tocar Objeto (TouchOject)
Morrer/Explodir (Die)

LOGO

Exemplo FIFA20XX

O comportamento dos jogadores


definido atravs de FSMs.
Estados/Comportamentos:
Driblar (Dribble)
Correr Atrs da Bola (ChaseBall)
Marcar Jogador (MarkPlayer)
...

Os times tambm usam FSMs para


definir comportamentos em grupo.
Defender (Defend)
Atacar (Attack)
...

LOGO

Mquina de Estados

LOGO

Implementao

void run(int *state){


switch(*state){
case 0: //procurar inimigo
procurar();
if(encontrou_inimigo)
*state = 1;
break;
case 1: //atacar inimigo
atacar();
if (morto){
morrer();
*state = -1;
}
if (matou){
*state = 0;
}
if(energia < 50 || inimigo_forte)
*state = 3;
break;

case 2: //recarregar energia


recarregar();
if(energia > 90)
*state = 0;
break;
case 3: //fugir
fugir();
if(!encontrou_inimigo){
if(energia < 50)
*state = 2;
else
*state = 0;
}
break;
}
}

LOGO

Vantagens

Elas so rpidas e simples de implementar existem


vrias formas de implementar e todas so muito simples.
Gastam pouco processamento.
So fceis de depurar quando o numero de estados
pequeno.
So intuitivas qualquer pessoa consegue entender o
seu significado apenas olhando para a sua representao
visual. Isso facilita o trabalho do game designer, que
muitas vezes no tem conhecimento de linguagens de
programao.
So flexveis podem ser facilmente ajustada pelo
programador para prover comportamentos requeridos pelo
game designer.

LOGO

Problemas

medida que a complexidade do comportamento dos agentes


aumenta, as FSMs tendem a crescer de forma
descontrolada.
As FSMs se tornam terrivelmente complexas quanto levam em
considerao aes muito bsicas necessrias a um agente.
A representao visual torna-se intratvel.
Comportamentos complexos so necessrios em jogos
modernos.

LOGO

FSM um Pouco Mais


Complexa

LOGO

Mquina de Estados Finita


Hierrquica

possvel organizar uma FSM usando mquinas de


estados finitas hierrquicas (HFSM).
Nveis mais altos lidam com aes mais genricas, enquanto
nveis mais baixos lidam com aes mais especficas.
Cada estado pode ser uma nova FSM.
Infelizmente, a hierarquia no reduz o nmero de estados.
Ela pode somente pode reduzir significativamente o nmero
de transies e tornar a FSM mais intuitiva e simples de
compreender.

LOGO

Mquina de Estados Finita


Hierrquica

LOGO

Mquina de Estados Finita


Hierrquica