JONAS DE CARVALHO FELINTO
APLICAÇÃO DE INTELIGÊNCIA ARTIFICIAL PARA
TESTE DE VIABILIDADE DE JOGOS DE PLATAFORMA
LONDRINA–PR
2015
JONAS DE CARVALHO FELINTO
APLICAÇÃO DE INTELIGÊNCIA ARTIFICIAL PARA
TESTE DE VIABILIDADE DE JOGOS DE PLATAFORMA
Versão Preliminar de Trabalho de Conclusão
de Curso apresentado ao curso de Bacharelado em Ciência da Computação da Universidade Estadual de Londrina para obtenção
do título de Bacharel em Ciência da Computação.
Orientador: Prof(a). Dr(a). Helen Cristina de
Mattos Senefonte
LONDRINA–PR
2015
Jonas de Carvalho Felinto
Aplicação de Inteligência Artificial para teste de viabilidade de jogos de plataforma/ Jonas de Carvalho Felinto. – Londrina–PR, 201524 p. : il. (algumas color.) ; 30 cm.
Orientador: Prof(a). Dr(a). Helen Cristina de Mattos Senefonte
– Universidade Estadual de Londrina, 2015.
1. Palavra-chave1. 2. Palavra-chave2. I. Orientador. II. Universidade xxx. III.
Faculdade de xxx. IV. Título
CDU 02:141:005.7
JONAS DE CARVALHO FELINTO
APLICAÇÃO DE INTELIGÊNCIA ARTIFICIAL PARA
TESTE DE VIABILIDADE DE JOGOS DE PLATAFORMA
Versão Preliminar de Trabalho de Conclusão
de Curso apresentado ao curso de Bacharelado em Ciência da Computação da Universidade Estadual de Londrina para obtenção
do título de Bacharel em Ciência da Computação.
BANCA EXAMINADORA
Prof(a). Dr(a). Helen Cristina de Mattos
Senefonte
Universidade Estadual de Londrina
Orientador
Prof. Dr. Segundo Membro da Banca
Universidade/Instituição do Segundo
Membro da Banca
Prof. Dr. Terceiro Membro da Banca
Universidade/Instituição do Terceiro
Membro da Banca
Prof. Ms. Quarto Membro da Banca
Universidade/Instituição do Quarto
Membro da Banca
Londrina–PR, 22 de fevereiro de 2015
Este trabalho é dedicado às crianças adultas que,
quando pequenas, sonharam em se tornar cientistas.
AGRADECIMENTOS
Agradecimentos
“Não vos amoldeis às estruturas deste mundo,
mas transformai-vos pela renovação da mente,
a fim de distinguir qual é a vontade de Deus:
o que é bom, o que Lhe é agradável, o que é perfeito.
(Bíblia Sagrada, Romanos 12, 2)
FELINTO, J. C.. Aplicação de Inteligência Artificial para teste de viabilidade de
jogos de plataforma. 24 p. Trabalho de Conclusão de Curso – Versão Preliminar (Bacharelado em Ciência da Computação) – Universidade Estadual de Londrina, Londrina–PR,
2015.
RESUMO
Testes em jogos são essências, criar um nível impossível de ser passado é ruim para os
desenvolvedores, por isso, neste trabalho será implementada uma inteligência artificial
para completar um nível de um jogo de plataforma, como Super Mario, a IA será implementada no jogo Woodpecker World para teste. Diversos tipos de busca serão estudadas,
como busca em profundidade e busca gulosa.
Palavras-chave: Inteligência artificial . Jogos de Plataforma. Busca em Profundidade.
Busca Gulosa.
FELINTO, J. C.. Artificial Intelligence application platform games feasibility
test. 24 p. Final Project – Draft Version (Bachelor of Science in Computer Science) –
State University of Londrina, Londrina–PR, 2015.
ABSTRACT
Test games are essences , creating an impossible level to be past is bad for developers ,
so this work will be implemented artificial intelligence to complete a level of a platform
game like Super Mario , the IA will be implemented in WoodpeckerWorld game for testing.
Various types of search will be studied , such as depth-first search and greedy search .
Keywords: Artificial intelligence. Plataform games. Greedy search. Depth-first search
an.
LISTA DE ILUSTRAÇÕES
Figura
Figura
Figura
Figura
1
2
3
4
–
–
–
–
Busca em Largura [1] . . . . . . .
Busca em Profundidade [1] . . . .
Busca Heurística [1] . . . . . . .
Jogo de Plataforma Super Mario
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
16
17
18
19
LISTA DE TABELAS
LISTA DE ABREVIATURAS E SIGLAS
IA
Inteligência Artificial
FIFO
First In First Out
LIFO
Last In First Out
SUMÁRIO
1
1.1
1.2
INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Objetivos e Contribuições . . . . . . . . . . . . . . . . . . . . . . .
Organização do Trabalho . . . . . . . . . . . . . . . . . . . . . . .
13
13
14
2
2.1
2.2
2.3
2.3.1
15
15
15
15
15
2.4
FUNDAMENTAÇÃO TEÓRICA
Conceitos . . . . . . . . . . . . . . .
Redes Neurais . . . . . . . . . . . .
Tipos de Busca . . . . . . . . . . .
Busca Cega . . . . . . . . . . . . . .
Busca em largura . . . . . . . . . . .
Complexidade de tempo e espaço . . . . . .
Busca em profundidade . . . . . . . .
Complexidade de tempo e espaço . . . . . .
Busca Heurística . . . . . . . . . .
Busca Gulosa . . . . . . . . . . . . . .
Jogo de Plataforma . . . . . . . . .
3
TRABALHOS RELACIONADOS . . . . . . . . . . . . . . . . .
20
4
4.1
4.2
4.2.1
4.2.2
MATERIAIS E MÉTODOS . . . . . . . . . .
Método Proposto . . . . . . . . . . . . . . . . . .
Funcionamento das Inteligências Artificiais . .
Busca heurística . . . . . . . . . . . . . . . . . . .
Busca em profundidade . . . . . . . . . . . . . .
.
.
.
.
.
21
21
22
22
23
REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
2.3.1.1
2.3.1.1.1
2.3.1.2
2.3.1.2.1
2.3.2
2.3.2.1
. . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
16
16
16
17
17
18
18
13
1 INTRODUÇÃO
A inteligência artificial para jogos é um tópico estudado há muito tempo, como
há uma constante evolução dos métodos de desenvolvimento de jogos, é necessário que
haja um estudo de novas técnicas ou novos meios de aplicação de técnicas já conhecidas
sejam revistos para acompanhar a tecnologia. A evolução da inteligência artificial deve
acompanhar a qualidade gráfica dos jogos, para que não haja jogos frustrantes com gráficos
modernos [2].
O uso de técnicas de inteligência artificial para jogos eletrônicos é cada vez mais
necessário e em certos jogos são essenciais. Podemos dizer que uma IA bem feita pode ser
um elemento de diversão e esse é o grande proposito de um jogo, proporcionar diversão ao
usuário [3]. O foco deste trabalho se encontra em buscar técnicas de inteligência artificial
em jogos para comparações entre elas, através de testes práticos e coleta de dados. Neste
trabalho a inteligência artificial terá que completar uma fase de um jogo de plataforma,
no qual o personagem move-se em duas dimensões, poderá pegar moedas, vidas e não cair
em obstáculos, pois são mortais.
1.1
Objetivos e Contribuições
O objetivo deste trabalho é apresentar um algoritmo de Inteligência Artificial capaz
de testar os jogos de plataforma antes que eles sejam lançados, com abordagem em apenas
um jogo - Woodpecker World [4]. O teste das fases é fundamental para garantir que uma
fase criada é passável, ou seja, os obstáculos não travam uns aos outros ou as distâncias
entre os pulos são possíveis de ser alcançadas. O teste básico para o lançamento de um
jogo é se ele é ou não impossível, portanto, com este trabalho pretende-se obter o melhor
algoritmo de inteligência artificial capaz de completar um nível de do jogo Woodpecker
World. Considerando o estado da arte, foram selecionados alguns algoritmos os quais serão
colocados em diversas simulações com o intuito de mostrar quais técnicas são promissoras
quando aplicadas em um ambiente de jogo.
Em desenvolvimento de jogos, utiliza-se algoritmos que geram fases automaticamente com o intuito de acelerar o processo, mas pode ocorrer de alguma condição não
estar devidamente calculada e o programador não perceber o erro antes do lançamento.
Como o intuito é acelerar o processo, fica inviável fazer os testes manualmente, principalmente se existir algum elemento aleatório na hora da construção do nível implementado
no algoritmo. Uma técnica de teste automático pode resolver o problema - um algoritmo
que teste todas as possibilidades de movimento e ação do personagem em um jogo de
plataforma facilita o trabalho dos desenvolvedores na fase de teste e mesmo que a fase
14
seja construída manualmente, ainda é necessário testar se é impossível. - Com a técnica
apresentada nesse trabalho, o desenvolvedor poupará tempo e dinheiro na fase dos testes.
1.2
Organização do Trabalho
No Capítulo 2 são apresentados os conceitos estudados para a produção e compreensão do trabalho. No Capítulo 3 são levantados alguns trabalhos relacionados á proposta
e no Capítulo 4 é apresentada a descrição do método desenvolvido.
15
2 FUNDAMENTAÇÃO TEÓRICA
2.1
Conceitos
Existem vários modos de definir Inteligência Artificial, segundo Russel, um sistema
pode ser considerado racional se ele toma uma decisão correta ou esperada, a partir de
um conhecimento adquirido ou dado a este sistema [1]. E de acordo com Rich, IA é o
estudo de como programar os computadores para realizarem tarefas as quais, os homens
faziam melhor [5].
Para definir melhor um agente inteligente, ele vai ser dividido em três partes, segundo russel, os sensores, que percebem o mundo e suas características, os atuadores, que
mudam esse ambiente de alguma forma e o programa que define suas ações, no caso de
uma pessoa os sensores são os 5 sentidos, o atuador é o seu corpo, e o programa que define
suas ações o cérebro.
2.2
Redes Neurais
Uma rede neural é um circuito composto por uma grande quantidade de unidades
simples de processamento inspiradas no sistema neural [6]. De acordo com Russel, é apenas
uma coleção de unidades ligadas entre si; as propriedades da rede são determinadas pela
sua topologia e as propriedades dos neurônios [1]. E uma estrutura de processamento com
possibilidade de implementação em dispositivos eletrônicos, possui um número de unidades interconectadas, chamadas neurônios artificiais - cada um possui um comportamento
específico de entrada/saída, que é determinado pela sua função de transferência, pelas interconexões com outras unidades, dentro de um raio de vizinhança, e possivelmente pelas
entradas externas.
2.3
2.3.1
Tipos de Busca
Busca Cega
A busca cega utiliza uma estratégia na qual o algoritmo não possui informações
adicionais dos estados posteriores, ela só pode gerar um novo estado sucessor e saber a
diferença entre um estado objetivo e um não objetivo [1].
16
2.3.1.1
Busca em largura
A busca em largura utiliza uma estratégia de busca simples, na qual expandese primeiramente os nós mais próximos da raiz, ou seja, todos os nós de uma mesma
profundidade são expandidos para depois ocorrer a expansão dos nós dos níveís seguintes.
Para isso, é utilizada a estrutura de dados fila, com o conceito de FIFO (First In First
Out), no qual o primeiro a entrar é o primeiro a sair. Ela coloca os nós filho sempre atrás
dos nós pai, garantindo a saída dos nós de níveis mais rasos antes [1].
2.3.1.1.1
Complexidade de tempo e espaço
Considerando-se uma árvore com quantidade de nós sucessores uniforme, na qual
seja ‘b’ essa quantidade de nós e ‘d’ a profundidade onde a solução será encontrada. Na
raíz, o custo de tempo e espaço será b, no nível sucessor, será 𝑏2 e nos próximos, seguindo
o critério será 𝑏𝑑 , portanto a fórmula de custo é :
b + 𝑏2 + 𝑏3 + ... 𝑏𝑑 = O(𝑏𝑑 )
A figura 1 mostra um exemplo de execução do algoritmo explicado.
Figura 1 – Busca em Largura [1]
2.3.1.2
Busca em profundidade
A busca em profundidade utiliza uma estratégia de busca na qual o algoritmo
segue uma ordem de expansão priorizando o nó mais profundo da borda atual da árvore
de busca. Ela a estrutura de dados fila com o conceito de LIFO(Last In First Out), no
qual o último a entrar é o primeiro a sair. Ela insere os nós filho sempre atrás dos nós
pai, garantindo que os filhos sempre saiam antes para a expansão.
A busca em profundidade pode ser utilizada usar com um limite de profundidade, para
tratar casos em quais os níveis sejam infinitos ou simplesmente hajam muitos níveis. - o
limite torna a busca mais rápida, mas não garante que vá encontrar um estado objetivo
pois a escolha do limite é empírica e o objetivo pode estar um ou mais níveis a baixo do
limite escolhido [1].
17
2.3.1.2.1
Complexidade de tempo e espaço
Considerando-se uma árvore com quantidade de nós sucessores uniforme, na qual
seja ‘b’ essa quantidade de nós e ‘m’ a profundidade máxima existente na árvore. A
fórmula de custo de tempo e espaço é :
O(𝑏𝑚 )
Caso a busca seja feita em um grafo, ou seja, uma árvore que pode conter laços, o custo
de tempo e espço pode ser inf. A figura 2 mostra um exemplo de execução do algoritmo
explicado.
Figura 2 – Busca em Profundidade [1]
2.3.2
Busca Heurística
A busca em heurística utiliza uma estratégia de busca na qual o algoritmo tem
informações adicionais sobre cada estado. É utilizada uma função de avaliação para determinar qual nó deve ser expandido, esta função é definida e implementada a cada problema.
Uma estratégia de busca heurística muito utilizada é a busca gulosa. - Ela tenta expandir
o nó mais próximo do nó objeto existente, para que isso seja possível, é necessário obter
uma informação adicional como a distancia para chegar até o nó objetivo.
18
2.3.2.1
Busca Gulosa
A busca gulosa não é completa, ou seja, ela não garante a chegada a um nó objetivo,
pois o algoritmo pode ficar preso em um laço infinito. Uma forma de visualizar o problema
é imaginar uma árvore com raiz A, pela heurística gulosa, que escolhe o caminho B, mas
em B não existe outra opção a não ser voltar para A e assim ao voltar em A o próximo
passo pela heurística é ir para B (de novo), o que gera um laço infinito [1].
A figura 3 mostra uma busca gulosa em uma árvore na qual a raíz é representada
pela cidade Arad e o objetivo é chegar até a cidade de Bucharest, é possível notar que
em cada nó possui a informação adicional da distância entre o nó atual e o objetivo, a
heurística [1].
Figura 3 – Busca Heurística [1]
2.4
Jogo de Plataforma
Os jogos de Plataforma fazem parte de um gênero no qual o jogador pode andar e
pular sobre plataformas, obstáculos, inimigos, pegar itens e geralmente matar um inimigo
19
mais forte ao final de cada saga, o chefão (boss). O mais famoso jogo deste estilo é o Super
Mario [7] lançada pela Nintendo em 1985, existem outros famosos como o Mega Man
lançada pela capcon em 1987 [8]. Os jogos de plataformas não se restringem ao ambiente
de duas dimensões, eles podem e são feitos em três dimensões, principalmente com o
avanço da tecnologia de desenvolvimento de jogos. O jogo Crash Bandicoot, desenvolvido
pela empresa Naughty Dog [9] é um famoso exemplo de um jogo de plataforma em três
dimensões.
Figura 4 – Jogo de Plataforma Super Mario
20
3 TRABALHOS RELACIONADOS
A ideia deste trabalho surgiu após a visualização do vídeo MarI/O – Machine
Learning for Video Games [10] no qual o autor desenvolveu uma inteligência artificial
para o jogo super mario, utilizando aprendizagem de máquina, redes neurais artificiais
e algoritmo genético. A ideia do autor surgiu baseada em [11], um estudo que aborda a
técnica de redes neurais unida com algoritmo genético. O vídeo mostra o resultado do
algortimo, no qual IA conseguiu completar o nível sem morrer e mostra também alguns
processos de aprendizagem, onde o personagem tentou passar o nível varias vezes e não
conseguiu.
O autor de [12] fez uma pesquisa sobre inteligência artificial em jogos eletrônicos,
desde o inicio da indústria, ele mostra técnicas como algoritmos determinísticos e padrão
de movimento, máquinas de estado, sistema baseado em regras, algoritmos de busca e
algoritmos genéticos.
Em [13] são apresentadas diversas técnicas de IA aplicada em jogos eletrônicos,
além de demonstrar a importância da IA em jogos. O autor conclui o trabalho falando
que a tendência para os algoritmos são de técnicas não determinísticas, onde a técnica
aprende com os seus erros e se adapta ao jogador humano.
21
4 MATERIAIS E MÉTODOS
4.1
Método Proposto
A primeira etapa é descobrir quais algoritmos são mais utilizados para o estilo de
jogo escolhido. Em seguida é necessário estudar as características dos algoritmos como
a ordem de complexidade de tempo e espaço para cada um. Com estes dados já será
possível definir pela teoria quais são os melhores em casos gerais, sendo assim eles serão
submetidos à simulação do jogo. Após passar por diversas simulações, espera-se obter os
algoritmos que consigam passar de nível e entre eles qual teve o melhor desempenho para
o estilo de jogo proposto.
Cada jogo de plataforma tem suas regras básicas e outras criadas pelo desenvolvedor, por exemplo, se o personagem pode atirar ou não, a quantidade de pulos que o
personagem pode fazer ou o modo de matar os inimigos; por isso é necessário descrever
quais são as regras do jogo.
Inputs existentes para o jogador:
∙ Andar para direta
∙ Andar para esquerda
∙ Pular
∙ Descer rapidamente
∙ Fazer nada (ficar parado)
Movimentos possíveis: são as combinações possíveis dos inputs existentes
∙ Andar para direita
∙ Andar para esquerda
∙ Pular
∙ Pular andando para direita ou para esquerda.
∙ Descer rapidamente
∙ Descer rapidamente andando para direita ou para esquerda
∙ Fazer nada (ficar parado)
22
Obstáculos
∙ Espinho estático: obstáculo que fica parado, se o personagem toca-lo irá morrer.
∙ Inimigo 01: anda de um lado para o outro, se o personagem pular em cima dele o
inimigo morre, se o jogador tocá-lo de qualquer outra forma, o personagem morre.
∙ Inimigo 02: anda de um lado para o outro, se o personagem toca-lo irá morrer.
Objetos estáticos: objetos que compõem a cena.
∙ Caixas de metal: objeto onde o personagem pode andar por cima ou tocá-lo de
qualquer outra forma.
∙ Caixas de madeira marrom: se o personagem pular em cima a caixa quebra e ele
ganha um pequeno impulso para cima.
∙ Caixas de madeira verde: se o personagem bater em baixo dela a caixa quebra e ele
ganha um pequeno impulso para baixo.
∙ Cogumelos: se o personagem pular em cima dele irá ganhar um impulso para cima.
∙ Final de nível: é o objetivo de jogo, ao chegar neste ponto o personagem completa
o nível.
4.2
Funcionamento das Inteligências Artificiais
Os algoritmos escolhidos inicialmente foram de busca heurística, busca em largura
e busca em profundidade por serem técnicas comuns e que conseguem chegar ao resultado
esperado. Para todas as buscas utilizaremos os seguintes critérios:
Cada nível da arvore de busca representa o tempo percorrido em jogo, ou seja, o
nível 1 representa o inicio do jogo, no nível 2 todos os nós estarão no segundo tempo de
jogo. O tempo pode se dividir em segundos ou frames.
Cada nó da árvore possui a posição que o jogador está, a posição e o tempo de
jogo formam juntos um único estado. As arestas da árvore são as jogadas possíveis, que
geram um novo estado na árvore.
4.2.1
Busca heurística
Esta IA irá executar todos os movimentos possíveis do personagem a cada intervalo
de tempo. Após executar todos os movimentos, ela irá salvar no banco de dados qual o
melhor movimento para cumprir o seu objetivo de passar de nível; na próxima iteração ela
23
irá executar todos os movimentos salvos no banco e repetirá a ação para achar o melhor
movimento a seguir.
Para achar o melhor movimento a IA vai seguir os seguintes critérios:
∙ Se um movimento leva a morte é descartado.
∙ Se um movimento leva a um lugar ruim é descartado. Os lugares ruins são previamente escolhidos no jogo para a IA poder detectá-los.
∙ Se o movimento leva a um lugar mais perto do objetivo, então é priorizado.
São consideradas falhas: Se a escolha de “lugares ruins” for errada irá prejudicar na tomada
de decisão. Portanto é preciso que o aplicador da técnica conheça muito bem o jogo, caso
o contrário as chances da técnica falhar são grandes.
4.2.2
Busca em profundidade
As vantagens da busca em profundidade sobre a busca heurística são por não precisar ter conhecimento prévio do problema, sendo assim ela pode ser executada diretamente
sobre o jogo sem alterações. Segundo [1], a busca em profundidade tem uma complexidade
muito elevada O(𝑏𝑑 ), por outro lado, ela explora todas as possibilidades, e tende a obter
um resultado melhor.
Para o problema proposto, será feita a busca mais a direita da árvore primeiro,
pois sabe-se que o final do jogo está à direita do personagem, sendo assim a técnica pode
conseguir completar o nível mais rapidamente. Mas, para conseguir o melhor modo de
completar o nível com todos os benefícios, ou seja, pegando todos os itens e não morrendo,
a técnica terá que passar por toda a árvore de busca. - cada caminho que obtenha êxito
em completar o nível será salvo no banco de dados com todas as ações e a pontuação feita,
assim ao final poderá ser feita uma comparação de resultados, e ser feita a consideração
do que são resultados bons e resultados ótimos.
24
REFERÊNCIAS
[1] NORVING, S. R. P. Articial Intelligence A Modern Approach. 3. ed. [S.l.]: Pearson,
1995.
[2] CORREA, T. D. P. B. D. A evolução das técnicas de inteligência artificial.
SBGAMES, 2012.
[3] OSóRIO GUSTAVO PESSIN, S. F. V. N. F. Inteligência artificial para jogos:
Agentes especiais com permissão para matar... e raciocinar! SBGAMES, 2007.
[4] FELINTO, J. WoodPecker World. <https://play.google.com/store/apps/details?id=
com.jonas.felinto>,Woodpecker World.
[5] RICH, E. Artificial Intelligence. 2. ed. [S.l.]: McGraw-Hill Publishing Co., 1991.
[6] NIGRIN, A. Neural networks for pattern recognittion. American Psychological
Association (APA), 1993.
[7] NINTENDO. Nintendo’s Oficial Home for Mario. 2014. <http://http:
//www.mario.nintendo.com/> Nintendo.
[8] CAPCOM. Mega Man Legacy Collection. 2015. <http://www.megaman.capcom.
com/> Capcom.
[9] DOG, N. 30 years Naughty Dog. <http://www.naughtydog.com/timeline/>,Naughty
Dog.
[10] SETHBLING. MarI/O - Machine Learning for Video Games. <https://www.
youtube.com/watch?v=qv6UVOQ0F44>, MarI/O.
[11] STANLEY, K. O.; MIIKKULAINEN, R. Evolving neural networks through
augmenting topologies. Evolutionary computation, MIT Press, v. 10, n. 2, p. 99–127,
2002.
[12] KISHIMOTO, A. Inteligência artificial em jogos eletrônicos. Academic research
about Artificial Intelligence for games, 2004.
[13] FUGITA, E. Algortimos de IA para jogos. [S.l.], 2005. Disponível em:
<http://www.cin.ufpe.br/~tsr/tcc-Eduardo_Fujita-2005.pdf>.
Download

com jonas