Inteligência Artificial para Jogos


O que é Inteligência Artificial?
O ramo da inteligência artificial está ligado à ciência da computação, no qual se pesquisa e desenvolve a  implementação da capacidade de inteligência em máquinas de forma artificial, visando a obtenção de sucesso de forma perfeita, isso significa que ela é planejada para nunca falhar.
A Inteligência artificial pode auxiliar o ser humano em diversos situações cotidianas, dentre elas a medicina e o transporte, por exemplo.
Em um cenário onde a I.A está lidando com vidas humanas (como nos exemplos acima), é inaceitável falhas por parte do programa, pois um carro autônomo guiado por uma I.A não pode cruzar rotas indefinidas ou atropelar pedestres, bem como uma I.A que auxilie um médico em uma cirurgia jamais poderia apontar um dado errado, fazendo o médico cometer uma falha.


Game IA
Porém, a I.A também pode ser aplicada a jogos eletrônicos, o que conhecemos como "Game I.A". Esse tipo de inteligência artificial possui este nome pois diferente da I.A "clássica", a I.A para games pode e deve aceitar falhas, pois uma inteligência artificial que nunca perde ou nunca erra tende a fazer com que o jogo não se torne divertido e imersivo.
A Game I.A é projetada para desafiar e imitar o ser humano, portanto, como somos passíveis a falhas, a I.A também deve ser.

Como uma I.A pode imitar uma pessoa?
Existem diversas técnicas para se desenvolver uma I.A que busque "imitar" o comportamento humano, como as técnicas de "cheating" (trapaça), onde a I.A percebe que o jogador está tendo muita facilidade para jogar e se utiliza de alguma trapaça interna para dar a sensação de "habilidade" por parte da I.A, quando na verdade ela está apenas quebrando regras, fazendo com que o jogo ganhe uma certa sensação de "dificuldade" e "desafio".
Um exemplo típico de aplicação de cheating para I.As são nos jogos de corrida, onde se o jogador estiver muito na frente, a I.A pode se utilizar de trapaça para fazer com que um carro do oponente "ganhe super velocidade" para se aproximar do jogador, dentre outras trapaças.

 

Crash Bandicoot Team Racing

Mas para a I.A ser convincente é necessário que haja um equilíbrio por parte dessas tarefas e técnicas, evitando que a I.A pareça estúpida (tornando a jogabilidade fácil demais), ou em contra-partida evitando dela estar muito difícil, desmotivando o jogador.
Esses ajustes podem ser feitos através de testes e aplicados de acordo com técnicas de balanceamento para jogos.
Mas falando em testes... Existe um tipo de teste para máquina muito interessante que visa simular o comportamento humano e convencer uma pessoa de que a I.A é outra pessoa por de trás do teste e não de uma máquina.

O teste de Turing


Um software que se utiliza deste recurso é o "Robô Ed" da Petrobras:


 
Onde você pode conversar com o Robô e ele poderá lhe responder em tempo real, dando a sensação de que você está conversando com outra pessoa, quando na verdade não passa de uma I.A

Uma outra aplicação que se utiliza do teste de Turing é o gênio "Akinator", onde ele tem a capacidade de "adivinhar" a pesonalidade que o usuário pensou a partir de um acervo de perguntas que ele possui em seu banco de dados e das respostas que o usuário vai fornecendo de acordo com essas perguntas:


 

A título de curiosidade, após 60 anos do teste de Turing ter sido criado, uma máquina passou pela primeira vez no teste. Segue a fonte: https://tecnoblog.net/157935/computador-passou-primeira-vez-teste-de-turing/

Para o caso dos games, o teste de Turing costuma ser mais direto: Se a I.A por de trás das jogadas/ações no jogo ser convincente o bastante a ponto de imitar com perfeição (ou quase perfeição) o comportamento humano, então ela está aprovada no teste.
Um exemplo para se pensar nisto é num jogo de cartas: Decorrente as jogadas realizadas por parte de uma I.A,  você saberia diferenciar se quem está jogando contra você é uma máquina ou um ser humano? Se você ficou em dúvida ou acha que pode ser um humano, a I.A passaria no teste.

Agente Inteligente
 

Um agente inteligente em jogos é uma parte do programa que age de forma "autônoma", ou seja, de acordo com mudanças e alterações externas ao seu redor, ele é capaz de tomar alguma decisão com base nessas informações e se adaptar/agir sobre estas mudanças.
Os agentes inteligentes são tudo o que não são controlados por seres humanos (non-player-character) em um game, como o carro do oponente em um jogo de corrida, o personagem adversário em um jogo de luta, ou o segundo jogador num jogo de Xadrez ou Damas, por exemplo.

