Na
primeira parte do estudo de IA
do Horizon Zero Dawn , falei sobre como o jogo cria rebanhos de máquinas animais controladas por IA. Isso requer um sistema complexo de hierarquia de agentes, no qual cada máquina pode tomar decisões sobre como se comportar usando o planejador de rede de tarefas hierárquicas, e os agentes do grupo atribuem conjuntamente funções e responsabilidades da máquina como parte do rebanho. Tudo isso faz parte de um sistema chamado "The Collective", que suporta o ecossistema de todas as máquinas do mundo quando o usuário está no jogo.
Neste artigo final, examinaremos mais de perto os sistemas que máquinas individuais podem usar como parte de seu comportamento básico. Eles incluem sistemas de sensores, navegação para carros terrestres e voadores, bem como conexão estreita de comportamentos de IA com sistemas de animação, o que fornece a cada carro comportamento perigoso, mas ao mesmo tempo realista.
Sensores e movimento
Primeiro, vejamos os sensores usados pelas máquinas para acionar as reações da IA e também aprendamos como a animação está ligada ao processo geral de execução de seus comportamentos. A máquina pode usar um número significativo de sensores exclusivos: sensores visuais, por exemplo, os olhos do
"cavaleiro" , sensores de radar e presença dos
"striders" , sensores auditivos que captam sons de explosões distantes e jogam pedras próximas, além da capacidade de sentir os jogadores tocando a máquina. Cada máquina possui um conjunto desses sensores, calibrados por seus próprios valores de sensibilidade, por isso é muito fácil obter, por exemplo, um
"cavaleiro" ou
"ruminante" , mas
é muito mais difícil capturar um
"destro" .
O sistema tradicional de sensores é capaz apenas de rastrear eventos em torno da IA e de "vê-los" / "ouvi-los", mas, na realidade, o sistema de sensores possui muito mais nuances. Eles usam pacotes de informações anexados a objetos que podem causar estímulos em um dos sensores das máquinas: esses objetos podem ser um jogador, outros NPCs, pedras, flechas voadoras, outros carros e a natureza. Esses dados informam ao destinatário (a máquina que sentiu algo) informações sobre o que ele encontrou e sua condição. Portanto, máquinas, como os NPCs humanos, podem entender a diferença entre o cadáver à sua frente e a flecha, assobiando ao lado de suas cabeças; além disso, isso garante que o jogador escondido na grama alta ou atrás das árvores não seja perceptível - as máquinas recebem informações de que ele é invisível nesse estado.
Cada caractere de IA, seja uma máquina ou uma pessoa, é capaz de processar e interpretar dados sensoriais de maneiras diferentes; portanto, algumas informações podem ser ignoradas por alguns caracteres, enquanto outras respondem adequadamente a elas. De fato, dependendo da potência do sensor na máquina, ele pode reduzir a quantidade de dados recebidos do evento do sensor que pode ser lido. Isso permite que você controle as propriedades emergentes do jogo para que cada tipo de personagem possa responder às informações de uma maneira única e única.
Se a IA precisar executar uma ação com base nesses dados sensoriais, ainda precisamos torná-la realista. Portanto, quando a máquina decide tomar alguma ação, por exemplo, mudar para um novo local, investigar a fonte de ansiedade ou atacar o jogador, há um problema de animar a execução dessas ações da maneira mais realista possível. A animação dessas máquinas é uma tarefa muito difícil: elas devem parecer simultaneamente com protótipos ativos e ter um comportamento distinto de máquina. Para isso, é necessário que os sistemas de navegação e combate levem em consideração a distância que o veículo deve percorrer, e a cadeia de ferramentas de animação deve ajustar os ossos das animações e misturá-los de acordo com a distância e o tempo de movimento percebidos.

