Estado da Arte da Inteligência Artificial para jogos eletrônicos
Autor: Jogos e Mais Jogos | Publicado: 2011-12-15T06:25:00-08:00


Resumo


Com o avanço dos videogames, é cada vez mais comum os programadores aplicarem técnicas simples e avançadas de inteligência artificial em jogos eletrônicos. Além disso, o setor dos videogames é uma área em crescente ascensão e faturou no ano passado 27 bilhões de dólares.


A inteligência artificial é uma área desafiadora e difícil, e muitos programadores iniciantes não sabem quais áreas de inteligência artificial ele pode aplicar em seus games.


O objetivo deste trabalho é mostrar a situação atual da Inteligência Artificial voltado para jogos eletrônicos, para os artistas e designers possam identificar (usando estilos de games como exemplos) técnicas de Inteligência Artificial que o programador pode aplicar em seu game satisfatoriamente.
Introdução


O setor dos videogames é hoje um dos setores mais rentáveis do entretenimento. No ano de 2005 este setor teve lucro de 27 bilhões de dólares, tornando-se uma área atraente e ao mesmo tempo desafiadora, por ser uma das mais difíceis da informática.


Fora isso, os games estão chegando a um patamar artístico impensável há 20 anos atrás. Games com gráficos incríveis (chegando a imitar a realidade), simulando a física real e tendo uma inteligência artificial bem convincente (como no game The Sims, que é um simulador de “vida”, podendo o jogador viver numa casa, casar, ter filhos, e outros), proporcionam uma diversão excelente para todas as idades.


Mas uma boa parte dos games também deixa a desejar no quesito de Inteligência Artificial (IA), deixando os games fáceis e simples. Os desenvolvedores pouco se preocupam com a IA e se preocupam mais com os gráficos do game, o que, em parte, tira a diversão do mesmo. Sobretudo o desenvolvedor iniciante, que pouco sabe sobre a Inteligência Artificial e não sabe que conceitos e técnicas que ele pode utilizar em seus jogos.


Este trabalho então mostrará a situação atual da Inteligência Artificial, usando alguns estilos de jogos e as possíveis técnicas utilizadas neles, pois, segundo Tatai (2003, p.23), “a indústria de jogos tradicionalmente guarda com extremo zelo as soluções computacionais desenvolvidas”, ou seja, em sua maioria elas não divulgam as técnicas que utilizam.


É interessante o designer conhecer essas técnicas, para ele aplicar a melhor técnica (ou técnicas, pois muitos games têm diversas técnicas de inteligência artificial implementadas) para o seu game.
Desenvolvimento


Com o avanço nos videogames, tornou-se possível criar uma inteligência artificial aprimorada em jogos eletrônicos. Mas, muitas vezes, o desenvolvedor iniciante não sabe quais áreas ele deve estudar para conseguir criar a IA de seu game. Algumas vezes ele acaba não dando a devida atenção e parte para outras áreas técnicas, como gráficos, jogabilidade, e outros.


A inteligência artificial é um dos ramos mais interessantes da ciência. E uma das áreas mais interessantes em se aplicar a Inteligência Artificial é em jogos eletrônicos, pois, segundo Russel e Norvig (2004, p.157), “para pesquisadores de IA, a natureza abstrata dos jogos os torna um assunto atraente para estudo”. Além disso, a maior parte dos games atuais utiliza a inteligência artificial para proporcionar diversão aos seus jogadores. Jogos como The Sims exploram muito a IA (onde o jogador pode casar, ter filhos, e outras atividades normais).


Existem várias áreas de IA que o artista pode aprender e usar em seus jogos. Ele não precisa saber todas aprofundadamente, mas ele deve ter um conhecimento de cada para que ele aplique a melhor estratégia de IA em seus games. Também o designer deve ter em mente se o personagem será contra o jogador ou um ajudante.


Deve-se ter em mente que não existe uma lógica padrão para todos os tipos de entidades em um game. Um gato executa ações que um cachorro não faria, e o mesmo vale para seres humanos. O designer pode implementar o mesmo tipo de lógica para várias entidades, mas ele deve adaptar parte dela para que consiga o efeito desejado.


A seguir é listado alguns estilos de games diferentes e as possíveis técnicas de inteligência artificial utilizadas nesses games.


