Inteligência Artificial nos Games – Mais Aplicações

Inteligencia-Artificial-nos-Games

Olá gurizada,

Apesar da semana ter iniciado bastante corrida aqui na empresa, promessa é promessa, e eu não podia deixar os queridos, e interessados, leitores na mão. Sendo assim, trago para vocês o terceiro post do arco sobre Inteligência Artificial nos Jogos.  O conteúdo de hoje dá continuidade as aplicações das técnicas de I.A. nos mais diversos gêneros de games. O post deu um pouco de trabalho, mas acho que o esforço é merecido. O pessoal está partipando e mostrado-se bastante curioso sobre o tema.

Vamos lá!

Gênero: Adventure

O Adventure coloca o jogador no papel do herói, ou heróis, da história. Este estilo normalmente exige habilidades para a resolução de quebra-cabeças e enigmas. Ele foi consagrado nos anos 90 pelos excelentes títulos da Lucas Arts. Afinal, quem não lembra de The Secreat of Monkey Island ou o engraçado Full Throttle?

Sistemas de Script

Esta técnica é uma das minhas preferidas para este gênero. Os adventures, principalmente os clássicos baseados em  point and click, possuem a jogabilidade bastante amarrada ao enredo. Desta forma, o fluxo da ação assemelha-se muito a um script de filme, com personagens agindo em uma ordem cronológica previamente definida.

Recentemente, participei de um projeto onde recebi a missão de projetar um editor para “roteiros” de personagens em um jogo. O conhecimento de I.A., e principalmente da técnica de Sistemas de Script, foi fundamental para realizar esta tarefa. Com o editor em mãos, o  Game Designer, ou Level Designer, foi capaz de definir as falas e ações de cada personagem diretamente em um arquivo XML. Em seguida, o motor do jogo analisava estas informações, criando as regras e tarefas para cada NPC.

Foi um projeto muito interessante que proporciou um gande ganho em produtividade para a equipe. Além disso, esta técnica somada a outras como FSM e Sistema de Mensagens, proporciona uma excelente experiência para o jogador.

Gênero: Plataforma

Sucesso desde a década de 80, os games de plataforma bidimensionais são característicos por apresentarem uma perspectiva lateral do ambiente. Com a evolução dos consoles, vieram os gráficos em 3 dimensões, criando uma nova variação para o gênero. Mesmo com franquias de sucesso como Mário Galaxy, a jogabilidade em duas dimensões ainda é popular e divertida.

Máquinas de Estados Finitos
Por questões de simplicidade, a maioria dos inimigos segue comportamentos padrões básicos,  movimentam-se em uma direção até encontrar um obstáculo – nesta caso, invertem a posição e reiniciam o procedimento. Para jogos de plataforma, a implementação da técnica de FSM também é simplificada.

Sistema de Mensagens
O estilo puzzle de grande parte dos jogos de plataforma, é um prato cheio para a utilização de mensagens e eventos. Elas são utilizadas normalmente para notificar inimigos ou elementos do ambiente sobre mudanças no estado do jogo ou a presença do player.

Data Driven System (Sistema baseado em dados)
A movimentação da câmera para jogos de plataforma tridimensionais normalmente torna-se bastante complexa  (quem jogou The Simpsons Game, sabe do que estou falando). Consequentemente, caminhos pré-definidos podem ser construídos através de um editor de níveis, caso nenhuma solução algorítmica seja adequada.

 

Gênero: Esporte

Este gênero é característico por emular a prática de esportes como futebol, vôlei, basquete, hockey, entre vários outros.  A grande maioria enfatiza a prática do esporte do ponto de vista do atleta, enquanto outros apresentam uma visão mais estretégica do ponto de vista do técnico ou treinador.

Máquinas de Estados Fuzzy (FFSM)

Todos os jogos desse gênero seguem um conjunto de regras, e a estrutura da IA dentro dessas regras é normalmente baseada em estados. Por exemplo, o time pode ter uma estratégia se o estado é “Vencendo”, outra se for “Empatando”, ou até uma estratégia complexa, se for “Perdendo a Final do Campeonato, Restando 10 min”. Porém, a transição para estes estados não pode ser precisa. Ai que entra a lógica fuzzy, tornando as decisões a serem tomadas propositalmente não tão claras e evidentes, apresentando um certo grau de incerteza e realismo ao jogador.

Data-Driven System
Com uma grande quantidade de jogadores, dados estatísticos e animações,  jogos de esporte contam com várias ações baseadas em dados pré definidos. Entre as mais populares, estão as animações de movimento e estatísticas de cada jogador.

