Cursos / Jogos Digitais / Inteligência Artificial para Jogos / Aula

arrow_back Aula 05 - Máquina de Estados Finitos

1. Máquina de Estados Finitos

A forma de organização de comportamentos através de estados não é algo exclusivo da área de jogos. Aliás, é um mecanismo que já existe bem antes dos jogos que você conhece atualmente. Esse mecanismo é encontrado até no radinho de pilha usado para escutar os jogos da copa de 50. Quando seu avô alternava as sintonias do rádio entre AM e FM, ele estava alterando o estado do funcionamento (ou comportamento) do aparelho. Como o radinho de pilha, se você prestar atenção, o comportamento de muitos dispositivos pode ser modelado através de estados; do funcionamento de um relógio-alarme à refrigeração de uma geladeira.

Em geral, o comportamento desses dispositivos é modelado através da técnica chamada de Máquina de Estados Finitos ou MEF (Esse conceito foi visto por você na aula 01). O termo finito advém do fato que o estado da máquina deve pertencer a um conjunto finito de possíveis estados. Além deles uma MEF é definida também pelas transições de um estado a outro, normalmente associadas a eventos que podem ocorrer. Por exemplo, o radinho de pilha do seu avô passa do estado AM para o estado FM quando o evento “botão de FM pressionado” ocorrer. Por fim, há também a possibilidade de se definir as ações a serem executadas quando a MEF entrar ou sair de um estado.

Para facilitar a representação de comportamentos baseados em estados, existe uma linguagem visual para descrever uma MEF, ou seja, ela pode ser representada através de um diagrama, como o da Figura 01.

Diagrama de uma Máquina de Estados Finitos de um personagem de jogo

A Figura 01 é um exemplo de diagrama da MEF de um personagem de um jogo que possui três possíveis estados: o de patrulha, o de perseguição e o de ataque. A bola laranja do diagrama é para indicar o estado inicial do personagem: ele começa patrulhando uma determinada área. O comportamento do personagem nesse estado pode ser, por exemplo, o de visitar uma sequência pré-definida de pontos do cenário. Durante a patrulha, no momento em que um inimigo estiver à sua vista (o que caracteriza um evento), há uma transição desse estado e ele passa do estado patrulha para o de perseguição. Nesse estado, seu comportamento pode ser, por exemplo, ir na direção do inimigo. Estando nele, se o inimigo estiver perto o suficiente para poder atacá-lo, haverá uma nova transição, passando do de perseguição ao de ataque. Enquanto ele estiver nele, seu comportamento pode ser, por exemplo, o de dar golpes no inimigo. Se o inimigo morrer em um dos golpes, uma nova transição de estado é efetuada e o personagem volta à sua patrulha. Ainda no estado de ataque, se o inimigo estiver longe o suficiente para que os golpes não atinjam mais o personagem, então uma transição é efetuada e o personagem volta para o de perseguição.

Olhando o diagrama da Figura 01, é possível compreender rapidamente todo o comportamento descrito no parágrafo anterior, não é mesmo? É por isso que o diagrama de estados é bastante utilizado para representar uma MEF. Além de uma organização clara do comportamento do personagem, rapidamente você consegue compreender ou fazer com que outros desenvolvedores compreendam como o personagem vai atuar.

O Unity possui uma ferramenta visual para facilitar a composição de animações dos objetos do jogo baseado em uma MEF. Pode-se utilizar essa ferramenta, porém há outras formas de se implementá-la. Veja, na próxima seção, algumas das possíveis estratégias.

Versão 5.3 - Todos os Direitos reservados