Como simplificar o seu código IA com Máquinas de Estado Finito

Tagged

Attached Files

The following files have been attached to this tutorial:

.capx

follower-fsm-example.capx

Download now 175.78 KB

Stats

752 visits, 769 views

Tools

Este artigo irá apresentá-lo à Inteligência Artificial em vídeo games. Neste tutorial, você aprenderá o que são Máquina de Estado Finito e como aplicar esse poderoso conceito à suas IAs no Construct 2. Mas vamos começar com uma rápida visão geral da IA de jogos. Você precisará do [Behavior moveTo plataforma] [14] de rexrainbow para abrir o capx anexado. Extraia o arquivo e coloque a pasta behavior dentro da pasta Arquivos de Programas\Construct2\exporters\html5\behaviors.

E se você gostar do que eu estou fazendo, você pode me seguir em [twitter] [9] e no [facebook] [10]!

Uma breve introdução a IA em jogos

Nos video games, a inteligência artificial é usada para construir e descrever os comportamentos de elementos que se movem e agem por si mesmos, seja ele um personagem não jogável, um foguete teleguiado ... Uma vez aplicada aos jogos, a inteligência artificial torna-se mais artificial do que Inteligente: nosso objetivo é proporcionar ao jogador obstáculos atraentes, para apimentar sua experiência. Não se trata de simular uma inteligência auto-consciente e humana.

Na verdade, no modo de jogo, é melhor que a IA não seja muito esperta: em um jogo de infiltração, você pode ter notado como os guardas podem esquecê-lo e voltar para a patrulha depois de um tempo (ver Mark Of The Ninja, Metal Gear Solid). Nos jogos que incluem mecanismos de combate em tempo real, muitas vezes apenas um ou dois inimigos vão atacá-lo de uma vez, tornando a luta gerenciável (Dishonored, Assassin's Creed). Os inimigos raramente antecipam o próximo movimento do jogador, mas preferem reagir a seus atos anteriores. É por isso que, em essência, o IA em jogos é mais artificial do que inteligente.

Uma IA realmente básica, pode ser gerenciada com uma lógica simples e intuitiva. Mas por agora, você vai perceber que pode ficar complicado gerenciar uma lista crescente de comportamentos com condições padrão e ações no Construct 2. Isso fica tedioso para editar e se estende muito rápido! Felizmente podemos usar um conceito poderoso, mas acessível, para modelar uma IA com múltiplos estados ou comportamentos: Máquinas de Estado Finito ( Finite State Machines ).

O que é uma Máquina de Estado Finito?

Máquinas de Estado Finito (FSM), ou Máquinas de Estado são modelos de computação usados ​​para abstrair um objeto ou máquina de tal forma que ele só pode estar em um estado único de cada vez, escolhido dentro de um conjunto de Estados.

Deve ser mais claro com uma pequena ilustração. Vamos dizer que temos uma IA de inimigo, em um jogo de RPG. Queremos que ataque o jogador quando o jogador se aproxima. Quando tem uma saúde baixa no entanto, queremos que ele fuja. O comportamento de nossa IA pode ser modelado como um conjunto de três estados: ele pode estar atacando, fugindo ou esperando.

O texto encaixotado representa um estado, enquanto as setas e o texto flutuante representam as condições e as direções do fluxo da lógica. A qualquer momento, nossa IA só pode estar em um estado, e só pode se mover de um estado para outro. A ideia é, no que diz respeito a seu loop de programação principal, dizer para a engine do jogo qual estado o seu personagem ou objeto deve estar. Cada estado se torna auto-contido, um único pedaço de código que você pode editar a qualquer momento, sem arriscar quebrar seu jogo!

4 razões para usar Máquinas de Estado Finito

Elas são fáceis de implementar e gerenciar

Máquinas de Estado Finito são o primeiro passo para o desenvolvimento de uma IA elegante.

Este modelo de programação é um dos conceitos mais simples de implementar e gerenciar: é suficientemente próximo de usar das instruções básicas if/else, mas muito mais flexível. Basicamente, torna sua IA fácil de modificar e estender, mesmo quando ela fica grande.

São acessíveis e intuitivas

Máquinas de Estado Finito não são abstratas em tudo: é completamente natural pensar sobre uma inteligência artificial como uma entidade com um conjunto de comportamentos ou estados.

Elas cobrem muitas necessidades de IA

Apesar de terem seus limites, as MEFs irão cobrir a maior parte de suas necessidades de IA para desenvolvimento de jogos 2d. Elas podem facilmente modelar uma variedade de inimigos, personagens e até mesmo objetos (por exemplo, um foguete de rastreamento com 3 estados: "lançamento", "seguir" e "explodir").

Eles podem modelar até UI ou esquemas de controle

Como eu escrevi anteriormente, as MEFs também podem ser usadas ​​para modelar objetos, mas também UI ou esquemas de controle! Elas são realmente muito poderosas quando se trata de representar um conjunto de movimentos de um jogador. Vou deixá-lo com um exemplo de uma entrada básica de MEFs de plataforma:

Planejando sua IA - MEF

Antes de programar qualquer inteligência artificial, é absolutamente crucial planejá-la cuidadosamente: quanto mais preciso e coerente for seu planejamento, mais tempo você economizará enquanto codifica. Máquinas de Estado Finito são geralmente representadas e construídas usando um gráfico. Os gráficos capturam muito bem o fluxo e as restrições de um MEF.

Existem muitos fluxogramas ou ferramentas de desenho gráfico, começando com caneta e papel. Você pode usar o Office Visio, [LibreOffice draw] [4], ou uma alternativa on-line como [Draw.io] [5]. Para gráficos mais simples, um lápis é mais do que suficiente.

Seu planejamento tem que capturar os estados, o fluxo dos estados e as condições de fluxo de sua AA baseada em MEF. Você pode escrevê-lo com qualquer detalhe que você esteja confortável. Aqui está um exemplo de como eu criaria com uma IA simples. Eu escolhi pensar sobre um tipo personagem perseguidor não-jogável. Ele segue o jogador e tem 2 estados: esperando e seguindo, como representado no gráfico abaixo. Uma tabela resume o fluxo de nossa MEF.

Como implementar a MEF do perseguidor no Construc2 (por exemplo)

O processo é mostrado e descrito no exemplo capx comentado e anexado a este tutorial ( você pode encontrá-lo na parte superior esquerda da página ). O código relacionado a IA é basicamente dividido em dois blocos principais:

- Uma lista de condições, usada para alternar estados

- Uma lista de funções, uma por estado

Desta forma, a nossa IA pode ser facilmente estendida com novos comportamentos, como dormindo ou patrulhando a área!

Últimas palavras

Gostaria que eu cobrisse algo específico? Deixe-me uma mensagem! Você pode me seguir e me fazer perguntas diretamente no [twitter] [9], [facebook] e [google plus] [11].

Você pode encontrar todos os meus artigos e tutoriais sobre design de jogos diretamente no meu site: http://GDquest.com/! Finalmente, você pode encontrar todos os meus tutoriais de Construct 2 em [esta postagem no fórum] [13].

.CAPX

follower-fsm-example.capx

Download now 175.78 KB
  • 0 Comments

  • Order by
Want to leave a comment? Login or Register an account!