O documento discute as técnicas de inteligência artificial mais utilizadas em jogos eletrônicos, incluindo máquinas de estado finito, scripting, lógica fuzzy e flocking. Ele explica como cada técnica funciona e dá exemplos de jogos populares que as utilizam, como Age of Empires, Half-Life e The Sims. O documento também discute as vantagens, desvantagens e aplicações dessas técnicas para simular comportamentos realistas nos jogos.
[Iniciante] - Testes Unitários com WP-UNIT no Wordpress
Técnicas de IA em jogos
1. Técnicas de Inteligência Artificial em Jogos Eletrônicos
Roger Ritter1
, Guilherme Daronch Taufer²
Instituto de Ciências Exatas e Geociências – Universidade de Passo Fundo (UPF)
Caixa Postal 611 – 99.001-970 – Passo Fundo – RS – Brasil
rogerritter@upf.br¹, 110532@upf.br²
Abstract. Since many years ago, the usage of artificial intelligence in
softwares are increasing. Due to this, the curiosity make us know better how
these practices function at the attractive world of games. How there are
several techniques of artificial intelligence used by game developers, we chose
to study and describe in this article just the techniques more used today.
Resumo. Há muitos anos a utilização de inteligência artificial em softwares
vem crescendo. Devido a isso, a curiosidade nos leva a conhecer melhor como
funcionam essas práticas num mundo tão atraente para nós jogadores, que é o
mercado dos jogos eletrônicos. Como existem diversas técnicas de
inteligência artificial utilizadas pelos desenvolvedores de jogos, escolhemos
estudar e expor nesse artigo apenas algumas das técnicas mais
implementadas em jogos eletrônicos atualmente.
1. Introdução
Em jogos digitais, o uso de técnicas de Inteligência Artificial (I.A.) vem se fazendo cada
vez mais necessário, e sendo até mesmo indispensável em certos casos. Estas técnicas
podem ser aplicadas em diferentes tipos de tarefas: resolução de problemas (puzzles,
brain-teasers), planejamento de tarefas, planejamento de trajetórias, controle de agentes
autônomos (NPCs – Non-Player Characters), entre outras diversas aplicações.
Crocomo (2006) tem argumentado que a indústria do videogame vem fundindo
tecnologia e criatividade para produzir alguns dos melhores entretenimentos do século
21. Nos últimos anos, muita ênfase foi dada ao realismo dos jogos eletrônicos, fazendo
surgir uma variedade de motores gráficos, físicos, de áudio e de Inteligência Artificial
(IA). Grandes esforços foram empregados principalmente na ambientação gráfica
utilizada. Sweetser (2002) disse que o próximo foco no mercado de jogos seria a
elaboração de personagens que se comportam de forma realista e podem aprender e se
adaptar, ao invés de personagens com maiores resoluções e com mais frames por
segundo.
Bittencourt (2006) destaca que para poder integrar técnicas de I.A. em jogos
digitais, se faz necessária a inclusão de um novo componente em um motor de jogo
(engine), além dos já tradicionais componentes destas Engines de Jogos: motores
gráficos, de áudio, de rede, de física, de controle de dispositivos de E/S (interação). Este
componente é o motor de Inteligência Artificial – I.A
2. 2. Inteligência Artificial em Jogos
A utilização de Inteligência artificial em jogos não é novidade, segundo Crocomo
(2006) o seu uso começou em jogos clássicos como xadrez ou jogo da velha, porém
atualmente é difícil encontrar um game que não utilize alguma técnica de IA em seu
código.
Nos últimos 25 anos, os esforços empreendidos pela indústria de jogos se
concentraram principalmente na tecnologia gráfica produzida, permitindo a criação de
mundos realistas com gráficos 3D e avançadas engines físicas. No entanto, Fairclough
(2001) também destaca que sofisticadas técnicas de Inteligência Artificial em jogos
estão começando a ser utilizadas apenas atualmente.
As técnicas de Inteligência Artificial, segundo Bittencourt (2006), exploradas
pela indústria de jogos são muito simples quando comparado com as técnicas
exploradas no meio acadêmico e utilizadas em aplicações industriais. Um dos fatores
que leva a uma menor exploração de técnicas é a falta de tempo disponibilizado ao
desenvolvimento de um jogo digital. Muitas vezes é aplicado IA somente após algumas
partes do jogo já terem sido implementadas, como, por exemplo, os motores gráficos.
2.1 - Técnicas de IA utilizadas nos jogos digitais
Correa e Pastor (2012) frisa que recentemente a indústria de jogos digitais passou a
pesquisar técnicas não só em seus ambientes gráficos, mas também, no desempenho e
nos movimentos e estratégias calculadas pelos personagens especialmente em jogos
Role-Playing Game (RPG) e Massive Multiplayer Online Role-Playing Game
(MMORPG).
Um exemplo para que isto acontecesse é o jogo de Role-Playing Game (RPG)
Starcraft II desenvolvido pela Blizzard (2010). Quando escolhido o modo difícil, se joga
contra a Inteligência Artificial, e esta tem uma grande vantagem contra o jogador
humano, já que, pode fazer cálculos rápidos e ter um tempo de resposta melhor que o
player. Porém, uma desvantagem neste caso é que os movimentos dos personagens
artificiais são previsíveis, isso abre a chance de estudar o comportamento de seu inimigo
e definir uma estratégia para vencê-lo. Com isso, o mesmo pode ser derrotado
facilmente.
Com base neste caso, a indústria de jogos digitais pretende pesquisar técnicas
com o objetivo de eliminar a previsibilidade de jogadores humanos, analisando os
movimentos do oponente e realizando movimentos da Inteligência Artificial de acordo.
Crocomo (2006) salienta que a evolução das técnicas utilizadas em jogos
eletrônicos é evidente nos últimos anos, tornando a experiência muito mais imersiva e
trazendo jogos cada vez melhores.
2.1.1 - Máquinas de Estado Finito
Segundo Fairclough (2001) a técnica de Máquinas de Estado Finito (Finite State
Machines – FSM) é uma das técnicas mais utilizadas na implementação de jogos, pois é
baseada em regras, tem baixa complexidade e na maioria das vezes, é utilizada pelos
desenvolvedores por ser de fácil gerenciamento.
3. As Máquinas de Estado Finito permitem que sejam armazenados tanto os
estados dos personagens do jogo, como do ambiente. Desta forma, torna-se possível
gerenciar tanto o cenário do jogo quanto seus personagens.
Segundo Crocomo (2006) a ideia principal desta técnica é dividir o jogo em
estados, contendo a sua transição para outros estados de acordo com uma determinada
condição, baseadas no comportamento do jogo.
Figura 1. Tabela de transição de estados.
No entanto, por ser determinística, esta técnica torna previsível a estratégia
utilizada pelo computador, como no exemplo citado anteriormente por Correa e Pastor
(2012).
As Máquinas de Estado Finito, quando construídas em maior número, podem ser
organizadas em hierarquia. Denominada como Hierarquia de Máquinas de Estado Finito
(Hierarchial Finite State Machines – HFSM), serve para implementações um pouco
mais complexas, no qual a função de transição de estados recebe as entradas e o estado
atual, que retorna o conjunto de saídas e um novo estado que passa a ser o estado atual.
Figura 2. Hierarquia de máquinas de estado finito.
4. 2.1.2 - Scriptings
Segundo Crocomo (2006) Scripting é uma linguagem de programação de alto nível,
criada para simplificar uma tarefa complexa para um programa em particular, onde o
próprio jogador pode programar o comportamento de seus personagens. Muito popular
entre os desenvolvedores de jogos, tem sua fama devido ao fato de utilizar scripts fáceis
de implementar e entender, até mesmo por usuários sem experiência em programação.
Geralmente, os scripts são criados de forma a lembrar uma linguagem natural, como o
inglês, por exemplo.
Scripting podem ser utilizados em várias partes do jogo por diferentes pessoas:
● O programador pode definir nos scripts os comportamentos a serem tomados
pelos personagens do jogo.
● O roteirista pode utilizar scripts para implementar suas histórias.
● Se o jogo for exposto ao público, os próprios jogadores podem utilizar scripts
para personalizar seus personagens, respeitando os limites definidos pelo
programador.
● Os artistas gráficos usam scripts para automatizar processos de animação com
grande quantidade de repetição.
Esta grande quantidade de aplicações só é possível porque a linguagem scripting
é normalmente separada dos dados do jogo. Desta forma, é criado um ambiente seguro
para que não programadores realizem mudanças no programa sem causar problemas.
2.1.3 - Lógica Nebulosa ou Lógica Fuzzy
A Lógica Nebulosa, também conhecida como Lógica Fuzzy, foi introduzida em 1965,
pelo matemático iraniano Lofti Asker Zadeh, [ZADEH, 1976]. Essa lógica seria um
primeiro passo no sentido de se programar e armazenar conceitos vagos em
computadores, tornando possível a produção de cálculos com informações imprecisas, a
exemplo do que faz o ser humano.
A lógica Fuzzy não deixa de ser uma extensão da lógica booleana, segundo
Pedrycz (2007), pois admite valores lógicos intermediários entre o FALSO (0) e o
VERDADEIRO (1). Por exemplo, utilizar o valor intermediário 0,5. Isto significa que
um valor lógico difuso é um valor qualquer no intervalo de valores entre 0 e 1.
Nos jogos eletrônicos o papel desta técnica é normalmente limitado a complexos
comandos condicionais. É utilizada na seleção de comportamentos e tomada de decisão.
Esta técnica pode permitir, por exemplo, o cálculo de um “nível de medo” de um
personagem com relação a um jogador.
2.1.4 - Floking
Crocomo (2006), destaca que a técnica de floking implementa ao programa a opção de
simular o comportamento natural de um grupo de indivíduos, tais como, o movimento
de um cardume de peixes ou até mesmo o voo de um bando de pássaros. É uma técnica
bastante utilizada para simular ambientes com alto grau de realismo, explorados pelo
jogador.
Desenvolvida como uma alternativa a gerar scripts para um número grande de
indivíduos, na técnica de flocking cada personagem navega de acordo com sua
5. percepção e as leis da física que governam o ambiente. Nesta técnica as informações
não são mantidas de uma etapa para outra, ou seja, não existem estados, de forma a
visar à economia de memória. A cada novo ciclo o personagem possui uma nova
percepção do ambiente, através do qual realiza uma ação.
Muito utilizada em jogos de primeira pessoa, como Half-life e Unreal, para gerar
comportamentos dos grupos de personagens, e em jogos de estratégia em tempo real,
como Enemy Nations, para gerar movimentação realista dos exércitos. Embora esta
técnica tenha aplicações bem limitadas, é muito simples e eficiente para gerar
movimentações realistas de grupos de indivíduos.
2.1.5 - Árvores de Decisão
Segundo Sweetser (2002) a técnica de aprendizado através de árvores de decisão é
inserida em jogos onde são necessários predição e classificação. Quando utilizada para
prever uma sequência de ações traz um bom resultado.
O uso desta técnica permite um personagem aprender com o jogador ou com
outros personagens no desenrolar do jogo. As experiências armazenadas no decorrer do
jogo com o personagem são organizadas no formato de uma árvore, a partir da entropia,
que é uma medida de desordem dos dados armazenados. Com uma estrutura fácil de
serem compreendidas, as árvores de decisão são robustas a ruídos e possuem um
aprendizado eficiente.
2.1.6 - Redes Neurais Artificiais
As Redes Neurais Artificiais (RNA), segundo Haykin (2001), são inspiradas em
sistemas biológicos e possuem uma grande quantidade de aplicações que utilizam
tomadas de decisões, processamento de informações e otimização.
Esta técnica é mais utilizada no aprendizado off-line de jogos, treinando os
parâmetros de controle dos personagens durante a etapa de desenvolvimento do jogo.
Em jogos on-line ainda não tem grande utilização por parte dos desenvolvedores, pois o
uso desta técnica pode gerar comportamentos não aceitáveis para seus personagens.
Por possuir diversas arquiteturas diferentes para resolver problemas diferentes,
não é uma técnica simples de ser implementada, pois necessita de muitos ajustes em
seus parâmetros.
Nos jogos que utilizam redes neurais, o objetivo é que o computador aprenda a
imitar o comportamento do jogador.
2.1.7 - Algoritmos Evolutivos
Os Algoritmos Evolutivos (AEs), segundo Sweetser (2002), tem por objetivo adaptar as
estratégias utilizadas pelo computador em relação às estratégias utilizadas pelo usuário,
ou seja, fazer com que o jogo apresente um grau de adaptabilidade em relação às ações
dos jogadores e às variações do ambiente de jogo.
Apesar de existir diversas aplicações para Algoritmos evolutivos, existe uma
grande resistência de serem utilizadas pelos desenvolvedores de jogos, pois alguns
autores afirmam que está técnica é lenta e (assim como a técnica de Redes Neurais)
permite a obtenção de comportamentos “não aceitáveis” durante o processo de
aprendizado dos personagens. No entanto, é reconhecido que AEs possuem o potencial
para atuar em áreas nas quais técnicas tradicionais de IA apresentam deficiência.
6. Yao (2000) frisa que essa técnica vem sendo utilizada desde os anos 80 para
evoluir estratégias de jogos como para o jogo ‘Iterated Prisoner’s Dilemma’ de grande
importância para economistas, cientistas sociais e cientistas da computação.
3. Exemplos de jogos digitais que utilizam técnicas IA
Sweetser (2002), cita técnicas de IA utilizadas em jogos:
Tabela 1. Técnicas utilizadas nos jogos eletrônicos.
TÉCNICA JOGOS
Máquina de Estado Finito
- Age of Empires
- Half Life
- Doom
- Quake
Scripting - Black &White
- Unreal
- Dark Reign
- baldur’s Gate
Lógica Nebulosa ou Lógica Fuzzy
- Swat 2
- Call to Power
- Close Combat
- The Sims
Árvores de Decisão - Black & White
Flocking
- Half Life
- Unreal
- Enemy Nations
Redes Neurais
- BC3K
- Creatures
- Heavy Gear
Algoritmos Evolutivos - Creatures
- Returm to Fire II
7. 4. Vantagens, Desvantagens e aplicação das Técnicas de IA em Jogos
Digitais
Correa e Pastor (2012) destaca que as técnicas para jogos em geral fazem parte de uma
vertente que defende o papel da IA como o de simular um comportamento próximo do
humano, não como em outros ambientes com objetivos, por exemplo, de otimização
buscam atingir níveis de decisão e velocidade de raciocínio muito acima de um ser
humano comum. A inteligência artificial em jogos tem por princípio maximizar a
diversão emulando um jogador inteligente na medida certa, demonstrando fraquezas
propositais.
Para que cada técnica seja aplicada é importante, inicialmente, conhecer a
aplicabilidade destinada à técnica, juntamente a suas vantagens e desvantagens, segundo
Crocomo (2006) as técnicas possuem as seguintes aplicabilidades, seguidas de
vantagens e desvantagens:
Tabela 2. Vantagens, desvantagens e aplicação das técnicas.
Vantagens Desvantagens Aplicações
Máquinas de Estado
Finito
É simples, pode ser
utilizada em conjunto
com outras técnicas,
computacionalmente
barata e com grande
capacidade de
codificação.
Tem uma escalabilidade
ruim, pode ser
fracamente estruturada,
é determinística e tem a
necessidade de
antecipar todas as
situações.
As máquinas de estado
finito são destinadas
basicamente ao
gerenciamento do
universo do jogo,
objetos e/ou
personagens.
Scripting É simples, não
necessariamente tem
uso apenas por
programadores e tem
um ambiente seguro de
implementação.
É determinística e por
isto, tem a necessidade
de antecipar todas as
situações.
Scripting pode
facilmente gerenciar
eventos e automatizar
tarefas além de poder
analisar a IA do
oponente e construir
árvores de conversa.
Lógica Nebulosa Resolve problemas não
lineares, tem muita
flexibilidade, quando o
conhecimento do
especialista se torna
necessário e apresenta
uma alternativa para
quando não há uma
solução simples.
É um pouco complicada
de se construir e não é
uma alternativa boa
quando se existe uma
solução simples.
A lógica nebulosa tem
como aplicação a
tomada de decisão,
filtro para entrada/saída
de dados e seleção de
comportamentos, além
de, algumas vezes,
controlar a situação
emocional dos
personagens juntamente
com sua saúde.
Flocking É realista e puramente
reativa, além de
requerer pouca
memória.
Flocking tem suas
aplicações limitadas.
Flocking é
recomendado para o
controle de movimento
de unidades e de grupos
de animais/monstros
8. Árvores de Decisão É robusta a ruídos com
uma estrutura fácil de
compreender e com um
algoritmo de
treinamento/avaliação
eficiente
É necessário ajuste de
parâmetros
Árvores de decisão
podem ser utilizadas na
classificação, no
aprendizado e na
predição.
Redes Neurais É flexível, não
determinística e não
linear.
É necessário o ajuste de
parâmetros, se trata de
uma técnica complicada
no qual exige muitos
recursos do computador
e possui ainda uma
difícil escolha de
variáveis.
As Redes Neurais tem
como aplicação o
reconhecimento de
padrões e o controle de
comportamento,
juntamente com a
predição, classificação
e memória.
Algoritmos Evolutivos Tens um método de
busca robusto e efetivo
em espaços de busca
grandes, complexos e
pouco compreendidos,
não linear e não
determinístico.
Exige o uso intensivo
de recursos do
computador e tem a
necessidade de ajuste
de parâmetros.
Os algoritmos
evolutivos são
utilizados em
otimização e
aprendizado, no
desenvolvimento de
estratégias para jogos,
na evolução de
comportamento e
encontrar caminhos a
serem percorridos.
5. Conclusões
Com este estudo foi possível conhecer e entender melhor a utilização das técnicas de
Inteligência Artificial em jogos eletrônicos. Foi possível compreender que apesar de
ainda não serem utilizadas em todos os tipos de jogos, num futuro próximo, a tendência
é que será ampliada a utilização de IA em jogos eletrônicos. Todas as técnicas estudadas
têm muito a contribuir e tornar cada vez mais reais as ações tomadas pelos personagens
dos games, o que atrai cada vez mais pessoas a se entreter e se beneficiar com essas
aplicações.
6. Referências
BITTENCOURT, J.R.(2006) “Motores de Jogos para Criação de Jogos Digitais”, In:
Vescola Regional de Informática de Minas Gerais, Belo Horizonte.
CROCOMO, M. K. (2006) “Desenvolvimento de um Ecossistema Artificial Utilizando
Algoritmos Evolutivos como Ambiente de Teste para Sistemas Multi-Robô”.
FAIRCLOUGH, C.(2001) “Research Directions for AI in Computer Games”, In: AICS.
CORREA, D. B., PASTOR, D. T. (2012) “A evolução das técnicas de Inteligência
Artificial”, In: Proceeding of SBGames.
ZADEH, L. A. (1976) “A Fuzzy-Algorithmic Approach to the Definition of Complex or
Imprecise Concepts”.
9. PEDRYCZ, W.(2007) “Fuzzy Systems Engineering : Toward Human-Centric
Computing”, In: Wiley/IEEE Press.
SWEETSER, P. (2002) “Current Al in Games: A review”, In: University of
Queensland.
HAYKIN, S. (2001)“Redes Neurais: Princípios e Prática.” In: Bookman.
YAO, X. (2000) “Genetic Algorithms and Evolutionary Games.” In: Cambridge
University Press.