Inicio     |     Sobre     |     GitHub     |     Games     |     Contato                        

segunda-feira, 4 de janeiro de 2021

Construindo uma IA para Jogos: A Base



    O campo de inteligência artificial (IA) para jogos pode abordar os mais diversos assuntos e subcampos de sistemas inteligentes. Desde os clássicos sistemas muito usados em jogos como árvores de decisão e máquinas de estados, até sistemas mais complexos como redes neurais, algoritmos genéticos e arquiteturas cognitivas. Porém todos esses sistemas, com as mais diversas estruturas e complexidade tem algo em comum quando aplicados a jogos. A estrutura de comunicação entre o jogo e a IA é a mesma.


    Como o objetivo desse blog e seus artigos, e de nosso canal, é não só compartilhar o andamento das pesquisas em desenvolvimento, mas também dos softwares e jogos, unindo isso tudo a um pouco de entretenimento. Ao longo de nosso caminho pesquisando, criando, implementando e testando sistemas inteligentes em jogos, usaremos uma base principal para as aplicações, a base de comunicação entre o sistema e o jogo.


Abstração, Generalização e Funcionamento


    A forma como o jogo irá conversar com a mente é um dos primeiros e mais importantes tópicos a serem definidos. Quando se fala de uma mente capaz de jogar diferentes jogos, é difícil pensar em uma única forma de como o jogo irá se comunicar com o agente. Muita coisa pode mudar de acordo com o tipo do jogo. Por exemplo, um jogo em 2D e outro em 3D, podem ter a quantidade e a forma dos dados de entrada muito diferentes. Ou o jogo Snake e um jogo como Minecraft, que são muito diferentes em quase todos os aspectos. Na maior parte dos trabalhos nesse campo, será possível encontrar a imagem similar a da Figura 1, que representa a estrutura mais básica de comunicação agentes e ambientes.



Figura 1 - Ilustração mostrando a representação de um agente (Mario) e de um ambiente (fase do jogo).


    Talvez a forma melhor e mais simples de definir essa abstração para que funcione em qualquer ambiente, seja a partir de alguns conceitos chaves ligados à programação orientada a objetos e aos próprios objetos em jogos digitais. Vamos trabalhar partindo da ideia de que os jogos digitais são compostos basicamente de ambientes, objetos, agentes e estados. Tanto o ambiente como também os objetos e o agente podem ter estados, mas principalmente o agente pode e deve ter ações (que em muitas literaturas também é considerado um estado).



Figura 2 - Imagem comumente encontrada em trabalhos da área que ilustra a comunicação entre o agente e o ambiente do jogo.


    O ambiente e os objetos podem ser estáticos ou dinâmicos, já o agente sempre será dinâmico, possuindo a capacidade de receber dados do ambiente e agir sobre ele. Um agente é tudo aquilo que tem as capacidades já citadas de perceber o ambiente e agir nele. Já um agente inteligente deve ser capaz de organizar as informações do ambiente em padrões, usar essa informação para selecionar a melhor ação, e aprender a adaptar seu conhecimento e comportamento através dos feedbacks.



Figura 3 - Ambientes de seus objetos, e o agente (Pacman) que faz parte dos objetos no ambiente do jogo pacman.


    O que o agente irá perceber do ambiente e como irá agir depende muito de cada jogo. Veremos exemplos mais práticos ao longo dessa pesquisa. Hoje buscamos definir de forma simples e rápida esse conceito inicial da comunicação entre o ambiente e os agentes, continue acompanhando os artigos para conhecer mais sobre cada abstração e aplicação específica e como podemos modelar um sistema para todos os tipos de jogos.


Referências para saber mais:


AI for Games: Third Edition (Ian Millington)

AI for Game Developers (David M. Bourg, Glenn Seeman), 2004.



Nenhum comentário:

Postar um comentário