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

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)

Dispersar

tempo_caar >= 20 (sec)

Caar

tempo_player_ energia >= 10 (sec)

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

Dispersar

tempo_caar >= 20 (sec)

LOGO

Exemplo Pac-Man

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

tempo_player_ energia >= 10 (sec)

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

Caar

tempo_player_ energia >= 10 (sec)

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

Caar

tempo_player_ energia >= 10 (sec)

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

Caar

tempo_player_ energia >= 10 (sec)

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

Caar

tempo_player_ energia >= 10 (sec)

player_pegou_ 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
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;
} }

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;

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

Você também pode gostar