First Person Shooter (Tiro em primeira pessoa)


Os jogos de tiro é um estilo muito popular entre adolescentes. Games como Doom, Half-Life, Unreal, Quake e Counter-Strike revolucionaram a maneira de jogar, entrando na história dos videogames. O Counter-Strike é hoje um dos games mais jogados do planeta, tendo campeonatos e praticamente todas as lan-houses tem o jogo, onde grupos de adolescentes juntam-se em equipes para jogar o jogo, escolhendo ser um “terrorista” ou um “contra-terrorista”. Além disso, hoje os jogos de tiro são um dos jogos que as produtoras conseguem usar gráficos incríveis (como Doom 3 e Half-Life 2).


Os jogos de tiro são também simples de implementar e muitos designers iniciantes começam seus estudos tentando criar jogos deste tipo. Além disso, a inteligência artificial não precisa ser bem implementada, sendo que a maior parte dos games são simples, com muita violência e normalmente com a seguinte regra: andar, atirar e matar os oponentes (não exigindo muito raciocínio do jogador). É claro que alguns fogem um pouco a regra, como o game Half-Life (onde você resolve puzzles (desafios lógicos) durante o jogo).


Uma técnica de inteligência artificial mais comum em jogos de tiro são as máquinas de estado finita (FSM, ou Finite State Machine). Segundo Karlsson (2005, p.19), uma máquina de estados “é basicamente composta por um conjunto de estados e um conjunto de regras de transição entre estes estados”. Ou seja, o personagem está configurado com uma série de regras e possui regras de transição para ver se o personagem deve alterar o estado inicial, como por exemplo, se ele viu um oponente e se vale a pena ir atrás dele.


Segundo DINÍZIO (2003, p.4), existem dois tipos de máquinas de estado finito, a determinística, onde a transição pode sempre ser prevista (onde existe uma entrada e transição), e a não-determinística, onde a transição não pode ser, sendo necessário ter uma entrada para conhecer a transição e o estado final.


As desvantagens em utilizar as FSM são os comportamentos repetitivos, caso uma situação se repita, e são limitados (“quanto mais complexo for o ambiente, aumenta o número de estados e transições na qual o FSM terá de prever” (Karlsson, 2006)).


Outra técnica que pode ser utilizada em jogos de tiro é a lógica Fuzzy. A lógica fuzzy permite representar num sistema computacional valores onde lógicas clássicas (onde os únicos valores são zero e 1 um) não conseguiriam representar, como “pouca comida”, “muito perto”, e outros eventos não contáveis (ou imprecisos). No caso da lógica Fuzzy, o conhecimento é representado por um conjunto que contém valores numéricos, que podem representar melhor uma emoção humana. Por exemplo, se eu tenho um personagem “muito feliz”, ele é do conjunto feliz e pode receber 9 (numa contagem de 0 a 10) e eu posso ter um personagem “nada feliz” com valor 1.


Uma estratégia interessante para se utilizar é, segundo Karlsson (2005, p.20), a “mistura” entre a lógica Fuzzy e as FSMs, criando as Fuzzy FSMs (FuSMs). Ou seja, são máquinas de estado finitas com lógica Fuzzy nos seus estados de transição, para os oponentes parecerem “razoavelmente inteligentes”. Ainda segundo Karlsson, um jogo utilizando esta técnica é o jogo Unreal (Figura 1).





Figura 1 – Imagem do game Unreal, game para PC (Fonte: Gamespot)


Jogos de Estratégia


Os jogos de estratégia são interessantes por fazer o jogador utilizar raciocínio lógico, para construir um império ou mesmo gerenciar tropas de guerra. Podemos citar os jogos Warcraft 3 e a série Command &amp; Conquer.


A inteligência utilizada em tais jogos é dividida basicamente em dois níveis: em um nível temos problemas como a navegação de unidades, onde geralmente é usado um algoritmo do tipo A* (ou alguma variante do mesmo que leve em consideração replanejamento em tempo real). Em um segundo nível temos o planejamento estratégico/tático, que determina o caminho na árvore tecnológica a se seguir (se o jogo possuir uma árvore), o ritmo de produção de unidades e instalações, e a freqüência e a localização dos ataques ao jogador humano. Para isso, os métodos utilizados em geral são simplesmente máquinas de estado aliadas a sistemas baseados em regras parametrizáveis de forma a permitir o ajuste da dificuldade e jogabilidade. (TATAI, 2003, p. 31)