Tipos de agentes
Os agentes inteligentes podem ser classificados em quatro tipos distintos:
1. Agente estímulo-resposta: São agentes mais simples, baseando-se totalmente num sistema de regras pré-definidas e que vai agir sempre dentro dessas regras, como por exemplo um agente de patrulha: lhe persegue apenas se você entrar no raio de visão dele, e pára assim que você não for mais perceptível.
2. Agente com memória: É um agente estímulo-resposta, porém com capacidade de armazemanento de memória, ou seja, possui a capacidade de armazenar dados com relação ao ambiente externo, podendo agir de acordo com o processamento destes dados. É menos previsível que um agente estímulo-resposta.
3. Agentes guiados por objetivos: São agentes mais complexos, onde visa a obtenção de sucesso de acordo com determinado objetivo.
4. Agentes guiados pela função de utilidade: Esses agentes também visam a obtenção de sucesso em atingir um objetivo, porém num cenário em que o modo como essa obtenção de sucesso possa ocorrer em diversas situações, portanto, este tipo de agente tende a procurar qual a melhor alternativa para se atingir determinado objeto, dentre as diversas possibilidades.

Modelagem de um agente


 
Para desenvolver um agente inteligente, ele precisa necessariamente ser um agente que possa receber informações de um ambiente externo através de sensores, e poder "viver" e se adaptar a tal ambiente se utilizando de atuadores. Na verdade, a definição de um agente se dá através da existência dessas características.
Para ludificar a explicação de tais itens, imaginemos a construção de um agente num ambiente computacional de jogos:

Ambiente: É toda a parte externa deste agente, onde ele está inserido e todas as coisas que fazem parte deste ambiente como outros agentes, e etc.
Um exemplo, um jogo de corrida: O ambiente são os outros carros, o jogador humano, os itens de coleta do game, a pista de corrida, o cenário da fase, os objetos que compõem o cenário(como árvores, placas, pedras, e etc), a linha de chegada, dentre outros. Em resumo, o ambiente é tudo o que é externo ao agente.

Sensores: São através dos sensores que o agente pode perceber o ambiente ao seu redor. Ainda no mundo dos jogos, o sensor pode ser a detecção de movimento do inimigo, um sistema de colisão (para saber se algo encostou no agente ou não), o seu raio de visão, e etc.

Atuadores: Os atuadores são a parte "física" do agente, o que possibilitará do mesmo viver naquele ambiente, como no caso de um robô, pode ser o seu motor, pernas e braços mecânicos, engrenagens, esteiras para movimentação, e etc. 
No cenário de jogos, os atuadores são os algoritmos(códigos) que podem fazer o agente agir de acordo com o ambiente, como por exemplo, um algoritmo de movimentação ou tomada de decisão.

Medida de desempenho: É a parte de cálculos do agente, onde ele vai registrar dados de acordo com o ambiente externo e interno e de acordo com estes valores, poderá agir em função a eles.
Um exemplo prático a esta abordagem seria num jogo de esportes: A medida de desempenho seria as informações correntes da partida, como por exemplo, os pontos das equipes (ou jogadores), o tempo da partida, a quantidade de derrotas, empates e vitórias dos times, e etc.

Custos 
Para o agente realizar determinadas sequências de ações, são contabilizados os seus custos, ou seja, em quantos passos aquele agente irá realizar todas as ações até atingir o seu objetivo?
Imagine o chefão de jogos de plataforma: Normalmente eles realizam sequências de ações (comumente em ciclos repetitivos) para atingir seu objetivo final (destruir o personagem principal: você).
Então para determinar o custo de ações de um agente, basta apenas enumerar as suas possíveis ações sequencialmente, por exemplo:

1. Detectar jogador;
2. Se detectado, jogador bola de fogo;
3. Desviar do golpe do jogador para a esquerda;
4. Pular sobre o jogador;
5. Detectar novamente jogador;
6. Se detectado, jogador duas bolas de fogo;
7. Desviar do golpe do jogador para a direita;
8. Pular sobre o jogador
E assim o ciclo se procede até o agente atingir seu objetivo (destruir o jogador) ou até que o player possa o vencer.
No final, temos como custo a um boss que segue essas ações um total de 8 passos.
 

Bowser - Main Boss da franquia de games Mário Brios

Finalização:
Então nesta parte do artigo nós falamos um pouco sobre as diferenças da Inteligência Artificial e da Game IA, expliquei um pouco sobre Teste de Turing e Agentes.
No próximo artigo continuaremos abordando o assunto sobre Game IA, mas focado agora em técnicas, como máquinas de estado finito e lógicas valoradas e multivaloradas, portanto, aguardo vocês lá!

Comentários