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

arrow_back Aula 05 - Máquina de Estados Finitos

Resumo

Nessa aula, você compreendeu como elaborar comportamentos mais complexos para os jogadores. De fato, você está começando a explorar um mundo novo, onde os personagens podem adaptar seus comportamentos em função do estado em que eles se encontram. O uso de Máquinas de Estados Finitos (MEF) permitem essa adaptação. Você viu também como implementar uma MEF através de duas abordagens: usando blocos de comandos e usando o padrão de projeto State. Esta última é mais flexível e versátil do que o bloco de comandos porque separa o personagem do seu comportamento, permitindo reutilizá-lo.

Além do padrão State, você viu igualmente outro padrão de projeto amplamente utilizado em sistemas computacionais, em especial nas aplicações cujo funcionamento depende de eventos externos. O padrão Observer serve para registrar sub-rotinas ou métodos de objetos a serem chamados quando um elemento “observável” da aplicação gerar um “evento”. Nesse momento, todos os observadores registrados são executados. Felizmente, a própria linguagem C# já fornece as ferramentas necessárias para implementar o padrão Observer.

Bom... sei que você deve estar contente porque o comportamento do jogador está ficando mais polido. Mas imagino o que você deve estar pensando: “Caramba! Vários arquivos de código só para a cobrança de um pênalti! Imagine como será para implementar todos os estados de uma partida de futebol completa”.

Se você acha que comportamentos mais complexos produzam também uma complexidade grande para gerenciar e dar manutenção no código, você está coberto de razão. Certamente, o uso de MEF não é um problema para jogos de plataforma, nos quais os personagens inimigos possuem basicamente três estados: aguardar, perseguir e atacar. Também não é um problema nos jogos RPG mais simples em que, por exemplo, o responsável por uma taverna fica aguardando o usuário para iniciar um diálogo e passar-lhe uma missão. Depois que o usuário retornar, ele vai dialogar novamente em função de a missão ter sido cumprida ou não. Enfim, em inúmeros estilos de jogos o uso de uma MEF é a solução ideal. Porém, no caso de jogo de futebol, o número de possíveis estados pode crescer de forma a tornar o código não mais gerenciável.

Há várias alternativas para esse problema e serão apresentadas algumas delas nas aulas seguintes, inclusive usando variações da MEF. Por exemplo, há um tipo de MEF que se chama Máquina de Estados Finitos Hierárquica. Ela permite que um estado possua outra MEF dentro dela. Assim, o jogador pode entrar, por exemplo, no estado de “cobrar pênalti” e, dentro desse estado, ter todos os estados apresentados no diagrama da Figura 02. Para comportamentos mais complexos, a MEF Hierárquica é uma solução adequada.

Por enquanto, fica o seguinte aprendizado: “é essencial aprender várias técnicas para saber escolher a mais adequada para o seu problema”. A MEF é uma das técnicas mais utilizadas na indústria de jogos (se não for a mais), mas não é solução para todos os problemas. Lembre-se de não ser como martelo. Nem tudo na vida é prego.

Até a próxima!

Versão 5.3 - Todos os Direitos reservados