Os sistemas baseados em regras é também uma técnica de Inteligência Artificial bem simples de implementar, e é largamente utilizada em jogos eletrônicos. Segundo Karlsson (2005, p. 21), um sistema baseado em regras “é definido através de um conjunto de parâmetros e um conjunto de regras que trabalham sobre estes parâmetros, de modo que durante a tomada de decisão, essas regras são então processadas”. Um modo é implementar testes de condição e comparar com as regras pré-estabelecidas da situação atual.


Outra técnica interessante que pode ser utilizada, segundo VIEIRA (2005, p. 13) é o sistema baseado em planejamento. O planejamento de IA aplicado a jogos digitais é o armazenamento de “planos de ação” e fazer com que o usuário escolha o plano mais adequado numa determinada situação. Também pode permitir ao personagem decidir qual estratégia ele pode utilizar (além do próprio personagem criar a sua estratégia). Uma vantagem desta técnica é que as ações do personagem não são tão repetitivas (diferente dos personagens com o sistema de Máquina de estado Finita, por exemplo).


Jogos de Corrida


Os games de corrida são games peculiares que, como os games de tiro, não precisam de tanto raciocínio por parte do jogador. Mas não quer dizer que sejam fáceis. Games como Need For Speed e Gran Turismo fizeram história no mundo dos games. Este último foi o primeiro que, realmente, teve um nível de dificuldade inovador na época, onde o jogador tinha que cumprir provas e tirar sua “carteira” de motorista. Já Need For Speed foi um dos primeiros games de corrida para PC, e suas últimas versões, como o Need For Speed Underground 2 (Figura 2), por exemplo, inovaram com níveis de customização incríveis. O jogador poderia customizar seu carro do jeito que quisesse, trocando a cor ou inserindo pinturas e desenhos na lataria.





Figura 02 – Imagem do game Need For Speed – Underground 2. Versão para PC (Fonte – Gamespot)


Uma técnica que pode ser aplicada em jogos de corrida são os algoritmos genéticos. Os algoritmos genéticos são algoritmos que simulam a seleção natural proposta por Darwin na genética, ou seja, a estrutura pode evoluir e entrar em mutação, para executar com uma melhor performance. É algo similar à experiência em jogos de RPG, onde o personagem pode evoluir, ganhar mais atributos e poderes que podem ajudar em níveis mais avançados do game.


Num game de corrida, é interessante a aplicação de algoritmos genéticos pois os designers podem criar vários tipos de carros baseando-se em um deles (ou seja, criando populações de carros), até chegar a resultados ótimos, o que diminui tanto o tempo de criação do jogo (caso certo jogo tem muitos carros) quanto à própria Inteligência Artificial do jogo, onde o jogador pode encontrar adversários diferentes, o que aumenta a diversão do game. (VIEIRA FILHO, 2005, p. 25)


Jogos de Futebol


Já os games de futebol são interessantes, pois exige mais raciocínio do jogador, aliado ao gosto pelo esporte mais popular do planeta. Os games de futebol são interessantes para a Inteligência Artificial, pois são os que aproximam mais perto da realidade. Como exemplo, podemos citar o game Fifa Soccer 2005 (Figura 03).





Figura 03 – Imagem do game Fifa Soccer 2005, para PC (Fonte – Gamespot)


Uma técnica interessante que pode ser aplicada em jogos de futebol são as redes neurais. Elas são redes computadorizadas onde a sua estrutura é similar a um cérebro humano, tendo nós de rede (neurônios) e conexões entre os nós. A vantagem de usar uma rede neural é que a rede pode aprender e armazenar conhecimento para uso posterior. Num game de futebol, a aplicação de redes neurais pode ser utilizada para que “jogadores de futebol aprendam a interceptar a bola durante uma partida” (KARLSSON, 2006, p.33)


Outra técnica interessante identificada por VIEIRA FILHO é a lógica Fuzzy, onde as aplicações podem ser desde a definição das faltas (se foi uma falta muito forte ou não ou mesmo se o jogador deve chutar a bola para o gol muito forte, ou mais fraca, e outros).