Sistema de Mensagens
Partindo da realidade que jogadores reais de futebol comunicando-se durante o jogo, faz total sentido utilizar um sistema de mensagens para montar a estratégia do time. Entre os exemplos de aplicação, posso citar o zagueiro que informa aos companheiros  que está partindo para uma jogada de contra-ataque. Em resposta a esta informação, outro jogador pode “cobrir” a defesa.

Gênero: Racing

Esse gênero, nascido nos anos 80, coloca o jogador no controle de um veículo para disputar uma corrida contra outros competidores, ou às vezes, contra o tempo. Este gênero revolucionou a indústria de jogos em termos gráficos e de performance.

Máquinas de Estados Finitos
Jogos de Corrida seguem geralmente uma mesma fórmula. São definidos pelas leis da física e possuem objetivos simples. Dessa forma, os estados de um jogo deste gênero seguem um fluxo comum (Largada, Corrida, Fora da Pista, Chegada).

Algoritmos Genéticos

Alguns jogos de corrida possuem uma enorme quantidade de carros (Gran Turismo, por exemplo,  possui  500 modelos) e cada um exige uma forma peculiar de adaptação e manuseio do volante. Com essa realidade,  algumas empresas têm utilizado técnicas para automatizar a atividade de balanceamento através de uma simples aplicação de algoritmo genético, modificando os parâmetros de performance dos carros. Carros com diferentes atributos de dirigibilidades são combinados, gerando um terceiro. Isso é feito até que obtenha-se um bom resultado. Ao final, esses resultados são então armazenados e alimentam a lista de modelos do jogo.

Gênero: Luta

Este gênero contempla um combate fechado entre dois lutadores que utlizam movimentos especiais para atingir e vencer o adversário. Bom, é difícil definir este gênero, conhece Street Fighter? Pois então, é isso ai :)

Máquinas de Estados Finitos
Cada lutador em um jogo de luta possui seus movimentos mapeados em estados. Dependendo do estado do oponente (atacando, defendendo, recuando) o NPC irá efetuar uma estatégia de luta ou combinação de movimentos. Uma FSM pode atender à demanda da maioria dos jogos desse gênero. O mapeamento de estados é utilizado inclusive para os comandos do jogador. Se você já deu um “hadouken” saiba que ele também está dentro de uma FSM. Observe o autômato finito abaixo.

No diagrama acima, temos 4 círculos azuis, representando os estados “Baixo”, “Diagonal Inferior Direita”, “Frente” e “Hadouken“. Partindo de um estado inicial – representado pelo círculo preto – podemos interpretar a sequencia de comandos necessária para disparar o golpe. O processo inicia se o jogador pressionar a tecla para “Baixo”, fazendo a máquina se mover para o estado correspondente. Estando nesse estado, qualquer outro comando, que não seja o esperado, leva a máquina para o estado inicial novamente – indicado pelas setas vermelhas. Desta forma, se o jogador seguir corretamente a sequencia de teclas…

Hadoukennnn!

Ufa, espero que tenham gostado do post de hoje. O assunto é um pouco complexo, mas fiz o possível para condensá-lo e facilitar o entendimento. E ai o que acharam? Já é possível ter uma visão geral da I.A nos games, conhecendo o conceitos das principais técnicas utilizadas pela indústria? Espero o comentário de vocês.

Não deixe de conferir as partes 1 e 2, pois nos próximos posts, partiremos para a prática. É isso mesmo, vamos implementar as principais técnicas descritas até o momento. Esteja preparado para desenvolver o seu primeiro algoritmo de Path Finding, o A Star (A*).

Até lá! :)

 

Autor: Everton Vieira Ver todos os posts de
Sou Bacharel em Análise de Sistemas pela Universidade Católica de Pelotas (UCPel) no ano de 1999. Minha paixão por games é de longa data. Porém, em 2003 tornei essa paixão uma profissão. Durante oito anos atuei como Game Designer e Arquiteto de Software em mais de 30 projetos de Serious Games (simuladores) para grandes empresas do país. Atualmente sou sócio-fundador da Izyplay Game Studio, onde exerço o cargo de Diretor de Criação. Além do envolvimento corporativo, também participei da organização da Pós Graduação em Arquitetura e Desenvolvimento de Jogos Digitais na FATEC SENAC Pelotas. Minha área de interesse e especialização é Game Design e Inteligência Artificial.