Isso garante que, a qualquer distância de movimento e velocidade da máquina, ele possa iniciar a animação, vá para a parte principal do comportamento e depois misture-a corretamente e no momento certo. Isso é importante para comportamentos como correr para um ponto específico, quando a máquina precisa não apenas desacelerar e parar no ponto certo. Mas é especialmente importante na batalha. Muitas das animações usadas para ataques têm duas seqüências separadas: “swing”, que indica o início do ataque, seguido pela conclusão, causando danos.
O Horizon Zero Dawn usa um método semelhante ao que eu falei no artigo
DOOM AI : o sistema monitora o movimento atual da máquina, mistura as animações de movimento ou ataque para chegar aos pontos desejados e depois faz o carro aparecer ou parar exatamente no final.
Navegação
Há outra tarefa séria sobre a qual ainda não falei - a navegação. A tarefa de mover carros ao redor do mundo é muito complexa, existe uma grande variedade de tipos únicos de inimigos, e todos eles têm tamanhos e formas diferentes. Portanto, eles devem se mover ao longo do relevo de maneira natural para eles. Além disso, eles devem reconhecer alterações na geometria local e se adaptar a elas, ou simplesmente ignorá-las, dependendo do tipo de máquina. Para fazer isso, você precisa de uma ferramenta de IA amplamente usada chamada malha de navegação. Navmesh armazena informações sobre como um personagem em particular pode se mover no mapa com base no que são considerados obstáculos no mundo para ele. Embora possamos calcular tudo isso durante a execução do jogo, esses dados geralmente são incorporados ou "cozidos" antes do lançamento do jogo e, se necessário, carregados na memória.
Dado que o mapa do
Horizon Zero Dawn é enorme e apenas determinados segmentos são necessários em um determinado momento (a IA está ativa e se move apenas perto do jogador), uma malha de navegação é criada durante o jogo, mas apenas nas imediações do jogador. Mas o interessante é que não é usada nenhuma navmesh, mas seis! Quatro deles fornecem movimento de personagem com base no tamanho do objeto: pequeno, médio, grande ou enorme. Portanto, pessoas e cavaleiros podem se mover em torno de uma pequena malha e, para máquinas como raios, a malha naval é quase inteiramente deles. Além disso, existem duas malhas de navegação adicionais: uma para máquinas flutuantes, por exemplo, para “clicar em dentes”, bem como uma malha única que faz com que as máquinas permaneçam em locais convenientes, caso o jogador tente escalá-las.

Em cada um desses casos, os obstáculos podem bloquear ou alterar a estrutura das malhas de navegação, e o sistema recalcula as alterações em tempo real, para que obstáculos em movimento (e até outras máquinas) possam afetar a capacidade de se mover pelo espaço. O interessante aqui é que os obstáculos podem ter propriedades diferentes, e podem ser completamente intransitáveis ou simplesmente indesejáveis de se mover - mas isso depende muito do estado de comportamento da máquina de IA. Conforme declarado na primeira parte, após a criação, o patrulhamento ativo de carros evita a vegetação na qual você pode se esconder, mas ao explorar as fontes de ansiedade mais próximas, a grama permanece indesejável e, ao mesmo tempo, a máquina ainda pode passar por ela, se necessário. O mesmo princípio se aplica a pequenas pedras e árvores: são objetos intransitáveis, com exceção de máquinas grandes, como
“hipopótamos” ,
“roedores de pedra” e
“trovões” . Esses monstros podem quebrar pedras e arrancar árvores, mas apenas se estiverem com raiva ou perseguindo um jogador. Estando em um estado de outros comportamentos, essas máquinas percebem obstáculos como qualquer outro.
Movimento do ar
Embora essa cadeia de ferramentas de navegação gere veículos terrestres de todos os tamanhos e formas, ela não funciona de modo algum para aqueles que voam no ar. Personagens que não são jogadores que se movem pelo ar, não só precisam levar em consideração os obstáculos mais próximos, para não colidir com árvores ou penhascos, mas também devem saber a altura da geometria ao seu redor. O mundo de Horizon Zero Dawn está cheio de colinas, florestas, falésias e subidas íngremes ... Dois tipos de carros voadores, uma
"pipa" e um
"petrel", precisam saber viajar pelo ar de forma que você possa decolar, viajar por rotas de patrulha, terra, assim como recusar e, se necessário, atacar o jogador. Para isso, o jogo não possui apenas um sistema de malha de navegação em terra, mas também um sistema de ar completamente separado.

Sua criação acabou sendo uma tarefa difícil para o departamento de desenvolvimento de jogos de IA. Ele usou uma técnica chamada "planejamento de caminho hierárquico sobre mapas MIP". O mapeamento MIP é uma técnica usada em computação gráfica. visando minimizar a quantidade de memória ocupada pela textura ou imagem. Para fazer isso, um conjunto de imagens idênticas é criado com uma resolução gradualmente decrescente. Essa solução é ideal para controlar o nível de detalhe nos jogos: os objetos a centenas de metros do player são visíveis, mas usam menos memória de textura do que aqueles que estão ao lado do player e usam a qualidade máxima. Essa abordagem foi usada para a navegação porque, quando o carro voa pelo caminho traçado no mundo, ele não precisa conhecer com precisão a geometria local do local em que estará em um minuto, mas é necessário conhecer a localização da Terra antes de precisar pousar. Um sistema de planejamento de caminho para veículos aéreos usa texturas MIP para criar um mapa de altura da geometria local - uma estrutura de dados que nos diz a altura em uma determinada posição x / y no mundo. As texturas MIP têm quatro níveis e, à medida que se aproximam do solo, tornam-se mais complexas e realistas. O nível 3 é um modelo simples e abstrato, e a textura do nível 0 é um mapa bastante preciso das alturas do mundo.

