Escolar Documentos
Profissional Documentos
Cultura Documentos
IA Aula 26 Maquinas de Estados Finitos
IA Aula 26 Maquinas de Estados Finitos
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
LOGO
Mquina de Estados
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
Caar
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.
Dispersar
LOGO
Exemplo Pac-Man
Comportamento de Fugir:
Movimentar-se mais lentamente com movimentos aleatrios.
Fugir
LOGO
Exemplo Pac-Man
Comportamento de Caar:
Caar
LOGO
Exemplo Pac-Man
Comportamento de Caar:
Caar
LOGO
Exemplo Pac-Man
Comportamento de Caar:
Caar
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)
Caar
LOGO
Exemplo Pac-Man
Fim de jogo?
Teoricamente Pac-Man foi projetado para no ter fim, mas no level 256
LOGO
Exemplo Quake
LOGO
Exemplo FIFA20XX
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.
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
LOGO
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.
LOGO
LOGO