IA em Games
Ao se tratar de Inteligência Artificial (IA), especificamente na indústria dos jogos, estamos lidando com um termo que, em muita das vezes, se relaciona a uma área diferente da AI que estamos observando recentemente. Com o surgimento de novas e incríveis aplicações, como de modelos generativos (Chat GPT, MidJourney, LeonardoAI), é cada vez mais comum observarmos IA e Aprendizado de Máquina(ML) como termos análogos. ML, porém, é uma subárea de IA, existindo vários outros métodos e algoritmos que podem ser utilizados.
A indústria dos games se baseia em grande parte nessa mescla fora de aprendizado de máquina, se focando principalmente em problemas de busca, que nem sempre necessitam de enormes quantidades de recursos de IA.
Alguns métodos de IA em Games fora de Machine Learning
Ad Hoc Behavior Authoring
São métodos de criação de comportamento específicos e personalizados. Estes são os mais populares para controle de personagens não-jogáveis (NPCs). Três algoritmos se destacam nesse campo: Máquina de Estados Finitos (FSM), Árvores de Comportamento (BT) e IA baseada em utilidade.
A FSM funciona representando diferentes estados (ou nós) e as transições entre eles. Cada estado armazena informações sobre uma tarefa específica e as transições refletem mudanças de estado. É uma boa ferramenta e relativamente simples de design, implementação, visualização e depuração. As FSMs, porém, podem encontrar dificuldades em jogos enormes e podem não ser tão flexíveis ou adaptáveis em ambientes dinâmicos.
Assim como a FSM, as BT também modelam transições entre um conjunto finito de comportamentos. No entanto, as BTs oferecem uma flexibilidade maior no design e são mais fáceis de testar, graças ao conceito de design modular. Essa característica as torna especialmente eficazes em jogos como Halo 2 e Bioshock.
Para superar as limitações de modularidade das FSMs e BTs, foram propostos métodos de IA baseada em utilidade. Nesse método, instâncias no jogo recebem uma função de utilidade específica que atribui um valor à importância da instância em questão. Enquanto FSMs e BTs avaliam uma decisão por vez, os métodos de IA baseada em utilidade examinam todas as opções disponíveis, atribuem utilidades a elas e escolhem a opção mais apropriada. Em comparação com outras técnicas de autoria ad hoc, a IA baseada em utilidade apresenta vantagens óbvias, como modularidade, extensibilidade e reutilização.
Como resultado, os métodos baseados em utilidade foram amplamente adotados em jogos notáveis como Kohan 2, Iron Man, Red Dead Redemption e Killzone 2. Essa abordagem tem demonstrado uma capacidade notável de criar comportamentos complexos e envolventes para personagens virtuais, elevando a experiência do jogador a um novo patamar.
Algoritmos de Busca em Árvore
Praticamente todos os problemas de IA podem ser transformados em problemas de busca, que podem ser resolvidos encontrando o melhor plano, caminho, modelo, função, etc.
Os algoritmos de busca em árvore podem ser vistos como a construção de uma árvore, onde o nó raiz é o estado inicial, as arestas da árvore representam as operações tomadas pelo agente de um estado para outro, e o nós representam o estados. A árvore precisa se ramificar, pois, normalmente, várias operações diferentes podem ser realizadas em um determinado estado. As principais diferenças entre os algoritmos de busca em árvore são relativos a posição e a ordem dos ramos.
Monte Carlo Tree Search (MCTS) é o algoritmo mais famoso no campo de busca em árvore. O loop central do algoritmo MCTS pode ser dividido em quatro etapas: seleção, expansão, simulação e retropropagação.
O MCTS, em particular, tem demonstrado seu poder ao dominar jogos desafiadores como Go, provando que a busca em árvore é uma técnica essencial na vanguarda da Inteligência Artificial, inclusive jogos.
Evolutionary Computation
Computação Evolutiva (CE), inspirada na teoria da evolução de Darwin, é um conjunto de algoritmos de otimização aleatória que envolvem várias soluções. Ela se baseia na evolução de uma população, onde cada indivíduo representa uma solução com um certo nível de adequação. Através de seleção e mutação, a população evolui gradualmente, tornando a solução ótima atual cada vez mais eficiente. A CE é atraente para a IA em jogos, pois pode gerar soluções altamente otimizadas em diferentes cenários, como Design de Personagens, Otimização de Estratégias de Jogabilidade, Geração de Níveis e Mapas, Inteligência dos Inimigos entre outros.
Machine Learning na indústria de jogos
O aprendizado de máquina pode ser dividido em aprendizado supervisionado (SL), aprendizado não supervisionado (UL) e aprendizado por reforço (RL). No SL o sinal de treinamento é fornecido como rótulos de amostra, enquanto no RL é a recompensa obtida do ambiente. Em vez disso, a UL tenta encontrar a correlação de entradas pesquisando padrões em todos os recursos de entrada na ausência de saída alvo como guia.
Cada tipo de aprendizado pode ter um tipo diferente de aplicação na indústrias de jogos. Aprendizado não Supervisionado, por exemplo, têm maiores aplicações em análise de dados sobre jogadores, muito importante na área de jogos mobile. Além disso, tem um histórico de aplicações bem antigo, com uma das suas primeiras aplicações no paper "Analyzing spatial user behavior in computer games using geographic information systems". Nele, foi realizado uma análise de comportamento de players dentro do jogo Tomb Raider, possibilitando analisar por cômodo certas informações de jogadores, como a quantidade de mortes, retratada na imagem abaixo.
Já com Aprendizado Supervisionado, tem-se principalmente a reprodução de comportamentos desejados mesmo em situações novas. Exemplos:
Forza's Drivatar - entende o comportamento do Player com dados de corridas e reproduz eles a partir de um npc.
Starcraft 2 AlphaStar - máquina aprende a a jogar que nem profissionais em Starcraft 2 a partir de dados de jogos feitos por profissionais.
Com Aprendizado por Reforço, criamos uma entidade inteligente, o agente, que se preocupa exclusivamente em acumular o máximo de pontos, chamados de recompensas, possível. Cabe ao desenvolvedor atribuir um objetivo baseado na entrega dessas recompensas para o Agente. Como exemplo, possp definir um agente sendo uma mesa equilibrista que terá como objetivo manter uma bola a todo momento em sua superfície. Através disso, formulo que agente recebe uma recompensa negativa, análogo a punição, se deixar a bola cair da mesa e uma recompensa positiva a cada segundo que a bola estiver sobre sua superfície. Caberá ao agente criar um manual de como agir a partir de cada observação que fizer. Esse manual é chamado de política.
Um exemplo em um jogo famoso é a contínua competição no Minecrafto, o Mine RL, que fornece uma sequência de ações que o agente necessita fazer no menor número de episódios possível. Sendo a última ação a aquisição de um diamante.
Muitas das vezes, conseguimos ver uma mescla na utilizações de diferentes tipos de aprendizado para amplificar a potência de RL. O DreamerV3 é um exemplo estado da arte (SOTA) nessa competição.
Mais exemplos de ML em games
Motion Matching
Isso está sendo expandido para permitir que as animações sejam cada vez mais flexíveis, como por exemplo para capturar movimentos em terrenos rochosos, lidar com características geométricas únicas, responder a obstáculos e compensar a direção e a taxa de movimento dos personagens.
Texture Upscaling
Criar um modelo capaz de modificar uma imagem para uma resolução maior. Com isso, é possível fazer upscaling nos gráficos de jogos antigos. Mass Effect Remaster é um exemplo do uso dessa tecnologia em grande escala.
Garantia da Qualidade
AIs testam os jogos para procura de bugs e problemas. Já existem casos, como no The Division 2, em que foi usado Symbolic Learning. Battlefield 1 também contou com este recurso.
Detecção de cheats
Detecção de cheats que faz com que não precise da instalação de spyware no computador dos usuários. O Call of Duty e Warzone estão usando o Ricochet, que conta com essa tecnologia. Ou também o overwatch do CS GO, que captam dados e são enviados para analistas humanos
Modelagem da experiência do jogador
Discernir a capacidade e o estado emocional do jogador, de modo a alterar o jogo de forma adequada. Isso pode incluir o equilíbrio dinâmico da dificuldade do jogo, que consiste em ajustar a dificuldade de um videogame em tempo real com base na habilidade do jogador. A IA do jogo também pode ajudar a deduzir a intenção do jogador (como o reconhecimento de gestos).
Um exemplo de uso é o jogo Nevermind, que utiliza dispositivos periféricos para realimentar e mudar o jogo. Quanto mais com medo você apresenta, mais difícil ficará o jogo. Para isso, utilizaram Intel RealSense, uma câmera de profundidade que permite perceber características 3D.
Procedural-content generation
Criação de elementos do ambiente do jogo, como condições ambientais, níveis e até música, de forma automatizada. Os métodos de IA podem gerar novos conteúdos ou histórias interativas.
Mineração de dados sobre o comportamento do usuário
Isso permite que os designers de jogos explorem como as pessoas usam o jogo, quais partes elas mais jogam e o que as fazem parar de jogar, permitindo que os desenvolvedores ajustem a jogabilidade ou melhorem a monetização. O exemplo do Tomb Raider, que utiliza UL, é um caso de uso.
Mas claro, sempre permanecendo atentos com as restrições no uso de dados de usuários e leis como LGPD
Abordagens alternativas para NPCs
Isso inclui mudar a configuração do jogo para aumentar a credibilidade do NPC e explorar o comportamento social em vez do comportamento individual do NPC.
Empresas com ML em games
O mercado de IA em jogos vem crescendo muito, cada momento surge empresas melhorando e auxiliando a criação de jogos, algumas destas empresas para mencionar:
Convai - IA conversacional para mundos virtuais
Inworld AI - NPCs de IA para jogos
Layer AI- Criação de ativos de jogo com pixels. Totalmente consistente com seu próprio estilo.
LMNT- Fala realista.
modl.ai - Inúmeras maneiras de tornar seus projetos de jogos mais rápidos e inteligentes.
Polyhive - Reduzir o tempo de criação de conteúdo 3D e aumente a produtividade dos artistas em grande escala
Replica Studios - Dubladores éticos de IA para jogos, filmes e animação
Zibra AI - Simplificar a criação de efeitos visuais interativos e agilizando a geração de conteúdo e personagens 3D.
Fraquezas de ML em games
É necessário muitos dados e tempo
Se der algo errado, pode ser que seja gasto muito tempo refazendo o código e retreinando.
2 Pode ser complicado para mexer em comportamentos de NPCs
Pois seria necessário retreinar a rede, dependendo da situação.
Pq Machine Learning não é tão presente em Game Dev
Machine Learning normalmente não tem sido visto como uma solução prática para muitos dos desafios que os desenvolvedores enfrentam, especialmente no design de personagens não jogáveis. Com apenas algumas exceções a essa regra.
Desenvolvimento iterativo e rápido
Muitas das partes do jogo precisam ser testadas e de forma rápida, retreinar uma rede pode ocupar muito tempo desse processo.
NPCs em jogos passam por muito refinamento. Eles são testados para bugs, modificados para engajamento e iterados para trazer um alto nível de polimento. O aprendizado de máquina realmente não se encaixava nisso.
Difícil de se encaixar em Pipeline
É tranquilo para um programador experiente em ML mexer com essas ferramentas. Mas ajustar parâmetros de taxa de aprendizagem ou configurações de redes neurais são problemas técnicos que os designers de jogos normalmente não entendem e, francamente, não deveriam ter que entender para continuar com seu trabalho.
Perspectivas para o futuro
Realmente o campo da inteligência artificial esta em grande expansão, na área do desenvolvimento de jogos não seria diferente, com a melhora de técnicas e algoritmos, aprimoramento na interação com usuário, acredito que grandes avanços serão utilizados no desenvolvimento de jogos, seja para melhora dos recursos visuais, facilidades no desenvolvimento, além de melhores experiências e interações mais vívidas e inteligentes com o usuário.