24
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, [email protected]. *2 Mestre em Ciência da Computação, UNICAMP, [email protected].

N.13, JUL/DEZ 2012 INTELIGÊNCIA ARTIFICIAL APLICADA …re.granbery.edu.br/artigos/NDc2.pdf · jogador, simulando a realidade do pensamento e comportamento humano, e um estudo de

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,

[email protected].

*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.