Técnicas comuns em vários tipos de jogos


Além das técnicas mostradas até aqui, existem outras técnicas importantes que podem ser aplicáveis em muitos estilos de jogos, como os algoritmos de pathfinding.


Algoritmos de Path-finding – Na maior parte dos jogos 3D, o personagem precisa ter noção de onde pode ir para chegar ao seu objetivo (um alvo, oponente ou mesmo um determinado local). Os personagens precisam criar rotas, e não podem fazer coisas que comprometam seu funcionamento, como, por exemplo, atravessar paredes ou andar em cima de um lago. Por isso, os programadores aplicam algoritmos de path-finding, ou, a definição de caminhos.


Este tipo de lógica é importante para que o personagem faça uma rota satisfatoriamente (e normalmente mais curta), e não ande a esmo pelo cenário, ou mesmo “desafiar as leis da física”, o que comprometeria toda a diversão do jogador. Além disso, o algoritmo deverá calcular possíveis novos obstáculos que o personagem poderá se deparar, como uma nova parede, outros personagens, possíveis projéteis que o podem atingir (como uma bala de uma pistola), e qualquer variável do ambiente que possa interromper a ação deste personagem.Este algoritmo pode ser usado em conjunto com outros (pois o personagem pode andar e ao mesmo tempo atirar, por exemplo), e é um dos mais importantes que o jogo deve ter.


Agentes – Um agente inteligente pode ser um personagem na qual pode raciocinar e tomar suas próprias decisões, baseadas tanto em regras quanto no cenário do jogo em si. Além disso, é possível criar emoções que podem deixar um personagem mais realista.


Segundo Karlsson (2005, p. 39), uma abordagem interessante para se utilizar em agentes é a arquitetura BDI, baseada em 3 conceitos: crenças, desejos e intenções.


Numa abordagem mais filosófica, a crença é um conhecimento na qual a pessoa acredita, tem fé (como a religiosidade). São regras que a pessoa tenta obedecer (e suas ações são baseadas nestas regras), para se sentir bem consigo mesma. No conceito de agentes num sistema computadorizado, a crença são regras que o agente baseia suas ações, e mesmo se “uma crença se torna inválida, o agente ainda crê nela e a utiliza no seu processo de raciocínio” (Karlsson, 2005).


Os desejos são objetivos que o agente quer (que ele “deseja”) e intenções são regras na qual o agente pode seguir (como por exemplo, entrar numa casa pela chaminé).


Ao projetar um agente baseando-se no modelo BDI, são especificados suas crenças e desejos iniciais e a escolha das intenções e, conseqüentemente, das ações a serem tomadas, fica a cargo do agente (dentro do espaço de ações possíveis) o que pode acarretar em novos problemas. (Karlsson, 2005).
Conclusão


Concluímos que, se o designer não conhecer as técnicas de Inteligência Artificial mais comuns, ele não conseguirá criar lógicas que podem aumentar a diversão do game, criando seus games sem embasamento tecnológico suficiente.


Além disso, os videogames estão evoluindo rapidamente, chegando ao patamar de imitar convincentemente a realidade, fora os games que ainda vão ser lançados, como Spore, onde o jogador evolui uma civilização inteira, desde uma bactéria até possíveis conquistas espaciais, o que exigirá uma inteligência artificial muito boa.
Referências bibliográficas


DINÍZIO, Clailson Soares. Inteligência Artificial para jogos de tiro em primeira pessoa. Aracaju, 2003. Acesso em: 31/08/2007


KARLSSON, Borje Felipe Fernandes. Um middleware de Inteligência Artificial para games. Rio de Janeiro. 2005. Acesso em: 31/08/2007


TATAI, Victor Kazuo. Técnicas de Sistemas Inteligentes Aplicadas ao Desenvolvimento de Jogos de Computador. Campinas, 2003. Acesso em 31/08/2007


VIEIRA FILHO, Vicente. Revolution AI Engine: Desenvolvimento de um motor de inteligência artificial para criação de jogos eletrônicos. Acesso em: 31/08/2007


RUSSELL, Stuart e NORVIG, Peter. Inteligência Artificial. Tradução: Vanderberg D. De Souza. Rio de Janeiro: Elservier, 2004. 157p.