Upload
hoangtram
View
217
Download
0
Embed Size (px)
Citation preview
Revista Eletrônica da Faculdade Metodista Granbery
http://re.granbery.edu.br - ISSN 1981 0377
Curso de Sistemas de Informação – N.13, JUL/DEZ 2012
INTELIGÊNCIA ARTIFICIAL APLICADA AOS JOGOS ELETRÔNICOS
*1 Fernando Filgueiras
*2 Sérgio Muinhos Barroso Lima
Resumo. Os desenvolvedores de jogos eletrônicos estão buscando a criação de jogos que
apresentem um bom desafio para o usuário. A partir desse ponto de vista, estão sendo usados,
pelas empresas desenvolvedoras de jogos, diversos algoritmos de inteligência artificial para a
simulação de uma inteligência humana convincente, a fim de que o jogo possa cada vez mais
estar próximo da realidade.
PALAVRAS-CHAVE: inteligência artificial, jogos eletrônicos, desenvolvimento de jogos,
ferramentas para jogos, máquinas de jogos.
Abstract. The game developers are looking for games that represent real challenges for yours
user. Under this point of view, artificial intelligence algorithms has been used by game
development companies for a real human intelligence simulation, for an real world
approaching.
KEY-WORDS: artificial intelligence , eletronic games, game development, game tools, game
engines.
*1 Bacharel em Sistemas de Informação, Faculdade Metodista Granbery,
*2 Mestre em Ciência da Computação, UNICAMP, [email protected].
1 Introdução
Os jogos eletrônicos abrangem diversas áreas da tecnologia da informação. O seu
desenvolvimento hoje requer investimentos milionários em uma grande equipe de
programadores, artistas, músicos, escritores e também em inteligência artificial (IA).
A inteligência artificial, que é a proposta desse trabalho, é aplicada em jogos desde o
surgimento dos primeiros, nos anos 1970, na sua simplicidade e recursos bastante limitados.
Com o passar dos anos houve um crescimento da IA, o que passou a contribuir para o
desenvolvimento de jogos com um melhor e maior nível de entretenimento.
Uma vez que a IA passou a ser uma nova área de estudo e descobertas, passou-se a
desenvolver diversas teorias de inteligência artificial.
O objetivo deste trabalho é apresentar o crescimento da inteligência artificial até os
dias atuais, acompanhada da evolução dos jogos eletrônicos; algumas das técnicas de IA que
são empregadas nos jogos eletrônicos com o objetivo de trazer maior entretenimento para o
jogador, simulando a realidade do pensamento e comportamento humano, e um estudo de
caso de um jogo específico no qual a IA é bastante aplicada no seu desenvolvimento.
2 História da inteligência artificial aplicada aos jogos eletrônicos
A história da IA aplicada aos jogos é dinâmica e vem evoluindo muito rapidamente. A
evolução dos jogos é percebida nitidamente observando-se a evolução das figuras nessa seção.
Em 1958, o primeiro jogo é criado no laboratório de pesquisas militares Brookhaven
National Laboratory, Estados Unidos. Segundo Normand (2010), o físico William
Higinbotham cria na tela de um osciloscópio um programa chamado Tennis for Two (Tênis
pra Dois, Ilustração 1).
Ilustração 1: Primeiro Jogo Eletrônico – Tennis for Two. Fonte: (ELISIO, 2010).
Em 1961 um grupo de estudantes do MIT criou o Spacewar (ilustração 2), o primeiro
jogo de batalha espacial, como afirma Elisio (2010).
Ilustração 2: Spacewar primeiro jogo de batalha espacial. Fonte: (ELISIO, 2010).
Os primeiros jogos foram desenvolvidos para mainframe, como forma de testarem
algoritmos de busca, segundo Santana (2006), como clássicos de xadrez e dama. Havia uma
preocupação mais visual por parte dos desenvolvedores, descartando as técnicas de IA e a
jogabilidade.
Kishimoto (2004) afirma que os primeiros jogos com sistemas inteligentes e
movimentos padronizados foram Pursuit e Quak, de 1974, nos quais os jogadores tinham que
atirar em alvos móveis; Gun Fight, de 1975, onde personagens possuíam movimentos
aleatórios; e o Space Invaders, de 1978, que contém inimigos com movimentos padronizados,
mas que também atiravam contra o jogador.
Nos anos 1980, a Namco lança o Pac Man (Ilustração 3), e para Kishimoto (2004), o
jogo conta com movimentos padronizados dos inimigos, porém cada fantasma (inimigos) tem
uma “personalidade” sobre o modo como caça o jogador.
Ilustração 3: Em Pac Man (1980), cada inimigo tem uma “personalidade” sobre o modo como persegue o
jogador, como também movimentos padronizados. Fonte: (MAXIM, 2010).
Muitos programadores do início da era de jogos eletrônicos, segundo SCHWAB
(2004), implementavam padrões de movimentos ou movimentos repetitivos e/ou aleatórios
para os personagens controlados pela máquina, por exemplo: Galaga e Donkey Kong, como
sendo a inteligência no jogo. Pela falta de memória e limitação existente na velocidade de
processamento dos aparelhos da época, esses recursos eram os mais utilizados.
Em 1989, para Kishimoto (2004), foram lançados, pela empresa Maxis, jogos do
gênero “sims” (simuladores de gestão de cidades, fazendas, relações pessoais, entrou outros),
como o clássico SimCity, que foram os primeiros a possuir a tecnologia Artificial Life (A-
Life). Segundo Tozour (2002), outro exemplo do uso de A-Life em jogos é o título Creatures
(criado pela Cyberlife em 1996), que simula a psicologia e fisiologia dos personagens do jogo,
incluindo um “DNA virtual” único de cada personagem.
Em 1991, Civilization segundo Kishimoto (2004), está entre as principais aplicações
de IA para jogos, uma vez que tais jogos necessitam de uma boa IA para que sejam
controlados, pois requerem que o computador controle grupos de personagens com estratégias
complexas e diversificadas. Para Cunha e Giraffa (2001), em 1993, o primeiro jogo de tiro em
primeira pessoa, chamado Doom (Ilustração 4), é lançado. Segundo Perucia et al. (2005),
Doom quebrou paradigmas no desenvolvimento de jogos.
Ilustração 4: Doom quebrou paradigmas e impulsionou a industria de jogos. Fonte: (BALDI, 2010).
Jogos computadorizados em 3D marcaram a década de 90, em especial Duke Nukem
3D, um jogo no mesmo estilo de Doom. O interessante nesse jogo, em relação a técnicas de
IA, é que o jogador, através de uma ferramenta que acompanha o jogo, pode modificar a IA
dos personagens inimigos, com uma tecnologia conhecida por Extensible AI (IA extensível)
que, a partir de então, foi implementada em vários jogos (Woodcock, 2010).
Em 1996, segundo Cunha & Giraffa (2001), usando da tecnologia de IA extensível e
mesmo com a possibilidade de criação de personagens próprios no jogo, como no de tiro em
primeira pessoa, Quake, lançado pela Id Software, não ocorreu uma evolução das técnicas
aplicadas junto com a computação gráfica. Somente houve evolução, por exemplo, com
personagens como o ReaperBot, um oponente especialmente criado para ser utilizado em
Quake. Este NPC (Non-Playable Characters – Personagens Não Controlados – pelos
jogadores) possui comportamentos mais próximos dos comportamentos humanos, como:
busca do adversário por todo o cenário, esconder, recuperar energia com uso de itens pelo
cenário, etc.
Em 1998, apesar de usar IA baseada em scripts, Half-life foi considerado a melhor
aplicação de IA nos jogos eletrônicos da época, segundo Kishimoto (2004). Para Tozour
(2002), esses scripts determinam a forma que um agente inteligente deve agir diante de
diferentes situações.
Para Woodcook (2000), também em 1998, a empresa Epic Megagames desenvolveu
um jogo de tiro em primeira pessoa chamado Unreal (Ilustração 5), apresentando significativo
avanço nas técnicas de computação gráfica e IA aplicada a jogos. Foram utilizadas
tecnologias de IA Máquinas de Estados Finitos e IA Extensível, que, segundo Woodcook
(2010), permitiram enorme flexibilidade, em que os NPCs demonstraram: agilidade,
capacidade para desviar de ataques, chamar reforços, ou fugir. Kishimoto (2004) ainda
afirma que a IA ficou conhecida pelo excelente grau de estratégia dos NPCs.
Ilustração 5: Unreal, um jogo da Epic Megagames com 3 tecnologias de IA: Finite State Machine, Fuzzy
State Machine e Extensible AI. Fonte: (ALMA, 2010)
Kishimoto (2004) afirma que, no ano de 2001, o jogo Black & White é lançado e
destaca-se por apresentar criaturas que aprendem com as decisões feitas pelo jogador.
Segundo Cunha e Giraffa (2001), Black & White consiste em um jogo de estratégia no qual o
jogador controla e treina uma população de criaturas. Woodcook (2010) afirma que foram
utilizados tipos de agentes conhecidos como cognitivos. Kishimoto (2004) ainda afirma que o
jogo Black & White utiliza de técnicas de observational learning (aprendizagem
observacional).
Para Molyneux (2010), em Black & White, com o uso de uma árvore de decisão,
desenvolve-se a personalidade da criatura, dando a esta a capacidade de opinar sobre um
objeto ou possuir algum desejo.
Para Champandard (2007), a softwarehouse Procedural Arts desenvolve o game
chamado Façade, que é uma historia interativa que se passa com um casal, em um
apartamento, que está com seu relacionamento em conflito. A função do jogador é orientar o
casal, usando frases e sentenças digitadas. Uma vez que o jogador interage com o jogo,
colocando o texto em um analisador de linguagem natural, o game utiliza técnicas de AI
conhecida como Behavior Language (BL – Linguagem de Comportamento) que fornece
maneiras para especificar o comportamento de personagens em termos de uma história
dinâmica.
Champandard (2007) ainda afirma que os objetivos do projeto são alcançados usando
uma variação de uma árvore de comportamento, baseada em uma linguagem chamada Hap.
Em especial, a BL apoia e incentiva comportamentos simultâneos, e fornece mecanismos para
sincronizar múltiplos atores.
Segundo Champandard (2007), em 2005, é lançado o jogo F.E.A.R - First Encount
Assault Recon, que é um jogo de tiro em primeira pessoa em que o jogador ajuda a conter
fenômenos sobrenaturais e exércitos de soldados clonados.
Desenvolvido pela Monolith Productions, Champandard (2007) afirma que a IA em
F.E.A.R usa um planejador para gerar comportamentos sensíveis ao contexto, pela primeira
vez em um jogo mainstream. Esta tecnologia é utilizada como referência para muitos estúdios
até hoje.
Em F.E.A.R, os inimigos são capazes de usar o ambiente de forma inteligente,
encontrar cobertura atrás de mesas, derrubando prateleiras, abrindo as portas, quebrando e
pulando janelas etc (CHAMPANDARD, 2007).
Gabe Newell (O diretor de desenvolvimento de jogos para a Valve) escreveu sobre a
inteligência artificial para Left4Dead, lançado em 2008, que utiliza AI Director –
Administrador de IA (ou “storytellers” - "contadores de histórias"), que reage dinamicamente
a um jogador que está executando o jogo (CHAMPANDARD, 2010).
O objetivo deste AI Director é fornecer uma experiência desafiadora para o jogador
(não necessariamente para a IA ganhar); o que se torna um avanço para os jogos com padrão
FPS (First Person Shooter). Todas as criaturas do jogo têm também inteligência artificial
padrão com pathing avançado. Cabe ao AI Director colocar as criaturas e suprimentos para o
jogador (CHAMPANDARD, 2010).
Também em 2008, foi lançado Crysis (Ilustração 6), que, para Champandard (2010), é
baseado em algumas das mais avançadas tecnologias disponíveis na indústria de jogos.
Champandard (2010) ainda afirma que Cevat Yerli (criador de Crysis) queria fazer
com que os personagens se sentissem muito reais e conectados ao mundo. Para isto foi
necessário utilizar a mais recente tecnologia de animação, o que para Cevat Yerli era um
desafio integrar animação e inteligência artificial nos jogos eletrônicos.
A ideia era usar grandes ambientes que mostrassem variação, bem como uma
inteligência artificial que oferecesse diversidade sem necessariamente depender disso. Usar o
comportamento do jogador como a única fonte de incerteza, fazendo o comportamento dos
atores ser menos monótono, mas ainda previsível (CHAMPANDARD, 2010).
Cevat Yerli descreve esse método como Dynamic Systemic AI – IA com Dinâmica
Sistêmica, que Champandard (2010) afirma ser a aplicação típica da IA para jogos FPS hoje
em dia, permitindo os comportamentos emergentes serem um pouco mais usados ao invés de
totalmente desenvolvidos com scripts.
Ilustração 6: Crysis usa o método Dynamic Systemic AI. Fonte: (INCRYSIS 2007).
3 Técnicas de Inteligência Artificial nos jogos eletrônicos
Para Perucia et al. (2005), predominante nos jogos eletrônicos, a IA é apresentada em
diferentes elementos de um jogo eletrônico, com certo grau de inteligência, com o objetivo de
desafiar o jogador.
3.1 Agentes reativos
Para Russell & Norvig (2004), classificado como um tipo simples de agente, os
agentes reativos selecionam as tomadas de decisões de acordo com a situação em que se
encontram, ignorando situações anteriores ocorridas.
Conhecida como conexão condição – ação, o processamento dos dados ocorre de
acordo com os dados de entrada, ativando uma conexão entre estes e a resposta em relação à
ação realizada (SANTANA, 2006).
Russell e Norvig (2004) classificam os agentes reativos como simples, mas com
inteligência baixa, pois as decisões tomadas pelos agentes reativos somente o fazem quando
todos os dados do ambiente forem processados. Se por acaso houver um obstáculo na entrada
de dados do agente não previsto pelos desenvolvedores, haverá dificuldades na tomada de
decisão.
Por apresentar simplicidade de programação e bons resultados, uma vez que um
agente reativo bem feito transmite ao jogador a sensação de ser inteligente e com bons
desafios, Perucia et al. 2005 afirma que é uma técnica muito utilizada.
Os agentes reativos são dotados de sensores (como visão e audição humana, etc.). A
ativação desses sensores altera seu estado.
Segundo Perucia et al. (2005), assim que recebe um sinal do ambiente em que se
encontra, o agente reage em um curto espaço de tempo, tomando as decisões em tempo real.
3.2 Agentes cognitivos
Segundo Fernandes (2008), agentes cognitivos definem-se pela sua complexidade e
por aprender com as decisões feitas no ambiente. São divididos em agentes cognitivos
funcionais e agentes cognitivos mentais.
Os agentes funcionais são compostos por partes que executam o sistema e possuem
conhecimento, objetivos, além de ter a capacidade de: percepção, comunicação, decisão e
raciocínio (FERNANDES, 2008).
Os agentes mentais apresentam capacidade de escolha e de assumir compromisso,
semelhantes a decisões realizadas pelo homem. Por isso que o estado do agente é chamado de
estado mental (FERNANDES, 2008).
3.3 Sistemas baseados em regras
Para Rehm, et al. (2009), estes sistemas apresentam várias regras do tipo “se-então”,
em que a parte “então” da regra é responsável por definir qual ação será realizada ou utilizada
para interferir em outra tomada de decisão. Podem ser bastante aproveitadas tanto na criação
de IA para jogos como no mundo real.
Bourg e Seeman (2004) afirmam que em IA, estes sistemas também são chamados de
“Sistemas Especialistas”. Possuem a grande vantagem de imitar a forma como o ser humano
pensa e raciocina.
A implementação de sistemas especialistas é fácil pois não possuem uma ordem na
forma como podem dispor o conjunto de regras, conforme Fujita (2005).
Para Fujita (2005), existem dois tipos de sistemas especialistas, sendo primeiro o
sistema forward chaining (encadeamento progressivo), que é o mais comum dos sistemas de
inferência. Nele, é apresentado inicialmente um conjunto de fatos sobre o qual são aplicadas
as regras repetidamente até chegar numa condição satisfatória.
O backward chaining (encadeamento regressivo) é basicamente o contrário do foward
chaining. O sistema analisa, ao possuir um objetivo, quais regras poderão ser aplicadas para
que este seja atingindo. Em relação a computadores, não é utilizado devido à sua natureza
recursiva (FUJITA, 2005).
Segundo Rehm, et al. (2009), aplicando sistemas baseados em regras em jogos, uma
implementação pode conter os dois tipos de algoritmo.
Embora os sistemas baseados em regras apresentem vantagens, para Karlsson (2005),
algumas desvantagens são apontadas, como: necessidade de muito espaço em memória, muito
poder de processamento e até, em alguns casos, se tornarem extremamente difíceis de
depurar.
3.4 Máquinas de estados finitos
Segundo Rehm et al. (2009), uma máquina de estados finitos é composta por um
conjunto de estados e regras de transições entre estados, ou seja, a máquina de estados define
os estados em que um personagem se encontra e quando ocorre a alteração dos mesmos. De
acordo com o estado em que a máquina se encontra é que ela deve se comportar durante o
jogo (KISHIMOTO, 2004).
Para Fujita (2005), as FSMs (Finite State Machine – Máquinas de Estados Finitos),
foram a melhor escolha ao implementar a IA de agentes para jogos em que sua principal ideia
é dividir o comportamento do agente em diferentes estados, ocorrendo transição entre eles.
Essa transição depende dos fatores de entrada, que, por exemplo, podem ser estímulos
provocados pelo jogador ou o ambiente ao redor.
De acordo com Cunha e Giraffa (2001), seu desenvolvimento é simples sendo esse o
principal motivo de ser uma técnica muito utilizada no desenvolvimento de jogos.
Fujita (2005), ainda afirma que os elementos básicos que constituem uma FSM são:
Estados: Representam uma posição no tempo que, consequentemente, irá
influenciar no comportamento do agente.
Transições: São ligações entre os estados.
Eventos: São ações que ocorrem ao redor do agente.
Condições: São regras que devem ser preenchidas para que ocorra a mudança
de estado.
Bilenkij (2009) exemplifica que o comportamento dos fantasmas em Pac-Man é
implementado como uma máquina de estado finito. Existe um estado de perseguição, que é o
mesmo para todos os fantasmas, e as ações ocorrem de forma diferente para cada fantasma.
Quando o jogador come uma das pílulas de energia, então a condição dos fantasmas altera
para fugir. A entrada de um timer correndo é a condição para a transição de fugir para
perseguir.
Os robôs de Quake também, segundo Bilenkij (2009), são implementados com FSM’s.
Têm estados como FindArmor (Procurar Armamento), FindHealth (Procurar Energia),
SeekCover (Buscar Cobertura), e RunAway (Fugir). Mesmo as armas em Quake possuem as
suas próprias máquinas de estado finito. Por exemplo, um míssil – foguete possui estados
como Move (Mover), TouchObject (Tocar/Atingir Objeto/Alvo) e Die (Morrer).
Jogadores em simuladores de esportes como o FIFA 2011, têm estados como Strike
(atacar), Dribble (driblar), ChaseBall (perseguir bola) e MarkPlayer (marcação de jogador).
Além disso, as próprias equipes são frequentemente implementadas com FSM’s e podem ter
estados como KickOff (chutar), Defender (defesa), ou WalkOutOnField (andar em campo)
(BILENKIJ, 2009).
Os personagens que não são controlados pelo jogador em jogos de tempo real de
estratégia, como World of Warcraft, têm estados como MovetoPosition (Move para Posição),
Patrol (Patrulhar) e Followpath (Siga o caminho) (BILENKIJ, 2009).
Há muitos propósitos para o uso de FSM’s em jogos, mas um dos mais intricados de
se lidar, segundo Bilenkij (2009), é o de tentar construir comportamento, parecidos com os
dos seres humanos. Essa é a simulação mais difícil.
Segundo Fujita (2005) e Bilenkij (2009), umas das razões para o uso de FSM’s em
jogos eletrônicos são:
São rápidos e de código simples: Há muitas maneiras de programar uma
máquina de estado finito e quase todas são razoavelmente simples de
implementar.
Facilidade de compreensão: Variação do estado de um objeto baseado na
percepção humana.
FSM’s são fáceis de depurar: Uma vez que o comportamento de um agente
divide-se em partes fáceis de controlar, se um agente agir de forma estranha ele
é facilmente depurado. Então o programador pode analisar a cadeia de eventos
antes do comportamento do bug e agir de acordo.
Facilidade de teste: Por possuírem uma quantidade considerável de estados,
pode-se traçar a rota de eventos que causaram o mau funcionamento do agente
defeituoso.
Pouca sobrecarga computacional: FSM’s quase não usam tempo do
processador.
São flexíveis: Estados e regras adicionais podem ser implementados
rapidamente.
Buscando simplificar e melhorar o entendimento, Perúcia et al. (2005) exemplificam
que se usam as máquinas de estados finitos para fazer uma abertura de um jogo de
computador, que possui um menu com as opções: Jogar, Opções, Sair e Fase, em que cada
item é um estado.
Perucia et al. (2005) também afirmam que um jogo contém inúmeras máquinas de
estados finitos devido à facilidade de codificação, tornando-a uma ferramenta muito poderosa
ao planejar e desenvolver um jogo.
Segundo Karlsson (2005), a desvantagem em usar FSM’s está no fato de apresentarem
comportamentos repetitivos, além do fator previsibilidade, que torna o jogo muito fácil e
previsível para o jogador humano (FUJITA, 2005). Para Galdino (2007), difícil para a FSM
prever todos os casos e situações, pois o numero de estados e transições são diretamente
proporcionais à complexidade do ambiente, ou seja, quanto mais complexo for o ambiente,
mais aumenta o número de estados e transições que as máquinas terão que prever.
3.5 Algoritmos de busca heurística
Como a utilização da IA para a solução de problemas em jogos é muito difundido,
existem vários algoritmos de busca de IA capazes de encontrar diversas soluções para um
problema, escolhendo o melhor de acordo com o nível de jogo imposto pelo jogador, como,
por exemplo, em um jogo de xadrez, no qual o computador deve ser capaz de calcular a
melhor jogada a ser realizada contra o jogador (PERÚCIA, 2005).
Sendo uma das técnicas antiga da IA, para Fujita (2005), recentemente é utilizada para
a busca de caminhos (pathfinding). Por apresentarem espaço de estados limitados, mas
consideravelmente grandes, os jogos de tabuleiro utilizam muito dessa técnica em sua
implementação.
Pode ser utilizada em jogos com NPC’s que procuram melhores caminhos para atingir
alguns objetivos. Warcraft 3, no caso, tem várias unidades que trafegam por rios, pontes,
montanhas etc., e é necessário ter um algoritmo capaz de criar o melhor caminho para os
NPC’s percorrerem (SANTANA, 2006).
Luger (2002) afirma que nem sempre o resultado da busca pode ser a melhor solução
esperada e que inclusive pode não haver uma solução. Para evitar que isso aconteça é
necessário usufruir de algoritmos de busca mais eficientes. A seguir, são apresentados dois
algoritmos de busca: pathfinding e A*.
Segundo Fujita (2005), presente na maioria dos jogos eletrônicos, o pathfinding é um
dos problemas mais comuns em se tratando de desenvolvimento.
Karlsson (2005) afirma que o requisito importante, para qualquer NPC que queira
mostrar inteligência em um jogo eletrônico, é a capacidade de locomoção, percorrendo
caminhos até seu objetivo enquanto se desvia de obstáculos durante o percurso, o que pode
ser feito calculando-se um algoritmo de busca do ponto de partida até o ponto de chegada, ao
objetivo.
O mapa é organizado como um conjunto de nós, que são exatamente as posições que o
NPC irá percorrer. Uma vez que a busca é realizada sobre esse grafo, o caminho é uma lista
de nós a serem percorridos para se chegar ao objetivo (KARLSSON, 2005).
Segundo Karlsson (2005), mesmo com o pathfinding deparamo-nos com situações
em que personagens ficam presos em cantos ou vagando perdidos pelo mundo dos jogos.
Boas partes das entidades de IA, segundo Fujita (2005), precisam do pathfinding. Por
exemplo: tanques, pessoas, veículos ou unidades de combate. E não é apenas para locomoção
que se aplica o pathfinding; podemos utilizá-lo também para resolver outras situações como:
Patrulhamento: Consiste na movimentação de uma unidade através de
pontos pré-definidos do cenário e em ordem. Isto faz com que as unidades
pareçam possuir movimentos mais realistas e aumenta as chances de
encontrar o oponente.
Desvio de obstáculos: Reconhecimento do que está ao redor para desviar de
obstáculos no caminho.
Perseguição: Fazer com que a unidade vá em direção ao seu alvo.
Mirar e Atirar: Um problema que ocorre, quando uma unidade tenta atingir
a outra, é que obstáculos podem interromper a trajetória, portanto deve haver
a previsão da existência de um obstáculo na rota do tiro antes de dispará-lo,
ou, também, a possibilidade de poder se mover para uma posição que possa
efetuar o disparo sem a presença de algum obstáculo.
O A* é um algoritmo que determina a busca pelo melhor caminho até o seu destino,
como afirma Perúcia et. al.(2005). É um algoritmo de fácil implementação, sendo um dos
algoritmos mais utilizados no desenvolvimento de jogos eletrônicos, (GALDINO, 2007)
também por possuir o menor processamento (RUSSELL E NORVIG, 2004).
Embora seja um algoritmo robusto e utilizado em diversos jogos, Börje (2005) afirma
que implementar o A* num contexto de jogos eletrônicos apresenta algumas desvantagens,
pois precisa de melhorias e/ou adaptações. Um exemplo de adaptações é equilibrar o tempo de
processamento com o caminho encontrado, devido ao A* ser um algoritmo de alto custo
computacional. Por esse motivo, Karlsson (2005) afirma, que o A* demonstra dificuldades ao
lidar com mudanças e objetivos dinâmicos no cenário.
O algoritmo de A* é utilizado em jogos pra realmente encontrar o melhor caminho a
ser tomado, sendo mais utilizado em jogos de estratégia, como Age of Empires ou Warcraft,
nos quais se devem mover unidades de exército ou unidades normais (SANTANA, 2006).
3.5 Direct AI
O Direct AI (Direct Artificial Intelligence - Inteligência Artificial Direcionada), de
acordo com Karlsson (2005), segue uma abordagem diferente em relação ao que outras
implementações de IA seguem.
O Direct AI possui suporte e ferramentas para a criação de agentes inteligentes, que
apresentam comportamentos que podem variar de reações básicas a uma análise mais
profunda do seu estado em relação ao ambiente, segundo Chiva et. al. (2005).
É uma ferramenta que apresenta importantes considerações, voltadas para agentes,
sobre como e porque um determinado personagem toma uma decisão, baseando-se em
comportamentos animal e humano. O mecanismo empregado pela Direct AI, para Chiva et. al.
(2005), controla no agente suas: emoções, estímulos, estados (interno e externo), motivações,
comportamentos e ações.
Karlsson (2005) afirma que o sistema do Direct AI é visto como um conjunto de
motivações que competem entre si para decidir qual será aplicada a uma determinada
situação. Os agentes inteligentes podem aprender com as experiências e apresentar
comportamentos que não foram antes programados.
De acordo com Karlsson (2005), a Direct AI provê:
Diferentes componentes agrupados de forma compacta.
Um motor motivacional para modelar as emoções e necessidades dos agentes
inteligentes.
Um motor comportamental para modelar os processos de decisão dos agentes.
Um motor de comunicação que dá suporte à comunicação entre agentes.
Um motor de percepção.
Um motor de ações.
Um motor de conhecimento para guardar a representação do mundo de cada
agente.
4 IA aplicada ao jogo Left 4 Dead
Esta seção aborda a utilização de ténicas de IA no jogo Left 4 Dead.
A escolha desse jogo para o estudo de caso, como veremos adiante, deve-se à grande
presença de recursos com IA aplicada em suas diversas funcionalidades e implementações,
procurando trazer para o usuário uma percepção de realidade enquanto este o joga, dando
inclusive a impressão que os NPC’s possuem consciência e vontades próprias.
De acordo com Booth (2009), Left 4 Dead é um jogo FPS de cooperação singleplayer
(um jogador) e multiplayer (vários jogadores) de survival horror (terror de sobrevivência)
desenvolvido pela Valve Corporation.
A IA no Left 4 Dead possibilita a interação entre quatro jogadores ao mesmo tempo, o
que torna outros “sobreviventes” e/ou “infectados” em NPCs que irão seguir os personagens
controlados pelo jogador. Pela não diferenciação de jogadores humanos e NPCs, o fator
imprevisibilidade á aumentado, a IA neste jogo eletrônico, segundo Palermo (2010), aproxima
bastante da realidade, convencendo quem o joga.
Segundo Booth (2010), a IA desenvolvida em Left 4 Dead e Left 4 Dead 2 é conhecida
por Direct AI, e esta inclui Pathfinding com uso de algoritmos em A*, Navigation Mesh
(Malha de Navegação) etc., e outros métodos de aplicação da IA, conforme mostraremos a
seguir.
4.1 Direct AI em Left 4 Dead
Em Left 4 Dead, o uso de Direct AI de acordo com Booth (2010), tem como
característica especial controlar o nível de dificuldade do jogo do modo difícil para o modo
fácil.
Booth (2010) ainda afirma que, ao invés de posicionar os “sobreviventes” e
“infectados” em posições fixas do cenário, como acontece em muitos jogos eletrônicos, a
Direct AI tem a função de colocar aleatoriamente os jogadores e NPC’s em diferentes
posições, criando uma nova experiência a cada vez que uma batalha começa. Permite,
também, balancear os momentos de ação no jogo e de intensa calma. Quando a Direct AI
perceber que os jogadores enfrentarão intensos períodos de combate, Booth (2010) afirma que
o grau de dificuldade diminuirá e depois de um tempo de uma luta com bastante ação, a
Direct AI irá mandar mais inimigos para aumentar o drama novamente.
Para Booth (2010), esse comportamento da Direct AI é denominado como Dramatic
Game Pacing (Momento Dramático no Jogo), quando o algoritmo tem a função de ajustar o
ritmo do jogo a fim de maximizar o “drama” do “sobrevivente”, ou seja, este apresentará um
comportamento emocional intenso/agressivo com gestos, falas e movimentos. Ainda afirma
Booth (2010) que se Left 4 Dead possuísse períodos intensos de combate ou de muita calma,
o jogo seria fatigante. Portanto, picos imprevisíveis de intenso combate ou momentos
tranqüilos criam uma experiência convincente, poderosa e diferente a cada rodada, inclusive
se utilizar o mesmo cenário e mapa.
O algoritmo de Direct AI Dramatic Game Pacing age da seguinte forma (BOOTH,
2010):
Estimar a “intensidade emocional” de cada “sobrevivente”.
Acompanhar a “intensidade emocional” máxima do grupo de
“sobreviventes”.
Se a intensidade é muito alta, retirar as principais ameaças por algum tempo.
Se não, criar uma população interessante de ameaças.
Segundo Booth (2010), este algoritmo de Direct AI procura também estimar a
“intensidade emocional” de cada “sobrevivente”, representando-a como um valor na tela. A
intensidade vai aumentar com as seguintes características:
Quando feridos por Infectados, a proporção do dano é considerável.
O Jogador está no modo incapacitado.
O jogador é puxado/ empurrado para fora de uma borda de um lugar alto por
um Infectado.
Em seguida, a taxa populacional de “infectados” é reduzida, passando os
“sobreviventes” por um período tranquilo, em que a intensidade é monitorada, reduzindo
gradativamente para o modo normal, longe do topo. O estado de redução é necessário antes
que o Sobrevivente entre em outro combate, se não o período tranquilo inteiro pode ser
descartado, provocando uma ação ininterrupta no jogo. A redução da taxa não permitirá que o
período tranquilo aconteça enquanto não ocorrer uma quebra natural na ação. O período
tranquilo tenta manter a população de “infectados” reduzida por 30 - 45 segundos, ou até os
“sobreviventes” entrarem na Safe Room mais próxima. Em seguida, volta para o estado Build
Up (BOOTH, 2010).
O algoritmo também fará com que a “intensidade emocional” do “sobrevivente” vá
caindo para 0 pontos ao longo do tempo, porém, não reduzirá se ainda houver Infectado em
ação contra um ou mais “sobreviventes” . Outra vantagem do algoritmo: os momentos em que
a ação ocorrerá, lidando com a “intensidade emocional” do “sobrevivente” em relação a
constantes ataques dos Infectados, serão diferentes cada vez que o jogo for reiniciado
(BOOTH, 2010).
Enfim, de acordo com Booth (2010), o Direct AI procura trazer uma maior
interatividade em Left 4 Dead, evitando que este passe a ser um jogo cansativo e fatigante.
4.2 Path (caminhos)
Conforme visto anteriormente, presente na maioria dos jogos eletrônicos, o path
finding é um dos problemas mais comuns, tratando-se de desenvolvimento de jogos (FUJITA,
2005).
Em Left 4 Dead, segundo Booth (2010), o pathfinding procura a otimização do
caminho para os NPC’s, ou seja, criar o menor caminho percorrido, diretamente até o
objetivo. Porém, isto apresentou algumas desvantagens, pois o custo de tempo para o
processamento desses caminhos é longo, por serem recalculados muitas vezes durante o jogo.
E, uma vez que alguns NPC’s seguem um caminho direto até o alvo, apresentam movimentos
mais robóticos do que realistas.
Para corrigir esses problemas, Booth (2010) afirma que foram desenvolvidos sistemas
conhecido como Navigation Meshes (Malhas de Navegação), Reactive Path Following
(Sequência de Caminhos Reativos), Hull Trace (Área Tracejada) com o uso de algoritmo A*.
4.3 Máquina de estados finitos – hierárquicas
De acordo com Champandard (2009), as FSM’s, quando aplicadas para a construção
de comportamentos em NPCs, não apresentavam um bom resultado, não oferecendo meios
para reutilizar a lógica em diferentes contextos, o que nos deixa com uma escolha entre dois
males: a redundância ou futuras complicações de comportamento de NPCs no jogo. Para
Santos (2004) como as FSM’s apresentam elevado tempo de processamento de acordo com a
quantidade de transições entre estados que ocorrem, prefere-se o desenvolvimento de
mecanismos que possibilitem as FSM’s serem mais didáticas e fáceis de gerenciar, além de
uma forma de reduzir o elevado número de transições entre estados.
Estas foram as razões principais, segundo Champandard (2009), para desenvolvedores
na indústria de jogos eletrônicos evoluirem para sistemas baseados em HCSM (Hierarchical
Concurrent State Machines - Máquinas de Estados Hierárquicos).
Para entendermos sobre essa hierarquia sequencial, Champandard (2007) explica que a
HCSM oferece alguma ajuda para a reutilização da lógica, em um processo muito semelhante
às FSM’s comuns. Entretanto, de acordo com Santos (2004), quando se desenvolvem Sub-
Máquinas de Estados, podendo associá-las a estados de uma Máquina de Estados, é que
criamos uma HCSM, não se limitando somente a dois níveis, pois qualquer estado da Sub-
Máquina poderá ter outras Sub-Máquinas associadas, e assim sucessivamente.
O funcionamento de uma HCSM, a cada iteração, ocorre da seguinte maneira:
primeiramente, executa-se a máquina superior na hierarquia; se tiver uma sub-Máquina ligada
a ela, essa será executada. O processo desce na hierarquia até que não haja uma sub-Máquina
ligada ao estado da Máquina que foi primeiramente executada. Isso vai de acordo com as
atividades realizadas pelo agente em relação a esse estado. Na próxima iteração, a execução
inicia novamente na Máquina superior, dando continuidade à regra de execução (SANTOS,
2004).
Apesar de HCSM certamente proporcionar uma forma de reutilizar as transições, ainda
não é uma solução ideal. O problema, segundo Champandard (2007), é que a reutilização de
transições não é trivial de conseguir e requer muito raciocínio quando se precisar criar uma
lógica para muitos contextos diferentes (por exemplo, metas/objetivos dinâmicos, status do
NPC). Fazê-la também manualmente seria um trabalho entediante e longo, mas outra solução
é se concentrar em fazer cada estado modular para que possam ser facilmente reutilizados, já
que são partes diferentes da lógica empregada.
Para Dicken (2009), HCSM’s fornecem um modelo muito robusto e formal em que
pode definir o comportamento de um sistema de IA, e facilmente capturar as interações
complexas entre esses comportamentos. Isso evita confusões que poderiam acontecer ao
projetar esses sistemas complexos e contribui para uma representação muito mais
compreensível do que estiver tentando alcançar.
Os NPC’s e “sobreviventes” controlados pela IA, em Left 4 Dead, têm seus
comportamentos e tomadas de decisões controlados pela HCSM.
No caso dos “infectados” comuns e especiais, cada um apresenta um tipo de HCSM
programado de acordo com o comportamento que irá apresentar. Por exemplo, o Infectado
especial Hunter pode apresentar, segundo Booth (2010), diferentes estados como:
Ver o alvo. Aviso sonoro (grunhido). Mover-se até o alvo.
Perder de vista o alvo. Procurar o alvo. Achar o alvo. Preparar ataque.
Atacar o alvo. Aviso sonoro (grito de ação).
Falhar no ataque. Aviso sonoro (grito de dor).
Acertar o alvo.
De acordo com a decisão feita pelos jogadores, a HCMS em Left 4 Dead implementa
métodos de manipular os eventos de cada NPC, proporcionando um contexto específico de
comportamentos durante o jogo.
Para cada estado, afirma Booth (2010), escreve-se um script que inicializa o estado,
que executa o comportamento em cada etapa, e que termina o estado. Então, desenvolve-se
um sistema de estímulos; no exemplo do Hunter a entrada desse estímulo é sua linha de visão
e percepção ao avistar o alvo. A partir disso, a HCMS constrói uma pilha de prioridades para
os comportamentos do NPC. No caso do Hunter, ele vai avaliar a situação do ambiente ao seu
redor, a partir de então, tomará as decisões que se encontrem na sua hierarquia de
comportamentos de forma dinâmica. Ele vai sempre executar o comportamento que está no
topo da pilha.
Para Dickens (2009), dentro de cada passo do NPC, uma instrução Switch verifica o
topo da fila de prioridade de comportamentos e executa o script apropriado para o
comportamento que vai liderar.
Booth (2010) afirma que os comportamentos e ações em NPC’s e personagens
controlados pelo jogador, são programados com HCSM para todos os componentes.
Segundo Booth (2010), se um personagem encontra-se no estado “Ferido”, a HCSM
verá, como primeira resposta, procurar, na sub-classe “Intenção”, a primeira ação do
personagem da sub-classe” Comportamento”. Como prioridade, procura uma resposta na
classe-filho (quadrados menores). Não encontrando uma resposta, ele partirá para uma
segunda ação em sua classe-pai e assim sucessivamente. Se nenhuma ação surtir efeito para
que ele saia do estado “Ferido”, o HCSM procurará por outras prioridades, como na sub-
classe “Visão”, na qual, por exemplo, o personagem procura por algo ou alguém ao redor que
possa salvá-lo; se não, em “Corpo” ele interagirá com movimentos para que se possa chamar
a atenção; ou em “Locomoção”, na qual ele irá se locomover, por exemplo, até uma área
segura ou até outro personagem com kits médicos para sair do estado “Ferido”.
HCSM’s fornecem uma maneira útil para retrabalhar estados autômatos tradicionais
em uma arquitetura mais adequada para o tipo de trabalho que desenvolvedores de IA irão
fazer. Seu poder reside na forma simples que representa iterações complexas. Seu uso como
um gerente de estágio é particularmente importante para os desenvolvedores de jogos, pois
proporciona uma técnica leve, reutilizável para criar mundos em jogos e NPC’s (DICKENS,
2009).
5 Conclusão
O fascínio exercido pelos jogos eletrônicos vem atraindo consumidores e profissionais
para as áreas de computação e artes gráficas, tornando a indústria dos jogos eletrônicos tão
próspera quanto a do cinema.
O desenvolvimento de um game torna-se complexo devido a sua natureza
interdisciplinar e ao fato de que se espera que games atuais sejam capazes de prover, em
tempo real, o maior grau de realismo possível, tanto no aspecto gráfico como no aspecto de
simulação e comportamento.
Desde o ano de 1970, quando os jogos eram caracterizados pela simplicidade e falta de
recursos, até os jogos bastante desenvolvidos dos dias atuais, a Inteligência Artificial tem se
mostrado de grande importância na implementação de jogos eletrônicos. Também o seu
estudo foi ganhando apoio no mundo acadêmico, mostrando ser uma área de grande interesse,
aumentando mais ainda a criação de teorias para a IA.
Com a evolução dos jogos eletrônicos e a Inteligência Artificial, podemos afirmar que
os gráficos deixaram de ser um grande diferencial e, devido aos avanços de hardware, há cada
vez mais espaço para a implementação de técnicas outrora consideradas muito “acadêmicas”
para uma implementação comercial. Os jogos eletrônicos também estão utilizando técnicas
não determinísticas em conjunto com já conhecidas técnicas como máquinas de estado finito e
sistemas baseados em regras.
Várias técnicas de IA vêm sendo utilizadas para se criar um maior realismo nos
personagens automáticos, com os algoritmos de Busca Heurística, o Pathfinding, por
exemplo, que procuram encontrar o melhor caminho para um NPC locomover-se de um ponto
ao outro, o algoritmo A*, a Direct AI , dentre outras.
O jogo Left 4 Dead, ilustra, de forma contundente, a aplicação de várias dessas
técnicas de IA, promovendo um jogo com alto grau de imprevisibilidade.
Como trabalhos futuros, destacam-se a exploração de cada técnica de IA abordada
neste trabalho, bem como estudos de casos e as implementações dessas técnicas em jogos
eletrônicos.
REFERÊNCIAS BIBLIOGRÁFICAS
ALMA. Videogames 1990 a 2009. Pirata Alma Negra, 14 de dezembro de 2009. Disponível
em: < http://www.pitocadearroz.net/videogames-de-1990-a-2009/>. Acesso em: 18 de julho
2010.
BALDI, Raphael Lopes. Os anos 90. Games, programação e outros assuntos pertinentes, 19
de maio de 2010. Disponível em: < http://www.raphaelbaldi.com/games/os-anos-90/>.
Acesso em: 16 de julho de 2010.
BATTAIOLA, A. L. Jogos por computador: histórico, relevância tecnológica, tendências
e técnicas de implementação. Anais da SBC 2000. v.2. Curitiba, 2000.
BATISTA, Monica; LIMA, Sérgio Muinhos Barroso. Jogos Eletrônicos. Revista Eletrônica
da Faculdade Metodista Granbery. Disponível em: <http:// www.granbery.edu.br> Acesso
em: julho de 2011.
BILENKIJ, Andréa Duarte. Game AI. Ciência da Computação - Dissertação (Pós-
graduação), Faculdade de Tecnologia Carlos Drummond de Andrade, São Paulo, 2009.
BOOTH, Michael. Left 4 Dead 2. United States, 2010. Disponível em
<http://www.l4d.com/l4d2>. Acesso em: 22 de junho de 2011.
BOURG, David; SEEMAN, Gleen. AI for Game Developers. ed.O'Reilly, 2004.
BITTENCOURT, Guilherme. Inteligência Artificial – Ferramentas e Teorias. Editora da
UFSC. 2ª. Edição. Florianópolis, 2001.
CHAMPANDARD, Alex J. The Gist of Hierarchical FSM. AiGameDev. Indianapolis: New
Riders, ano 1, setembro de 2007. Disponível em: <http://aigamedev.com/open/articles/hfsm-
gist/>. Acesso em: 15 de agosto de 2011.
CHAMPANDARD, Alex J. AI Game Development – Synthetic Creatures With Learning
and Reactive Behaviors. AiGameDev. Indianapolis: New Riders, ano 3, julho de 2010.
Disponível em: <http://www.gameai.com>. Acesso em: 24 de julho de 2010.
CHAMPANDARD, Alex. J. The Crysis of Integranting Next-Gen Animation and AI.
AiGameDev. Indianapolis: New Riders, ano 3, julho de 2010. Disponível em:
<http://aigamedev.com/open/highlights/crysis-animation-
integration/http://aigamedev.com/open/highlights/crysis-animation-integration/>. Acesso em:
28 de julho de 2010.
CHIVA, Dr. Emmanuel, Transitioning Technologies From Videogames to Wargames.
Projeto Científico (artigo) – MASAGroup Inc., France: Paris, 2004.
CUNHA, Leonardo Sewald; GIRAFFA, Lucia Maria Martins. Um Estudo Sobre o Uso de
Agentes em Jogos Computadorizados Interativos. Dissertação (mestrado) - Faculdade de
Informática - PUCRS, Porto Alegre, 2001.
DICKENS, Luke. Research Report from CIG 2009 – The Diminishing
Industrial/Academic Divide. AiGameDev, Indianapolis: New Riders, ano 9, nov. 2009.
Disponível em: <http://aigamedev.com/open/discussion/procedural-level-geometry/>.
Acessado em: 30 de julho de 2010.
ELISIO, Leonardo, A Era do Videogame. INFOmoz – Informática Moçambique, 24 jan.
2010. Disponível em: < http://infomoz.net/lang/pt-br/a-evolucao-do-videogame-1-o-comeco>.
Acesso em: 15 de julho de 2010.
FERNANDES, Anita Maria Rocha. Inteligência Artificial: Noções Gerais. 3. ed.
Florianópolis: VisualBooks, 2008.
FERREIRA, Paulo Roberto Lafetá, Um Arcabouço para a Criação e Configuração de um
Cenário Dinâmico 3D com Navigation Meshes. Curso de Bacharelado de Ciência da
Computação. Dissertação (graduação) - UFMG,
Belo Horizonte, 2008.
FILHO, Vicente Vieira. Revolution AI Engine – Desenvolvimento de um Motor de
Inteligência Artificial para a Criação de Jogos Eletrônicos. Faculdade de Ciência da
Computação - Dissertação (Graduação), Universidade Federal de Pernambuco. Recife, 2005.
FUJITA, Eduardo. Algoritmos de IA para Jogos. Dissertação (graduação) - Universidade
Estadual de Londrina, Departamento de Computação, Londrina, 2005.
GALDINO, Carlos Henrique Silva. Inteligência Artificial Aplicada no Desenvolvimento de
Jogos de Computador. Programadores de Jogos. Disponível em:
<http://www.programadoresdejogos.com/trab_academicos/carlos_galdino.pdf>. Acessado em
30 de julho de 2010.
INCRYSIS. Crysis Graphics. Eletronic Arts, EA. Disponível em: <
http://www.incrysis.com/wiki/index.php/Crysis_Graphics>. Acesso em: 19 de julho de 2010.
KARLSSON, B.F.F. Um Middleware de Inteligência Artificial para Jogos Digitais.
Dissertação (Mestrado), Pontifícia Universidade Católica do Rio de Janeiro, 2005.
KISHIMOTO, André. Inteligência Artificial em Jogos Eletrônicos. Academic research
about Artificial Intelligence for games. 2004.
LACKORE, Jason. Jogos de Computador como Instrumentos Educativos: Análise de
Tipos e Elementos Apropriados. Dissertação (graduação) - Universidade de Aveiro, ICPD,
2010.
LUGER, George F. Inteligência Artificial: Estruturas e Estratégias para a Solução de
Problemas Complexos. 4. ed. São Paulo: Artmed, 2002; Porto Alegre: Bookman, 2002.
MAXIM, Rob. Old Videogames. Games Page. Disponível em
<www.kudla.org/raindog/2600pac.gif>. Acesso em: 15 de julho de 2010.
MERKEL, Daniel Santa Catarina. Desenvolvimento de um Protótipo de Jogo 3D
Utilizando Engine. Faculdade de informática. Dissertação (graduação) – Universidade de
Passo Fundo, Passo Fundo, 2005.
MOLYNEUX, P. Postmortem: Lionhead Studios’ Black & White. Jnoodle. Disponível em:
<http://www.jnoodle.com/careertech/files/postMortems/BlacknWhite.pdf>. Acesso em: 24 de
julho de 2010.
NORMAND. Reinaldo. A História do Vídeo-Game em 40 Capítulos. Outer Space Media
ltda. São Paulo. Disponível em: <http://outerspace.terra.com.br/retrospace/materias/>. Acesso
em: 15 de julho de 2010.
PALERMO, Bruno, AI navigation in Left 4 Dead. United States, feb. 2010. Disponível em:
<http://gamingme.wordpress.com/2010/02/25/ai-navigation-in-left-4-dead-part-i>. Acesso
em: 25 de julho de 2011.
PERUCIA, Alexandre Souza; BERTHÊM, Córdova Antônio; BERTSCHINGER, Guilherme
Large; MENEZES, Roberto Ribeiro Castro. Desenvolvimento de Jogos Eletrônicos Teoria
e Pratica. São Paulo: Novatec, 2005.
REHM, Fabio; GALIZA, Humberto; DOVAL, Igor; SILVA, Lucas; CARLOS, Luis;
MARCONDES, Lessa. Aplicações da Inteligência Artificial em Jogos. Dissertação (artigo),
Universidade Federal da Bahia, Departamento de Ciência da Computação, Campos de
Ondina, Ondina, 2009
ROLLING, Andrew; ERNEST, Adams. Fundamentals of Game Design. 2. ed. Berkeley,
CA: New Riders, 2006.
RUSSELL, Stuart; NORVIG, Peter. Inteligência Artificial. Rio de Janeiro: Elsevier, 2004;
São Paulo: Campos, 2004.
SANTANA, Roberto Tengan. A Busca Competitiva entre o Homem e a Máquina.
Tecnologia da Informação em Gestão de Negócios. Dissertação (graduação) - Faculdade de
Tecnologia de Praia Grande, Praia Grande, 2006.
SANTOS, Gilliard Lopes. Máquinas de Estados Hierárquicas em Jogos Eletrônicos.
Tecnologia da Informação. Dissertação (pós-graduação) – Centro Técnico e Científico da
PUC – Rio, Rio de Janeiro, 2004.
SANTOS, Nuno; MARQUES, Nuno; ANTUNES, Edgar. Game AI. Engenharia da
Informação. Dissertação (graduação) - Universidade da Beira Interior, Covilhã/Portugal,
2004.
SCHWAB, Brian. AI Game Engine Programming. Hingham: Charles River Media, 2004.
TOZOUR, Paul. The Evolution of Game AI from AI Game Programming Wisdom.
Hingham: Charles River Media, 2002.
WOODCOCK, S. THE GAME AI. AiGameDev, United States, ano 2, julho de 2010.
Disponível em: <http://www.gameai.com>. Acesso em: 15 de julho de 2010.