12 Comentários em "Inteligência Artificial nos Games – Mais Aplicações"

  1. Leone Simonetti 20/03/2012 at 13:50 - Reply

    Muito obrigado Everton Vieira pelas informações, me esclareceu várias duvidas em relação a maquina e arquitetura de alguns jogos, vai ajudar muito para projetos futuros, mal posso esperar o próximo post.

    • everton.vieira 21/03/2012 at 09:20 - Reply

      Olá Leone,
      Ficamos contentes em poder contribuir e fomentar o estudo sobre I.A. Pode contar conosco. ;)

  2. Luis Fernando 20/03/2012 at 14:12 - Reply

    Muito bom.
    Mesmo eu não entendendo muito sobre assunto, achei super interessante e me arrisco a dizer que consegui ter uma visão geral da AI. Que venham os próximos posts.
    Parabéns pelo post!

    • everton.vieira 21/03/2012 at 09:16 - Reply

      Valeu Luis,
      fico feliz em ter conseguido passar o conteúdo de forma assimilável. Não deixe de cadastrar-se e utilizar o nosso novo fórum para tirar as dúvidas.

  3. Bárbara 21/03/2012 at 12:59 - Reply

    Everton, eu estava achando que inteligência artificial era para elementos não controlados pelo player, mas na verdade entre o player e o personagem existe, então, inteligência artificial para o personagem interpretar o comando?
    Quero dizer, inteligência artificial é também o meio de comunicação entre o jogador e o bonequinho que ele controla?

    Sempre pensei que adventures (meu gênero favorito) não utilizassem inteligência artificial, porque seguiam um roteiro. Na verdade o roteiro é o sistema de inteligência artificial do jogo?

    Ou não entendi nada, ou o mundo mudou de forma hoje.

    • everton.vieira 21/03/2012 at 19:55 - Reply

      Olá Bárbara, fique tranquila, o mundo ainda é redondo :)

      A resposta para a sua primeira pergunta é, Sim. A I.A também é aplicada no controle do player. Um bom exemplo seriam os jogos de estratégia (Diablo, Age o Empires, etc), os quais o jogador clica com o mouse no local onde deseja ir. O deslocamento do personagem até o ponto se dá através de algum dos vários algoritmos de Path Finding (Encontrar o caminho) conhecidos. Porém, eu não categorizaria o autômato finito, ou FSM, utilizado para mapear os comandos de Street Fighter como uma I.A. Seria apenas a aplicação pura da técnica para aquela finalidade. Mas, até isso é um pouco interpretativo.

      Em relação aos adventures, sim, podemos interpretar o sistema que gerencia as falas dos personagens e eventos do jogos como I.A. É o chamado Sistema de Script.

  4. Bárbara 21/03/2012 at 13:09 - Reply

    Outra coisa:
    Parece que não entendi bem o sistema de mensagens.

    Ele funciona mais ou menos como o de estados finitos, mas em função de uma mensagem que o player enviar, e trazendo instruções mais complexas do que um estado?

    Mais uma vez obrigada pela boa disposição, sobretudo nos momentos de falta de tempo.

    • everton.vieira 21/03/2012 at 20:02 - Reply

      Olá Bárbara,

      O sistema de mensagens e eventos não possui relação direta com as FSM, porém podemos combinar as técnicas para obter um bom resultado. Eu mesmo utilizo muito esta combinação. O conceito do sistema de mensagem é bem simples. Vamos a um exemplo. Imagine que você está modelando um NPC que deve desviar dos tiros do jogador. Ao invés de testar a todo frame (pulso do jogo) se o jogador atirou na sua direção, você simplesmente define que esta ação, quando ocorrer, irá disparar um evento (jogadorAtirou). O NPC por sua vez, ouve este evento e toma a ação apenas quando ele ocorrer.

  5. Marcelo Martins 26/03/2012 at 16:39 - Reply

    Muito interessante o artigo, Everton. Obrigado por compartilhar! Na verdade, eu até comecei a me interessar mais pelo assunto. Espero ter, um dia, mais tempo para aprender mais! Grande abraço!

  6. André de Araújo Rodrigues 26/12/2012 at 13:41 - Reply

    Boa tarde!
    Everton,eu estou criando um game que é uma mistura de arcade com luta,feito em canvas html5,estou trabalhando nele desde do começo do ano,eu encontrei dificuldades, pois eu desconhecia o poder da orientação a objetos e tenho dificuldades na elaboração da arquitetura de software,eu criei algo semelhante a uma máquina de estado para o inimigo perseguir o principal e estou utilizando o cálculo da distancia euclidiana para detectar colisões,pois a função de capturar pixels no canvas dá muito erro,e mesmo assim não está perfeito,eu não estou utilizando algoritmo de path,pois preciso aprender a criar um game utilizando perspectiva.
    Eu estou evoluindo cada vez mais,mas demora muito tempo até chegar num nível profissional.

    • Everton Vieira 27/12/2012 at 19:47 - Reply

      Olá André,

      Legal a iniciativa, poste aqui (ou no fórum) o andamento do projeto para podermos ajudar ;)

Deixar um Comentário