Quase da mesma maneira que as malhas de navegação, as texturas mip são criadas durante a execução do jogo e conforme necessário: ao voar dentro de uma determinada área, a máquina não precisa conhecer os dados de altitude de todo o mundo. Quando eles precisam voar para outro local, o AI de navegação de voo inicia o algoritmo de busca A * pela textura MIP de nível mais alto, ou seja, calcula a versão mais simples da rota de vôo usando a versão aproximada da geometria. O algoritmo A * faz com que voar acima e abaixo de obstáculos seja mais caro do que voar ao redor deles, de modo que os carros flutuam mais perto das montanhas e das rochas do que sobrevoam. Cada vez que o sistema chama o algoritmo A *, ele possui apenas um número limitado de iterações; portanto, após o cálculo do caminho usando a textura mip mais simples (nível 3), ele pega um determinado segmento do caminho calculado e o aprimora, emprestando dados dos níveis 1 e 0, para torná-lo mais realista e consistente com a geometria. Além disso, suaviza as rotas de maneira a excluir inclinações acentuadas e curvas acentuadas, tornando-as mais realistas. Esse sistema funciona muito bem, qualquer máquina voadora no ar sempre tem um plano de vôo (mesmo quando está ruim) e, se necessário, pode melhorá-lo chamando repetidamente o algoritmo de busca para que o caminho se torne cada vez mais natural. Além disso, ele usa efetivamente a memória, mas essa abordagem tem uma desvantagem - uma vez que se baseia na altura máxima de uma determinada área do mapa. os carros não podem voar debaixo de pontes ou arcos de pedra, mas na maioria das vezes o jogador não percebe isso.

Graças às texturas navmesh e mip aerotransportadas no solo, as máquinas voadoras podem coordenar ataques, touchdowns, ataques de mergulho e até pousos de terra de acordo com a geometria. As máquinas que pairam sobre o jogador durante o ataque ainda usam o plano de vôo pré-calculado, mas não necessariamente se movem ao longo desse caminho e reproduzem a animação correspondente. A velocidade do carro está ligada ao modo (voo, pairar ou pairar), para que eles possam circular realisticamente acima do jogador usando a mesma ferramenta de navegação.
As decolagens e aterrissagens usam um sistema separado que interage com a navegação de vôo e a malha de navegação terrestre: procura posições adequadas na malha na qual você pode pousar (geralmente esses são pontos um pouco mais acima do solo do que a média local) e, em seguida, selecionam os ângulos e a velocidade. Aterragem, o carro usa uma navmesh terrestre apropriada ao seu tamanho. Na verdade, o mesmo princípio se aplica ao cair, apenas neste caso as únicas posições de aterrissagem adequadas são baseadas no curso atual da máquina e, embora a colisão pareça menos graciosa, ela realmente usa as mesmas ferramentas. Um caso de fronteira especialmente programado aqui é o ataque de mergulho
"petrel" .
O Petrel circula acima do jogador e depois cai na direção da posição atual do jogador. Ele usa os mesmos sistemas, mas de uma maneira muito mais dramática. No entanto, há outro truque: girando sobre o jogador, o petrel geralmente espera antes do ataque até fechar o sol. Talvez, ao jogar o jogo, você tenha percebido isso, e isso foi feito intencionalmente. Ao testar a IA
"petrel", o departamento de controle de qualidade notou que periodicamente cobre o jogador com o sol, e isso torna seu ataque mais desorientador, porque durante o mergulho a luz se move e cega o jogador. Então isso aconteceu completamente por acidente, mas o departamento de desenvolvimento da IA decidiu que isso deveria acontecer com mais frequência.
Em conclusão
Horizon Zero Dawn cria uma jogabilidade única; um mundo cheio de vida mecânica se torna um lugar onde se desenrola a história de Eloy e os segredos de seu passado. Sistemas de inteligência artificial e jogabilidade de máquinas são o aspecto mais importante da criação deste futuro apocalíptico explorado pelos jogadores. Foi um trabalho em larga escala para uma equipe de 10 pessoas, que levou vários anos de desenvolvimento. Criar sistemas de IA dessa magnitude, funcionando bem em jogos com um enorme mundo aberto, está se tornando uma tarefa cada vez mais difícil. Portanto, a comunidade de desenvolvedores de jogos é vital para compartilhar suas experiências com o resto.
Referências
- Julian Berteling, 2018. "Além do Killzone: Criando novos sistemas de IA para o Horizon Zero Dawn", GDC 2018.
- Arjen Beij, 2017. “A IA do Horizon Zero Dawn”, Game AI North 2017.
- Wouter Josemans, 2017. “Colocando a IA de volta no ar: navegando no espaço aéreo do Horizon Zero Dawn”, Game AI North 2017