O poder de uma boa inteligência artificial
Tags: ai, gamedev, braziliandevs
Published: 2021-12-01 13:35:55

*English version* [here](https://dev.to/isabellaherman/the-power-of-a-good-artificial-intelligence-228i).

Cada vez mais as *I.A.’s* (Inteligência Artificial) estão presentes no nosso dia a dia. Desde assistentes virtuais que te contam uma piada, te contam curiosidade, ligam as lâmpadas e fecham as portas da sua casa até soluções em grandes empresas corporativas.

Se fosse possível dar um pulo na década de 50, iríamos acompanhar o surgimento das IA’s e ver que IA em videogames é uma ramificação distinta e diferente da IA ​​acadêmica, e o principal motivo é que ela lida e reflete comportamentos humanos.

Os seres humanos não são máquinas, fomos feitos para viver em sociedade, conversamos com quem nos identificamos. Nesse artigo eu descarto a ideia de “os opostos se atraem”. O jogador tem que se identificar com o mundo e uma boa IA vai te ajudar nisso.

Do ponto de vista técnico uma IA para jogos nada mais é que um monte de condições: *“if”* aqui, *“if”* ali, *“if”* lá. Mas se essas condições partirem de um olhar crítico do ponto de vista psicológico, o jogo muda.

## IA vs MENTE DO JOGADOR

Os jogadores não querem uma boa IA no seu jogo. Os jogadores querem experiências que façam eles se sentirem no poder, se sentirem bons em algo, querem ser recompensados com a vitória. Os seres humanos não são máquinas, temos reações que devem ser exploradas pelo game design.

“Ah, mas se os jogadores não gostam de uma IA difícil, por que Dark Souls faz tanto sucesso?” A resposta é simples. A IA de Dark Souls não é difícil, o jogo também não. Ele só trabalha numa soft skill muito rara nas pessoas hoje em dia: a paciência. Paciência em esperar para ler e entender os passos de cada agente do jogo. 
É tão simples, mas como é uma dificuldade real nos dias de hoje, o jogador se sente o melhor do mundo ao vencer um combate. 

Ficou claro a diferença de complexidade e desafio? O design e aplicação de IA’s devem ser desenhados para estimular uma sensação de superioridade e controle, com o jogador enfrentando situações que equilibram a dificuldade.

Por exemplo, você está produzindo um jogo que se passa na segunda guerra mundial. Em um cenário de guerra é normal encontrarmos inimigos armados, bombas de fumaça, minas terrestres, tanques de guerra, automóveis blindados, etc.
Você pensou em uma missão onde o jogador terá que parar o avanço de um caminhão blindado carregado com suprimentos para o exército inimigo. O caminhão tem uma vida X e pode explodir com o jogador atirando explosivos por exemplo, mas quanto tempo isso levaria? A resistência de um automóvel blindado é muito mais forte do que o poder destrutivo do armamento do jogador, podendo causar uma experiência cansativa com o passar do tempo.

Com uma IA podemos achar soluções mais interessantes. O caminhão é muito forte porém ele é dirigido provavelmente por um NPC (non-player character), então como o jogador pode tirar a atenção desse NPC pra que ele pare o caminhão, desça para ver o que está acontecendo, assim permitindo um combate mais justo e uma experiência de vitória positiva? O jogador pode usar bombas de fumaça, arremessar objetos, usar sinalizador entre outros eventos que façam sentido no contexto.
Uma simples condição com o olhar voltado ao psicológico do jogador, gerou um sentimento de vitória e superioridade dele em relação ao jogo. Entender as reações emocionais do jogador que estão ligadas com as ações do jogo é fundamental.


## O PAPEL DA IA NA IMERSÃO



Um grande erro dos jogos quando o assunto é imersão, é colocar o jogador como o único ser vivo do jogo, o que não está errado em teoria, mas como criadores de jogos, precisamos ser mais céticos com a realidade.

A franquia GTA tem sua importância e notoriedade na indústria, e vende a ideia de um universo com experiência realista de mundo aberto, que parece mais um simulador de dirigir carro. Você entra no carro, vai do ponto A ao B e todo universo do jogo praticamente para, esperando o jogador concluir o que estava fazendo.
Experiência de um mundo aberto onde o centro das atenções é o personagem principal não funciona. O personagem principal deve ser o centro de atenção do jogador, não do mundo.

Vamos fazer uma analogia da nossa vida como se estivesse representada em um jogo. Hoje você precisa acordar e ir para o trabalho, esse é o compromisso mais importante do dia então essa é sua **missão principal**. Enquanto se arruma para o trabalho você começa sentir uma azia, às vezes é pela comida mexicana que você jantou na noite passada e então decide passar em uma farmácia a caminho do trabalho. Diferente do trabalho, você não necessariamente precisa ir na farmácia, mas vai te beneficiar em algo além de ter ligação com alguma ação do seu dia, então essa passa a ser sua **missão secundária**. 
Até aí bem comum como nos jogos, mas a vida não para aí. Não para aí porque o mundo é muito maior e existem outras pessoas, variáveis, acontecimentos, etc, que devem ser levados em conta se você tem uma proposta de mundo aberto.

No Far Cry 4 existe uma IA diretora que se assegura de manter o universo vivo. Novamente levando em conta a temática de guerra, é de se esperar que existam pessoas precisando de ajuda, não só em situações de sequestro ou invasões, mas também em ajuda de arrumar algo que quebrou, e a realidade delas não deve ter nenhuma relação com você, jogador, que está no papel de um recém chegado do exército.

Qual seria o sentido de colocar um evento aleatório como esse no seu mini mapa? Nenhum. Mas ele ainda está lá, porque o universo de um jogo de mundo aberto é, e deve ser maior que o universo do personagem principal. E é aí que a magia da imersão do Far Cry 4 entra. Se você estiver usando fone é possível ouvir os NPCs te chamando, sem nenhum aviso na tela, perguntando se você pode ajudar, tal qual seria no mundo real.

Esse mesmo exemplo se aplica ao GTA, é comum conforme o jogo desenrole apareça no minimapa do jogador um símbolo de pessoas aleatórias que você pode oferecer carona, mesmo essas não tendo relação alguma com a *lore* do personagem. 

Mas sejamos honestos, um dos maiores desafios dos desenvolvedores de jogos é montar um sistema de jogo mundo aberto que funcione, construindo eventos interessantes e diversificados para os jogadores explorarem, e se ao longo desses anos de franquia a RockStar pecou nesse quesito, ela com certeza já se redimiu com o título Red Dead Redemption 2, na qual IA atua na imersão do universo com maestria.

As comparações de Far Cry 4 e Grand Theft Auto V param por aqui, mas vamos explorar tecnicamente como a IA diretora comanda todo território do jogo e faz ele parecer mais vivo.

## IA DIRETORA NA PRÁTICA

Primeiro vamos entender o conceito de *Systemic AI* (IA Sistêmica), uma estrutura sistêmica dependente de NPC's: inimigos, civis, aliados, animais, etc. 
Cada agente NPC citado tem sua própria estrutura de comportamento e gerenciar todos eles juntos não é uma tarefa simples e muito menos fácil, é agora que a IA diretora entra.

Uma IA Diretora cujo o nome é bem sugestivo, assim como o diretor de uma organização, controla o ritmo, adequação e intensidade dos eventos de um jogo.

A imersão do universo de Far Cry 4 é sem dúvidas uma das melhores que já joguei, levando em conta a época que o título foi lançado e as melhorias técnicas desde o seu antecessor Far Cry 3, que foram reconhecidas por críticos da indústria, conseguindo uma nota 85 no metacritic.

A IA diretora de Far Cry 4 monitora os passos do jogador acompanhando o mesmo por um raio de 500 metros, e popula esse raio com os eventos do jogo. Mesmo com o raio limitado, popular esse raio com toda a cadeia sistêmica teria um custo computacional muito alto, então a IA diretora conta com a regra de: se o player não vê, logo, não acontece.

Somado a essa supervisão geral, cada agente NPC é regido por uma máquina de estados finita (FSM), um modelo matemático usado para representar circuitos lógicos muito comum em jogos principalmente pela necessidade de pouco processamento. A FSM de cada agente é projetada para reagir aos estímulos próximos feitos pelo jogador.

![diagrama de FSM](https://cdn.discordapp.com/attachments/898036167361056818/913454000538533929/farcry-4-fsm-isabellaherman.png)

Fiz o diagrama acima analisando o comportamento de um animal carnívoro dentro do jogo FC4. Esses tópicos representam os comportamentos designado a esse circuito.

A seguir, os estímulos que desencadeiam as ações da FSM:

![diagrama de FSM 2](https://cdn.discordapp.com/attachments/898036167361056818/913454000257503242/farcry-4-fsm-isabellaherman2.png)

Lógica dos componentes iniciais do diagrama:

```csharp
enum type {Prey, Predator}
enum agentBehaviour {Awake, Hunting, Eating, Patrolling, Recovering}

case agentBehaviour.Awake:
  if(type == type.Predator){
    //if > se estiver faminto:
     agentBehaviour.Patrolling();
  }
break;

case agentBehaviour.Patrolling:
  //achou um type = prey no range:
  agentBehaviour.Hunting();
break;
```
É claro que para cada um dos casos exibidos existem N funções que devem ser analisadas para completar a lógica de cada um dos estados. Você pode considerar como um exercício analisar o diagrama e terminar a lógica restante ou até mesmo criar o seu próprio diagrama analisando a IA de algum jogo que te agrade.

Esse é meu primeiro artigo e espero que ele tenha apresentado um outro ponto de vista em cima de um assunto que cada vez mais se populariza no mundo. 

###Referências:

MAUW, Sjouke. Finite state machine diagram of Protocol 3. Research Gate. Março de 1996.

CARRILLO, Richard. Interviewing For Game Design. GDC Session. 2017.

THOMPSON, Tommy. The Definition of [Artificial] Insanity: The Systemic AI of Far Cry. Informa, 12 de Outubro de 2017.

SHUMMON MAASS, Laura. Artificial Intelligence in Video Games. Towards Data Science, 01 de Julho de 2019.

Davebot. Finite state-machine example. Undefined Games, 24 de Abril de 2019.

Far Cry 4 Review Page. Metacritic, 18 Novembro de 2014.