APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos...

45
JONAS DE CARVALHO FELINTO APLICAÇÃO DE INTELIGÊNCIA ARTIFICIAL PARA TESTE DE VIABILIDADE DE JOGOS 2D DE PLATAFORMA LONDRINA–PR 2016

Transcript of APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos...

Page 1: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

JONAS DE CARVALHO FELINTO

APLICAÇÃO DE INTELIGÊNCIA ARTIFICIAL PARATESTE DE VIABILIDADE DE JOGOS 2D DE

PLATAFORMA

LONDRINA–PR

2016

Page 2: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

JONAS DE CARVALHO FELINTO

APLICAÇÃO DE INTELIGÊNCIA ARTIFICIAL PARATESTE DE VIABILIDADE DE JOGOS 2D DE

PLATAFORMA

Trabalho de Conclusão de Curso apresentadoao curso de Bacharelado em Ciência da Com-putação da Universidade Estadual de Lon-drina para obtenção do título de Bacharel emCiência da Computação.

Orientador: Prof(a). Ms(a). Helen Cristinade Mattos Senefonte

LONDRINA–PR

2016

Page 3: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

Jonas de Carvalho FelintoAplicação de Inteligência Artificial para teste de viabilidade de jogos 2D de

plataforma/ Jonas de Carvalho Felinto. – Londrina–PR, 2016-44 p. : il. (algumas color.) ; 30 cm.

Orientador: Prof(a). Ms(a). Helen Cristina de Mattos Senefonte

– Universidade Estadual de Londrina, 2016.

1. Inteligência artificial. 2. Jogos de Plataforma. 3. Busca em Profundidade. 4.Busca Gulosa. I. Helen Cristina de Mattos Senefonte. II. Universidade Estadual deLondrina. III. Faculdade de Ciência da Computação. IV. Aplicação de InteligênciaArtificial para teste de viabilidade de jogos 2D de plataforma

CDU 02:141:005.7

Page 4: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

JONAS DE CARVALHO FELINTO

APLICAÇÃO DE INTELIGÊNCIA ARTIFICIAL PARATESTE DE VIABILIDADE DE JOGOS 2D DE

PLATAFORMA

Trabalho de Conclusão de Curso apresentadoao curso de Bacharelado em Ciência da Com-putação da Universidade Estadual de Lon-drina para obtenção do título de Bacharel emCiência da Computação.

BANCA EXAMINADORA

Prof(a). Ms(a). Helen Cristina de MattosSenefonte

Universidade Estadual de LondrinaOrientador

Prof. Dr. Wesley AttrotUniversidade/Instituição do Segundo

Membro da Banca

Prof. Dr. Fábio SakurayUniversidade/Instituição do Terceiro

Membro da Banca

Londrina–PR, 11 de fevereiro de 2016

Page 5: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

Este trabalho é dedicado a todos que me ajudaram a concluir esta etapa da minha vida.

Page 6: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

AGRADECIMENTOS

Agradeço primeiramente a minha família que sempre me apoiou em minhas esco-lhas. Agradeço também aos meus amigos de sala pelos anos de convívio durante a gradu-ação. Agradeço a minha orientadora, professora Helen Cristina de Mattos Senefonte, porme ajudar durante o processo deste trabalho. Por fim, agradeço por toda a dedicação eamor que minha namorada, Katia Poloni me proporciona durante todos os dias de minhavida.

Page 7: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

O problema do mundo de hoje é que as pessoasinteligentes estão cheias de dúvidas, e as pessoas

idiotas estão cheias de certezas.(Bertrand Russell)

Page 8: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

FELINTO, J. C.. Aplicação de Inteligência Artificial para teste de viabilidadede jogos 2D de plataforma. 44 p. Trabalho de Conclusão de Curso (Bacharelado emCiência da Computação) – Universidade Estadual de Londrina, Londrina–PR, 2016.

RESUMO

A proposta deste trabalho é testar técnicas de inteligência artificial que verifiquem se umnível de jogo de plataforma é impossível de ser passado ou não. As técnicas foram validadase testadas em um jogo de plataforma com mecânicas básicas deste estilo. Foram estudadostipos de buscas em árvores e formas de dividir o problema em blocos, os algoritmos debusca produziram resultados favoráveis ao trabalho e foram capazes de cumprir com oseu objetivo.

Palavras-chave: Inteligência artificial . Jogos de Plataforma. Busca em Profundidade.Busca Gulosa.

Page 9: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

FELINTO, J. C.. Artificial Intelligence application for feasibility testing of 2Dplatform games. 44 p. Final Project (Bachelor of Science in Computer Science) – StateUniversity of Londrina, Londrina–PR, 2016.

ABSTRACT

The purpose of this study is to test artificial intelligence techniques to check whether aplatform game level is impossible to be passed or not. The techniques were validated andtested in a platform game with basic mechanics of this style. types of searches in trees andhow to divide the problem into blocks were studied , search algorithms produce resultsfavorable to work and were able to meet your goal .

Keywords: Artificial intelligence. Plataform games. Greedy search. Depth-first searchan.

Page 10: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

LISTA DE ILUSTRAÇÕES

Figura 1 – Busca em Largura [1] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Figura 2 – Busca em Profundidade [1] . . . . . . . . . . . . . . . . . . . . . . . . . 18Figura 3 – Busca Heurística [1] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19Figura 4 – Exemplo de Execução do Algoritmo Minimax [2] . . . . . . . . . . . . 20Figura 5 – Neurônio biológico [3] . . . . . . . . . . . . . . . . . . . . . . . . . . . 21Figura 6 – Neurônio artificial [1] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22Figura 7 – Jogo de Plataforma Super Mario [4] . . . . . . . . . . . . . . . . . . . . 23Figura 8 – Espinho estático . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25Figura 9 – Inimigo 01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25Figura 10 – Inimigo 02 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26Figura 11 – Caixa de Metal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26Figura 12 – Caixa de Metal Marrom . . . . . . . . . . . . . . . . . . . . . . . . . . 26Figura 13 – Caixa de Madeira Verde . . . . . . . . . . . . . . . . . . . . . . . . . . 26Figura 14 – Cogumelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Figura 15 – Final de Nível . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Figura 16 – Exemplo de caso o qual o personagem fica preso . . . . . . . . . . . . . 29Figura 17 – Árvore com ciclos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30Figura 18 – Divisão da fase em blocos iguais . . . . . . . . . . . . . . . . . . . . . . 32Figura 19 – Problema causado pela divisão . . . . . . . . . . . . . . . . . . . . . . 33Figura 20 – Divisão da fase em blocos de forma intencional . . . . . . . . . . . . . 33Figura 21 – Gráfico de tentativas x vezes . . . . . . . . . . . . . . . . . . . . . . . . 37Figura 22 – Exemplo de problema com variável aleatória . . . . . . . . . . . . . . . 37Figura 23 – Gráfico comparativo entre os tempos médios de execução das técnicas . 39Figura 24 – Zona impossível . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

Page 11: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

LISTA DE TABELAS

Tabela 1 – Tempo médio para execução das técnicas . . . . . . . . . . . . . . . . . 38Tabela 2 – Quantidade de movimentos para concluir nível . . . . . . . . . . . . . . 39

Page 12: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

LISTA DE ABREVIATURAS E SIGLAS

IA Inteligência Artificial

FIFO First In First Out

LIFO Last In First Out

2D Duas dimensões

3D Três dimensões

Page 13: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

SUMÁRIO

1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2 FUNDAMENTAÇÃO TEÓRICA . . . . . . . . . . . . . . . . . 162.1 Árvores de busca . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.1.1 Busca Cega . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.1.2 Busca Heurística . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.2 Minimax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.3 Redes Neurais Artificiais . . . . . . . . . . . . . . . . . . . . . . . 212.4 Jogos de Plataforma . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3 ESTUDO DE CASO: WOODPECKER WORLD . . . . . . . . 243.1 Ambiente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.2 Técnicas de Inteligência Artificial . . . . . . . . . . . . . . . . . . 273.2.1 Busca heurística . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.2.2 Busca em Profundidade/ Largura . . . . . . . . . . . . . . . . . . 293.2.3 Aleatório Direcionado . . . . . . . . . . . . . . . . . . . . . . . . . 303.2.4 Dividir o problema em Blocos . . . . . . . . . . . . . . . . . . . . 31

4 RESULTADOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364.1 Busca Heurística . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364.2 Busca em Profundidade/Largura . . . . . . . . . . . . . . . . . . 364.3 Aleatório Direcionado . . . . . . . . . . . . . . . . . . . . . . . . . 364.4 Dividir o problema em Blocos . . . . . . . . . . . . . . . . . . . . 384.5 Comparação de resultados . . . . . . . . . . . . . . . . . . . . . . 384.6 Nível impossível de ser completado . . . . . . . . . . . . . . . . . 40

5 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

Page 14: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

13

1 INTRODUÇÃO

Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974surgiu o primeiro jogo que a utilizava para produzir padrões de movimento, onde osjogadores deveriam atirar em alvos móveis no jogo Pursuit e Qwak [5]. Como há umaconstante evolução dos métodos de desenvolvimento de jogos, é necessário que haja estudosde novas técnicas ou meios de aplicação das técnicas já conhecidas. O uso de técnicas deinteligência artificial deve acompanhar a qualidade gráfica dos jogos, pois caso o contrário,os jogos seriam cansativos e sem grandes desafios [6].

A utilização de inteligência artificial para jogos eletrônicos é cada vez mais ne-cessária e em certos jogos elas são essenciais, por exemplo, em jogos de estratégia, jogarcontra um oponente que não tem estratégia faria com que as pessoas perdessem o interesseno jogo. Portanto, inserir alguma técnica de inteligência artificial (IA) em um jogo, podecriar um grande elemento de diversão e esse é o propósito de todos os jogos: entreter edivertir o usuário [7].

Em desenvolvimento de jogos, é comum a utilização de algoritmos que geram fasesautomaticamente com o intuito de acelerar o processo, porém pode ocorrer de algumacondição não estar devidamente calculada e o programador não perceber o erro antesdo lançamento. Pensando em praticidade e rapidez, fica inviável fazer os testes manu-almente, principalmente se existir algum elemento aleatório na hora da construção donível implementado. Uma técnica de teste automático pode resolver o problema - umalgoritmo que teste todas as possibilidades de movimento e ação do personagem em umjogo de plataforma facilitaria o trabalho dos desenvolvedores na fase de teste e mesmoque o nível seja construído manualmente, ainda é necessário testar se é impossível. Comos resultados apresentados nesse trabalho, pode-se afirmar que é possível criar algoritmospara completar um nível de forma automática, fazendo com que o desenvolvedor poupetempo e dinheiro na fase dos testes.

Um teste completo de software é focado em achar falhas no programa [8]. Em jogosisto não muda; um bom testador de jogos deve procurar os erros de todas as formas pos-síveis. Neste trabalho foram estudadas formas de automatizar uma parte deste processo,visto que o objetivo não é achar as falhas e sim saber se o personagem consegue cumprira tarefa de completar o nível.

A ideia deste trabalho surgiu após a visualização do vídeo MarI/O – MachineLearning for Video Games [9] no qual o autor desenvolveu uma inteligência artificialpara o jogo super mario, utilizando aprendizagem de máquina, redes neurais artificiaise algoritmo genético. A ideia do autor surgiu baseada em Stanley [10], ele produziu um

Page 15: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

14

estudo que aborda a técnica de redes neurais unida com algoritmo genético. O vídeomostra o resultado do algoritmo, no qual inteligência artificial foi capaz de completaro nível e mostra também alguns processos de aprendizagem, onde o personagem tentoupassar o nível várias vezes e não conseguiu.

Kishimoto [11] fez uma pesquisa sobre inteligência artificial em jogos eletrônicos,desde o inicio da indústria - ele mostrou técnicas como algoritmos determinísticos, padrãode movimento, máquinas de estado, sistema baseado em regras, algoritmos de busca ealgoritmos genéticos.

No artigo produzido por Fugita [12] foram apresentadas diversas técnicas de inte-ligência artificial aplicada em jogos eletrônicos, além de demonstrar a importância delaem jogos. O autor teve como conclusão que a tendência para os algoritmos são de técnicasnão determinísticas, onde a técnica aprende com os seus erros e se adapta ao jogadorhumano.

O objetivo deste trabalho é apresentar um algoritmo de Inteligência Artificial capazde testar os jogos de plataforma antes que eles sejam lançados, com abordagem em apenasum jogo - WoodPecker World [13] produzido por Felinto [14]. Antes do lançamento deum jogo é fundamental garantir que uma fase criada possa ser concluída, ou seja, osdesenvolvedores não criaram obstáculos que travam uns aos outros ou as distâncias entreos pulos são possíveis de serem alcançadas. Com o desenvolvimento deste trabalho foipossível obter um algoritmo de inteligência artificial capaz de completar um nível dojogo WoodPecker World. Considerando o estado da arte, foram selecionados algoritmosde árvores de buscas, os quais foram colocados em diversas simulações com o intuito demostrar quais técnicas são promissoras quando aplicadas em um ambiente de jogo.

Após ter encontrado algoritmos para completar o jogo, foram feitas comparaçõesentre elas - através de testes práticos e coleta de dados. Neste trabalho as técnicas imple-mentadas completam uma fase de um jogo de plataforma, no qual o personagem move-seem duas dimensões, pode pegar moedas, vidas e não cair em obstáculos, pois são mortais.

O ambiente em que o personagem se movimenta não é conhecido pela inteligênciaartificial. Dentro deste ambiente foram estudados algoritmos para explorá-lo, como bus-cas em árvores e tomada de decisão - onde o personagem explora o ambiente e toma adecisão de sequências de movimentos para completar aquele nível. Dentre as buscas estão:profundidade e largura que irão procurar todas as sequências de movimentos possíveis emcada nível. Além da busca heurística, que expande somente áreas de interesse. Tambémfoi estudada uma técnica de tomada de decisão aleatória, na qual o personagem poderáir para qualquer direção, mas como ele terá o conhecimento do local onde o final do nívelse encontra, este aleatório foi direcionado para aquele local.

No Capítulo 2 são apresentados os conceitos estudados para a produção e compre-

Page 16: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

15

ensão do trabalho. No capítulo 3 é apresentada a descrição do método desenvolvido e nocapítulo 5 é apresentada a conclusão sobre o trabalho.

Page 17: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

16

2 FUNDAMENTAÇÃO TEÓRICA

Neste capítulo estão contidos os conceitos necessários para entender o trabalho.Entre eles um breve resumo de inteligência artificial, árvores de busca e jogos de plata-forma.

Existem vários modos de definir inteligência artificial, segundo Russel [1], um sis-tema pode ser considerado racional se ele toma uma decisão correta ou esperada, a partirde um conhecimento adquirido ou dado a este sistema [1]. E de acordo com Rich, inteli-gência artificial é o estudo de como programar os computadores para realizarem tarefasas quais, no momento as pessoas são melhores[15].

O campo da inteligência artificial vai além de compreender entidades, ele buscaconstruir entidade inteligentes, para a construção de tais, podem ser utilizados agentesinteligentes. Para definir melhor um agente inteligente, ele é dividido em três partes:sensores, atuadores e o programa. Segundo Russel [1] os sensores percebem o mundo esuas características, os atuadores mudam esse ambiente de alguma forma e o programadefine suas ações. No caso de uma pessoa os sensores são os 5 sentidos, o atuador é o seucorpo, e o programa que define suas ações o cérebro.

Varias técnicas de inteligência artificial são usadas em jogos, como o árvores debuscas, min-max, redes neurais articiais o jogos de plataforma:

2.1 Árvores de busca

Árvores são um tipo de estrutura de dados onde os elementos estão distribuídosde forma hierárquica (diferente de pilha ou fila). Cada nó ou estado pode ter mais deum sucessor. A raiz é seu o elemento principal, ela não possui outros antecessores e estácontida no primeiro nível da estrutura. Da raiz saem ramificações para outros elementoschamados de nós ou estados. Um nó que não possui sucessores, ou seja, não existemramificações, é chamado de nó folha.

Segundo Russel [1], uma árvore de busca possui todas as sequências de açõesexistentes, sendo a raiz o início, cada ramo uma ação e os nós um novo estado do problema.Foram estudados dois tipos de busca: cega e heurística.

2.1.1 Busca Cega

A busca cega utiliza uma estratégia na qual o algoritmo não possui informaçõesadicionais dos estados posteriores, ela só pode gerar um novo estado sucessor e saber adiferença entre um estado objetivo e um não objetivo [1].

Page 18: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

17

∙ Busca em largura

A busca em largura utiliza uma estratégia de busca simples, na qual expande-seprimeiramente os nós mais próximos da raiz, ou seja, todos os nós de uma mesmaprofundidade são expandidos para depois ocorrer a expansão dos nós dos níveisseguintes. Para que haja a expansão, é utilizada a estrutura de dados fila, com oconceito de FIFO (First In First Out). A busca coloca os nós filhos sempre atrásdos nós pais na fila, garantindo a saída dos nós de níveis mais rasos antes [1].

Considerando-se uma árvore com quantidade de nós sucessores uniforme, na qualseja ′𝑏′ essa quantidade de nós e ′𝑑′ a profundidade onde a solução será encontrada.Na raíz, o custo de tempo e espaço será 𝑏, no nível sucessor, será 𝑏2 e nos próximos,seguindo o critério será 𝑏𝑑, portanto a fórmula de custo é :

𝑏 + 𝑏2 + 𝑏3 + ...𝑏𝑑 = 𝑂(𝑏𝑑) (2.1)

A Figura 1 mostra um exemplo de execução do algoritmo explicado.

Figura 1 – Busca em Largura [1]

Ao observar a Figura 1, é possível visualizar a expansão de uma árvore em largura,onde a raiz se encontra no nó A, os próximos a serem expandidos são todos os nósque estão no segundo nível, no caso são os nós B e C e assim acontece até o final daárvore.

∙ Busca em profundidade

A busca em profundidade utiliza uma estratégia de busca na qual o algoritmo segueuma ordem de expansão priorizando o nó mais profundo da borda atual da árvorede busca. Para que haja a expansão, é utilizada a estrutura de dados fila com oconceito de LIFO(Last In First Out). A busca insere os nós filhos sempre atrás dosnós pai, garantindo que os filhos sempre saiam antes para a expansão.

A busca em profundidade pode ser utilizada com um limite de profundidade, paratratar casos nos 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 estadoobjetivo pois a escolha do limite é empírica e o objetivo pode estar um ou maisníveis a baixo do limite escolhido [1].

Page 19: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

18

Considerando-se uma árvore com quantidade de nós sucessores uniforme, na qualseja ′𝑏′ essa quantidade de nós e ′𝑚′ a profundidade máxima existente na árvore. Afó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, ocusto de tempo e espaço pode ser infinito.

Figura 2 – Busca em Profundidade [1]

Na Figura 2 é mostrada a expansão de uma árvore em profundidade, onde a raizse encontra no nó A, o próximo nó a ser expandido é o nó mais a esquerda (nóB), quando a árvore expande o nó B ela verifica se existe um nó mais a esquerda,achando o nó D, assim até conseguir percorrer toda a árvore.

2.1.2 Busca Heurística

A busca heurística utiliza uma estratégia de busca na qual o algoritmo tem infor-mações adicionais sobre cada estado. A informação adicional é utilizada como heurísticapara determinar o nó a ser expandido, cada problema pode ter informações diferentes,portanto a implementação também é diferente. Uma estratégia de busca heurística muitoutilizada é a busca gulosa. - Ela tenta expandir o nó mais próximo do nó objeto existente,

Page 20: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

19

para que isso seja possível, é necessário obter uma informação adicional como a distânciapara chegar até o nó objetivo.

∙ 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 oproblema é imaginar uma árvore com raiz A, pela heurística gulosa, que escolhe ocaminho B, mas em B não existe outra opção a não ser voltar para A e assim aovoltar em A o próximo passo pela heurística é ir para B (de novo), o que gera umlaço infinito [1].

A Figura 3 mostra uma busca gulosa em uma árvore na qual a raiz é representadapela cidade Arad e o objetivo é chegar até a cidade de Bucharest, é possível notarque em cada nó possui a informação adicional da distância entre o nó atual e oobjetivo, a heurística [1].

Figura 3 – Busca Heurística [1]

Page 21: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

20

2.2 Minimax

O Minimax foi desenvolvido por Von Neumann para jogos que respeitem o conceitoZero-Sum da teoria de jogos, na qual o ganho de um jogador é exatamente igual a perda dooutro, seus principais exemplos são os jogos clássicos de tabuleiro, como Damas, Xadrez,Jogo da Velha e Othello. O algoritmo Minimax tenta minimizar a maior perda possível,que pela teoria Zero-Sum também pode ser entendido como maximizar o menor ganhopossível, por isso seu nome. Ele constrói uma árvore de busca de todas as jogadas possíveise percorre a árvore buscando maximizar seus ganhos.

Em um caso com 2 jogadores, Min e Max, Max busca maximizar seu ganho, en-quanto Min tenta minimizar o ganho de Max, maximizando seu próprio ganho. O al-goritmo Minimax gera uma árvore com todas as jogadas possíveis dos dois jogadores,intercalando um jogador em cada nível e tomando o estado atual como raiz. O algoritmoentão aplica uma busca em profundidade, atribuindo aos nós nos níveis Min, o menorvalor dentre os seus nós filhos e aos nós nos níveis Max o maior valor dentre seus filhos.

Figura 4 – Exemplo de Execução do Algoritmo Minimax [2]

O custo do algoritmo Minimax é dado pelo custo da busca em profundidade 𝑂(𝑏𝑚)em que 𝑏 é o fator de ramificação ou seja, a quantidade de jogadas possíveis, e 𝑚 é aprofundidade máxima da árvore. O alto custo do Minimax dificulta sua utilização emjogos complexos como Xadrez, no qual a árvore completa do jogo teria aproximadamente35 elevado 100 jogadas.

Para melhorar o desempenho do algoritmo pode-se limitar a profundidade da ár-vore e/ou utilizar a poda Alfa-Beta. A estratégia da poda Alfa-Beta baseia-se no princípiode que alguns nós visitados pelo Minimax nunca seriam eleitos, ela pára completamentede avaliar um movimento quando ele encontra, de maneira comprovada, um movimentocujo valor associado seja pior do que um movimento previamente examinado.

Page 22: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

21

2.3 Redes Neurais Artificiais

Redes Neurais Artificiais são técnicas computacionais que apresentam um mo-delo matemático inspirado na estrutura neural de organismos inteligentes e que adquiremconhecimento através da experiência. Elas tem como ideia central utilizar neurônios bio-lógicos como modelo para a construção de neurônios artificiais.

Uma rede neural é um circuito composto por uma grande quantidade de unidadessimples de processamento inspiradas no sistema neural [16]. De acordo com Russel, éapenas uma coleção de unidades ligadas entre si; as propriedades da rede são determinadaspela sua topologia e as propriedades dos neurônios [1].

Um neurônio biológico é representado por corpo, dendritos, axônio e sinapses:

Figura 5 – Neurônio biológico [3]

Os neurônios se comunicam através de sinapses. Sinapse é o ponto de contato entreos neurônios, onde eles transmitem impulsos nervosos. Os dendritos recebem impulsoselétricos de outros neurônios e esses impulsos são enviados pelo axônio.

Uma rede neural artificial possui um número de unidades interconectadas, chama-das 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 uni-dades, dentro de um raio de vizinhança, e possivelmente pelas entradas externas. A Figura6 mostra como é a composição de um neurônio artificial:

Page 23: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

22

Figura 6 – Neurônio artificial [1]

Os valores 𝑎𝑖 representam o conjunto de entradas, 𝑊𝑖𝑗 são o conjunto de pesos(um para cada sinapse). O corpo possui função de entrada, função de ativação e saída.

Uma das propriedades mais importante das redes neurais é a habilidade de apren-der de seu ambiente e com isso melhorar seu desempenho. Isso é através dos ajustes dospesos de uma rede, o neurônio aprende quando é encontrada uma solução generalizadapara uma classe de problemas.

2.4 Jogos de Plataforma

Um conceito adicional e relevante ao trabalho é o dos jogos de plataforma. Elesfazem parte do cenário de validação das técnicas apresentadas anteriormente.

Os jogos de Plataforma fazem parte de um gênero no qual o jogador pode andar epular sobre plataformas, obstáculos, inimigos, pegar itens e geralmente matar um inimigomais forte ao final de cada saga. Um jogo bastante famoso deste estilo é o Super Mario[4] lançada pela Nintendo em 1985, existem outros famosos como o Mega Man lançadapela capcon em 1987 [17]. Os jogos de plataformas não se restringem ao ambiente deduas dimensões, eles podem e são feitos em três dimensões, principalmente com o avançoda tecnologia de desenvolvimento de jogos. O jogo Crash Bandicoot, desenvolvido pelaempresa Naughty Dog [18] é um famoso exemplo de um jogo de plataforma em trêsdimensões.

Page 24: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

23

Figura 7 – Jogo de Plataforma Super Mario [4]

Os jogos de plataformas não são jogados em turnos, ou seja, o jogador ou osinimigos não precisam esperar a sua vez para executar alguma ação, como acontece emjogos de xadrez ou damas. Nesse estilo de jogo, o personagem pode morrer se fizer a mesmasequência de ações em tempos diferentes, pois os inimigos também não esperam a sua vezpara executar alguma ação, sendo assim algum inimigo pode estar no meio do caminhonaquele intervalo de tempo. Logo, pode-se fazer um paralelo com as expansões das árvorescitadas em 2.1: caso uma sequência de expansão de nós consiga levar ao objetivo, a mesmasequência de expansão pode não conseguir atingir o mesmo objetivo se ela for executadacom algum atraso ou adiantamento na hora da expansão.

Page 25: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

24

3 ESTUDO DE CASO: WOODPECKER WORLD

Para o estudo de casos as inteligências artificiais foram aplicadas no jogo Wood-Pecker World, que foi produzido no projeto de estagio pelo autor deste trabalho [14]. Éum jogo de plataforma em duas dimensões onde o personagem pode jogar em diversosníveis diferentes. Obedece a todos os requisitos básicos de um jogo neste estilo, mecânicasde movimentação e pulo e o personagem deve se esquivar dos inimigos e obstáculos. Osinimigos podem se movimentar na cena, portanto o jogador deve tomar cuidado, apenasficar parado em um mesmo local não é seguro.

No desenvolvimento deste trabalho foram estudados algoritmos utilizados parao estilo de jogo escolhido. Após estudar as características de cada um, como a ordemde complexidade de tempo e espaço, foi possível definir quais são os melhores em casosgerais, sendo assim eles foram submetidos à simulações no jogo [13]. Sempre que algumalgoritmo foi testado, foram obtidos dados como o tempo que ele demorou para terminar afase e se o caminho que ele descobriu era curto ou longo. Cada algoritmo estudado possuipeculiaridades, mas todos foram aplicados ao mesmo ambiente – o primeiro nível do jogoWoodPecker World, afinal, o próprio jogo foi desenvolvido juntamente com este trabalho,sendo assim foi possível ter acesso total ao código fonte, facilitando nas aplicações dastécnicas.

3.1 Ambiente

Cada jogo de plataforma possui suas regras básicas (movimentações laterais e pu-los) e outras criadas pelo desenvolvedor, como a variação das mecânicas: se o personagempode atirar ou não, a quantidade de pulos que o personagem pode fazer ou o modo dematar os inimigos; por isso é necessário descrever quais são as mecânicas do jogo. Nocaso do jogo WoodPecker World, onde os algoritmos foram testados, os tipos de açõesexistentes são:

∙ Andar para direita

∙ Andar para esquerda

∙ Pular

∙ Pular andando para direita ou para esquerda.

∙ Descer rapidamente

∙ Descer rapidamente andando para direita ou para esquerda

Page 26: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

25

∙ Ficar parado

O jogador pode alterar o estado de jogo através da combinação de botões. Porexemplo, para o personagem pular indo para frente, o jogador teria que apertar o botãode pulo junto com o botão de andar para frente. Para as técnicas de inteligência artificial,a posição do personagem junto com o tempo é um estado (nó na árvore) e cada umadessas ações são as ligações (ramos), portanto para transitar de um nó para o outro opersonagem deve executar alguma dessas ações.

No jogo WoodPecker World o personagem pode entrar em contato com algunsobjetos de cena, estes objetos podem ser divididos em inimigos e objetos do cenário. Osinimigos podem matar o personagem e os outros objetos apenas compõem a cena - existemsomente três tipos de inimigos:

∙ A Figura 8 mostra o espinho estático: obstáculo que fica parado, se o personagemtocá-lo irá morrer.

Figura 8 – Espinho estático

∙ A Figura 9 mostra o inimigo 01: anda de um lado para o outro, se o personagempular em cima dele o inimigo morre, se o jogador tocá-lo de qualquer outra forma,o personagem morre.

Figura 9 – Inimigo 01

∙ A Figura 10 mostra o inimigo 02: anda de um lado para o outro, se o personagemtocá-lo irá morrer.

Page 27: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

26

Figura 10 – Inimigo 02

Os objetos que compõem a cena ficam imóveis durante todo o tempo de execução, al-guns podem ter interação com o personagem, como as caixa de madeira, que podem serdestruídas. Os objetos que compõem o cenário são:

∙ A Figura 11 mostra as caixas de metal: objeto onde o personagem pode andar porcima ou tocá-lo de qualquer outra forma.

Figura 11 – Caixa de Metal

∙ A Figura 12 mostra as caixas de madeira marrom: se o personagem pular em cimaa caixa quebra e ele ganha um pequeno impulso para cima.

Figura 12 – Caixa de Metal Marrom

∙ A Figura 13 mostra as caixas de madeira verde: se o personagem bater em baixodela a caixa quebra e ele ganha um pequeno impulso para baixo.

Figura 13 – Caixa de Madeira Verde

Page 28: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

27

∙ A Figura 14 mostra os cogumelos: se o personagem pular em cima dele irá ganhargrande um impulso para cima.

Figura 14 – Cogumelo

∙ A Figura 15 mostra o final de nível, indicado por uma luz: é o objetivo de jogo, aochegar neste ponto o personagem completa o nível.

Figura 15 – Final de Nível

3.2 Técnicas de Inteligência Artificial

Os algoritmos utilizados foram de busca heurística, busca em largura e busca emprofundidade por serem técnicas que avaliam todas as possibilidades existentes. Foramestudados modos de dividir o problema em pequenas partes para agilizar o processo e umtipo de exploração aleatória, citado na seção 3.2.3. As técnicas de IA foram programadassomente com os seguintes conhecimentos prévios:

∙ Posição do personagem.

∙ Posição do final do nível.

∙ Conhecimento se o personagem morreu.

∙ Conhecimento se pegou algum item.

Além das informações citadas anteriormente, os agentes somente conseguem movi-mentar o personagem das mesmas formas que um jogador humano conseguiria, portantouma jogada invalida, como pular quando o personagem estiver no ar, continua sendoinválida para os agentes.

Para todas as árvores de buscas serão seguidas as seguintes estruturas:

Page 29: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

28

Cada nível da árvore de busca representa o tempo percorrido em jogo, ou seja, onó raiz presente no primeiro nível representa o início do jogo, os nós que estão no segundonível estarão no segundo tempo de jogo, o tempo pode se dividir em segundos ou frames.

Cada nó ou estado na árvore possui a posição que o jogador está - a posição e otempo de jogo formam junto um único estado.

Os ramos da árvore são as jogadas possíveis, as quais geram um novo estadona árvore, ou seja, cada nó possui o número de ramos equivalente ao número de açõesexistentes.

O nó objetivo representa final de fase - é quando a distância do personagem até oobjetivo for igual à zero.

A árvore é construída de acordo com as movimentações do personagem, logo astécnicas não terão acesso a toda a árvore de busca, sendo assim, os únicos nós conhecidossão aqueles já visitados e os filhos deles.

3.2.1 Busca heurística

Esta IA executa todos os movimentos possíveis do personagem a cada intervalo detempo. Após executar todos os movimentos, ela salva no banco de dados qual o melhormovimento para cumprir o seu objetivo de passar de nível; na próxima iteração ela executatodos os movimentos salvos no banco e repete a ação para achar o melhor movimento aseguir.

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 previa-mente escolhidos no jogo para a IA poder detectá-los.

∙ Se o movimento leva a um lugar mais perto do objetivo, então é priorizado.

Nessa busca, é considerado um problema se a escolha de “lugares ruins” for errada,ou seja, o personagem fica preso na mesma posição pois a heurística não permite que elevolte, isso irá prejudicar na tomada de decisão do algoritmo. Portanto é preciso que oaplicador da técnica conheça muito bem o jogo, caso contrário as chances da técnicafalhar são grandes.

Existem ajustes que devem ser feitos caso o personagem fique preso em uma de-terminada posição, como ilustra a Figura 16, ele não conseguirá mais sair, pois não existeuma movimentação que o leve para mais perto de seu objetivo (neste momento ele teriaque ir para trás). Portanto caso ocorra algum problema semelhante, o código precisará deajustes.

Page 30: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

29

Os ajustes teriam que ser específicos para cada determinado tipo de problema.No problema exemplificado na Figura 16, foi feita uma condição específica para aquelaposição - caso ele chegue na posição, o personagem pula para trás e depois pula parafrente.

Nas fases iniciais de jogos de plataforma não é muito comum existir problemasdesse tipo, mas com o avançar das fases acaba se tornando comum, portanto apesar datécnica possuir um bom resultado em questão de tempo, ela é suscetível a erros e podeprecisar de muitos ajustes.

Figura 16 – Exemplo de caso o qual o personagem fica preso

3.2.2 Busca em Profundidade/ Largura

As vantagens das buscas em profundidade e em largura sobre a busca heurísticase dão pela não necessidade de se possuir conhecimento prévio sobre o problema, sendoassim elas podem ser executadas diretamente sobre o jogo sem alterações. Segundo Russel[1], essas buscas tem alta complexidade de tempo e espaço, por outro lado, elas exploramtodas as possibilidades e tendem a obter um resultado melhor no final, ou seja, casoelas encontrem um nó objetivo, elas são capazes de determinar a melhor sequência demovimentações para chegar até ele.

Para o problema proposto, foi feita a busca em profundidade onde a expansãoocorre no nó mais a direita da árvore, pois sabe-se que o final do jogo está à direita dopersonagem, 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 sem morrer, a técnica precisa percorrer toda a árvore de busca,da mesma forma que a busca em largura - cada caminho com êxito em completar o nível

Page 31: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

30

é salvo no banco de dados com todas as ações e a pontuação feita, assim ao final pode serfeita uma comparação de resultados.

O grande problema da utilização de uma busca em profundidade ou uma buscaem largura é conseguir determinar como descartar os ciclos que ocorrem na árvore. Emjogos de plataformas, é comum existir casos onde o jogador tem que ir para trás paraconseguir pular um obstáculo, ou até mesmo ficar parado para esperar o tempo certopara escapar de um inimigo. Sendo assim, movimentos repetidos não são consideradosciclos, logo o método é muito custoso e difícil de ser otimizado. Utilizando a técnica semaperfeiçõar a técnica de cortar ciclos, as árvores em largura e em profundidade podem setornar infinitas como é mostrado na Figura 17:

Figura 17 – Árvore com ciclos

Pode-se notar que a movimentação “parado” entra em ciclo por si só, a movimen-tação de ir para a direita e depois ir para esquerda ou ir para à esquerda e depois ir paraà direita, também entram em ciclos e na maioria das vezes elas são desnessárias para oproblema, mas como já foi dito, esse tipo de movimentação pode ser útil para o tipo dejogo, portanto não é possível apenas cortá-los.

3.2.3 Aleatório Direcionado

É uma técnica foi desenvolvida com o propósito de otimizar processo de passar denível, pois os algoritmos apresentados anteriormente não obtiveram um bom tempo deexecução. Ela consiste em determinar um número aleatório que define a movimentação aser realizada, mas como a direção do fim do nível é conhecida, os movimentos para essadireção são priorizados.

Page 32: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

31

Partindo da intenção de ir para o final do nível, o número aleatório tende a irpara esta direção, por exemplo: Se o fim do nível está para a direita do personagem, osmovimentos “andar para a direita”, “Pular andando para direita” e “Descer rapidamenteandando para direita” terão o dobro do peso das outras jogadas. Como podem haver casosem que o personagem precisa andar para trás a fim de se esquivar de algum obstáculo, asoutras movimentações não podem ser descartadas.

Após a técnica completar o nível diversas vezes, o banco é populado com as açõesexecutadas; a partir desses dados, é feita uma consulta no banco de dados (query) paradeterminar a melhor sequência de movimentações para aquele nível.

A melhor sequência é determinada de acordo com o objetivo do desenvolvedor,se ele quer somente verificar se uma fase é impossível ou se ele quer verificar pontuarcom moedas. A maneira mais simples é calcular o menor caminho ou o menor tempoconseguido após analisar todas sequências completas, desenvolvidas por Felinto [14]. Po-rém, se o desenvolvedor precisar de dados como pegar itens e matar inimigos ou ambos,são necessárias pequenas alterações na query para se ajustar às necessidades. Portanto,quanto mais o banco estiver populado, mais sequências poderão ser comparadas entre si,proporcionando um melhor resultado.

3.2.4 Dividir o problema em Blocos

Um nível de um jogo de plataforma geralmente não é algo muito grande, porém aquantidade de combinações de movimentos possíveis cresce exponencialmente de acordocom o tamanho do nível.

Um nível muito grande levaria mais tempo para analisar todas as sequências de jo-gadas possíveis, ou mesmo tentar achar uma combinação de jogadas capazes de completá-lo.

Partindo deste pressuposto, dividir um nível em pequenos blocos irá fracionar otamanho de cada problema, assim ao achar a melhor solução de um bloco e considerá-lacorreta pode-se passar para o próximo bloco utilizando as sequências de movimentaçãoanterior.

Para dividir o nível em blocos basta dividir o tamanho total do nível em ′𝑥′ pelaquantidade de blocos desejados. Por exemplo, o nível tem tamanho total em 𝑥 de 300unidades, se forem criados 6 blocos o resultado será de 6 blocos de tamanho 50 unidades,assim se o personagem estiver em alguma posição entre 0 e 49, ele estará no bloco 1, seestiver ente 50-99 estará no bloco 2 e assim sucessivamente até o bloco 6.

A Figura 18 mostra o primeiro nível do jogo WoodPecker World com uma divisãode 6 blocos:

Page 33: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

32

Figura 18 – Divisão da fase em blocos iguais

Page 34: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

33

Em alguns casos, pode ser interessante definir tamanhos de blocos de forma hete-rogênea, pois dependendo da técnica que for aplicada para achar o melhor caminho dentrodo bloco, o próximo bloco pode ser impossível de ser completado.

A Figura 19, ilustra um problema causado pela má divisão de blocos.

Figura 19 – Problema causado pela divisão

O personagem, que esta marcado pela seta preta na Figura 19, saiu do primeirobloco e a sua última movimentação o levou para perto do espinho vermelho. Deste modo,ao chegar no próximo bloco, qualquer movimento que ele executar o levará a morte.

Portanto, com a criação de blocos intencional, de modo que cada bloco terminesempre em uma zona segura, os resultados são melhores. Ou seja, não importa como elevai terminar o bloco, mas se ele terminar estará em uma parte segura do próximo bloco,assim ele sempre vai conseguir completar o jogo se completar todos os blocos.

A Figura 20 mostra uma divisão de blocos intencional e segura para a fase:

Figura 20 – Divisão da fase em blocos de forma intencional

A forma de divisão garante que os blocos não vão colocar a inteligência artificialem uma enrascada, pois todos os finais de blocos estão em uma área onde o personagemnão pode ser morto; de tal forma, podem ser aplicadas diversas técnicas em cada blocoe elas vão depender apenas de seu desempenho, pois os finais de bloco estão em posiçõesseguras.

Page 35: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

34

A técnica de aleatório direcionado 3.2.3, foi aplicada em blocos, ao invés de com-pletar o nível todo, agora é necessário completar pequenos blocos dele por vez - o quetrouxe os melhores resultados dentre as técnicas estudadas.

Em 3.2.3, a técnica de aleatório direcionado depende de uma variável aleatória quepode acabar levando o personagem a morte, quanto maiores forem as sequências de açõespossíveis, maiores são as chances de o personagem morrer naquela sequência.

Em virtude dos problemas encontrados, uma boa solução é dividir as sequênciasem blocos para que sejam criadas menores sequência seguras, ou seja, são determinadospequenos caminhos os quais o personagem pode passar.

A presente técnica foi produzida de duas formas:

∙ Encontrar um caminho para o fim do nível.

∙ Encontrar o melhor caminho dentro de todos os explorados.

Para encontrar um caminho para o fim do nível, é bem simples: Se o personagemencontrar alguma forma de sair do bloco sem morrer, ele armazena a sequência e passapara o próximo bloco, assim sucessivamente até que terminem todos os blocos e o níveltermine.

A vantagem do tipo de abordagem é o tempo, pois ele passa para a próxima etapaassim que obtiver qualquer grau de sucesso. Porém, a desvantagem é que o personagemnão explora muito bem cada bloco, o que o impossibilita de detectar itens que pontuamno jogo; outra desvantagem é que o personagem pode fazer muitos movimentos inúteisdentro de cada bloco, como por exemplo: Ao invés de só andar para frente quando ele forsair de um bloco, o personagem pode andar para trás e depois para frente antes de sair -o que torna o movimento para trás inútil.

Para encontrar o melhor caminho dentro de todos os explorados, é necessário umtempo em treinamento, ou seja, ao terminar um bloco, o personagem volta a explorá-loaté terminar esse tempo, que pode ser contado por iterações, como por exemplo: só serápermitido ir para o próximo bloco se o bloco anterior possui 100 formas diferentes determinar - assim o personagem possuirá 100 maneiras distintas de passar cada bloco epoderá escolher a melhor delas.

É considerado melhor resultado o que conseguiu completar um bloco em menortempo, ou seja, possuiu uma sequência de ações menor para completar.

De acordo com a quantidade de dados possuídos no banco de dados, o personagemaprende melhor e melhora seu tempo. Caso haja um treinamento pequeno, o resultadotende a ser igual ao tipo de abordagem que simplesmente encontra um caminho para ofim do nível.

Page 36: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

35

A vantagem deste método é que o personagem vai aprender a melhor forma dentreas exploradas de completar cada bloco e consequentemente de completar o nível. A des-vantagem é o tempo de execução, que é bem maior que o método anterior, pois o tempode execução é multiplicado pelo tempo de treinamento na média.

Page 37: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

36

4 RESULTADOS

Foram implementadas quatro técnicas para conseguir completar o nível. Sendo elas:busca heurística gulosa, busca em profundidade/busca em largura, aleatório direcionadoe aleatório direcionado em blocos.

4.1 Busca Heurística

Com a busca heurística o personagem conseguiu alcançar o final do nível; no pri-meiro nível do jogo o algoritmo demorou 777,3809 segundos para achar o caminho até ofinal. O cálculo do tempo foi feito desconsiderando os ajustes citados no estudo de caso3.2.1, pois ao aplicá-los o tempo de execução deve ser cancelado e retomado logo emseguida impedindo que o cálculo seja feito. Como os ajustes são feitos pelos próprios de-senvolvedores o tempo varia por pessoa e por problema, logo não é possível ser calculadode forma geral.

4.2 Busca em Profundidade/Largura

Tanto a busca em largura quando a busca em profundidade apresentaram umgrande problema; o fato de não ser possível otimizá-las e fazer cortes de ciclos, portantoelas se tornam infinitas.

Em um teste de execução de 24 horas, as buscas não foram capazes de percorrerum terço do primeiro nível, o qual é um nível curto e relativamente fácil.

Portanto, pode-se concluir que essas buscas, sem algum modo de otimização, sãoinviáveis para este problema.

4.3 Aleatório Direcionado

O custo deste método é linear com um limite, dado pela quantidade máxima decombinações de jogadas possíveis, ou seja, quando a inteligência artificial executar umnível um determinado número de vezes, ela irá parar de encontrar novas maneiras decompletá-lo.

O custo pode tender ao infinito caso as jogadas aleatórias nunca consigam passar denível. Para calcular a quantidade máxima de combinações possíveis é necessário expandiruma árvore com a combinação de todos os movimentos possíveis, fazer isto vai contra aproposta de linearidade e agilidade de encontrar um meio de passar de nível, portantodeve-se escolher um número pequeno e arbitrário de vezes para ser o limite, afinal o

Page 38: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

37

objetivo da proposta é encontrar um caminho até o final do jogo, achar o melhor caminhocom esta técnica seria apenas um bônus.

Esta técnica conseguiu cumprir com o objetivo do trabalho e foi capaz de completaro nível. A Figura 21, mostra um gráfico que contém a quantidade de tentativas em x pelaquantidade de vezes que a técnica conseguiu completar o nível em y.

Figura 21 – Gráfico de tentativas x vezes

Nota-se que a quantidade de tentativas é muito desproporcional comparado à quan-tidade de vezes que o nível foi completado, pois a técnica possui uma variável aleatóriaque dita para onde o personagem deve ir e a cada nova movimentação e o personagemdepende desta variável para não se matar. Utilizar esta técnica para o nível todo é inviá-vel, pois a qualquer momento o personagem pode morrer e ter que voltar para o início,perdendo assim, toda a boa sequência de movimentações feitas anteriormente.

A Figura 22 ilustra o problema que pode surgir com a variável aleatória.

Figura 22 – Exemplo de problema com variável aleatória

Page 39: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

38

Pode-se observar que após o personagem pular o obstáculo de espinhos, a variávelaleatória pode escolher pular para trás, o que acarratará na morte do mesmo.

Para calcular o tempo capaz de achar uma sequência que complete o nível, foifeita a média dos primeiros tempos que completaram o nível 50 vezes seguidas, ou seja,o algoritmo foi executado 50 vezes, o tempo para terminar o nível foi calculado a cadavez, e todos os tempos foram somados e divididos por 50, assim a técnica teve uma médiado tempo de execução de 591,7693 segundos e a média de tentativas necessárias paraconseguir completar o nível foi de 348 vezes.

4.4 Dividir o problema em Blocos

Com esta técnica, a média de tempo para completar o primeiro nível foi de 86,5639segundos, muito menor que 591,7693 segundos, quando foi feita somente a técnica aleatóriadirecionada sem os blocos.

No caso anterior o tempo médio foi de 86,5639, portanto o tempo médio deste casoera pra dar aproximadamente 4328,195, pois nos testes o tempo de treinamento foi de 50vezes, fazendo os testes o tempo médio deu 4982,4433, próximo do esperado.

4.5 Comparação de resultados

Para concluir o estudo de caso, foi gerada a Tabela 1 que mostra a comparaçãoentre os tempos de execução das técnicas e o gráfico de barras mostrado na Figura 23. Nográfico as barras representam as técnicas que completaram o nível e a altura das barrasrepresenta o custo em tempo para elas completarem o nível.

Técnicas Tempo (s)Busca heurística gulosa 777,3809Aleatório direcionado 591,7693Aleatório direcionado rápido 86,5639Aleatório direcionado melhor caminho 4982,4433

Tabela 1 – Tempo médio para execução das técnicas

Page 40: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

39

Figura 23 – Gráfico comparativo entre os tempos médios de execução das técnicas

A primeira barra representa o tempo da busca heurística - ela possui um tempode execução bom mas sempre mostra o mesmo caminho. A segunda barra determina otempo da técnica aleatório direcionado - mostra caminhos diferentes e tem muita chancedesses caminhos serem longos. O terceiro representa o aleatório direcionado em blocosrápido, ou seja, o primeiro modo discutido, onde o personagem passa de bloco assim quecompletar o bloco atual de qualquer maneira, sendo assim teve o melhor tempo mas nãoobtém resultados muito inteligentes. A última barra representa o aleatório direcionado emblocos com treinamento, é a técnica que teve maior custo, mas com ela é possível ao finalda execução obter um melhor caminho do que nas outras técnicas como, por exemplo, umcaminho mais rápido ou um caminho que pegue mais itens.

A Tabela 2 apresenta a quantidade de execuções de movimentos que o personagemproduziu para concluir o nível. Para criar a tabela foi feita uma media das quantidadesde passos para terminar o nível em cada uma das técnica. A média da quantidade demovimentos executados tende a ser igual em maquinas diferente, já a tabela de tempo deexecução em segundos irá variar dependendo do potencial do computador utilizado.

Técnicas PassosBusca heurística gulosa 1943Aleatório direcionado 1477Aleatório direcionado rápido 232Aleatório direcionado melhor caminho 12453

Tabela 2 – Quantidade de movimentos para concluir nível

Cada passo dado significa um movimento do personagem e uma transição de estado

Page 41: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

40

nas árvores de busca, no caso dos aleatórios, que não utiliza a estrutura de árvores, ésomente a execução de um dos movimentos aleatórios.

4.6 Nível impossível de ser completado

As técnicas estudadas nesse trabalho foram capazes de completar o objetivo pro-posto, mas elas também devem informar ao desenvolvedor que determinado nível é im-possível de ser completado.

Uma forma de determinar se uma técnica não conseguiu terminar o nível é criarum limiar arbitrário de tempo, se esse limiar for atingido, o desenvolvedor deve verificar omotivo. Ele pode ser causado pela existência de zonas impossíveis de serem completadasou pelo fato do limiar ser muito pequeno para aquele nível, sendo assim o personagemnão teve tempo suficiente para explorar o ambiente.

Para verificar se o limiar é pequeno basta analisar o comportamento do personagemno momento em que o limiar foi atingido, caso ele faça somente movimentos que o levemà morte ou que fiquem em ciclos, são indícios de que existe um problema neste ponto donível e ele não pode ser completado devido ao problema, caso a execução esteja em seucurso normal, o personagem continua a sua exploração - o que indica que o limiar foi malescolhido, logo o limiar deve ser um valor mais elevado.

A escolha do limiar para determinar se o nível não pode ser completado funcionapara todas as técnicas mostradas, mas é redundante na busca heurística, pois na buscaheurística gulosa é necessário ajuste quando o personagem não consegue mais avançar eo problema pode ser que naquele ponto seja realmente impossível, logo o desenvolvedorpercebe que não existem ajustes para o personagem completar o nível, sendo assim oproblema está na construção do nível e não na movimentação do personagem.

A Figura 24 demonstra a simulação de ambiente em que o personagem não conse-gue passar, pois existem caixas bloqueando a passagem do mesmo, portanto o tempo deexecução é infinito em qualquer técnica, logo o limiar é atingido e o desenvolvedor podenotar o erro de construção do nível.

Page 42: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

41

Figura 24 – Zona impossível

Page 43: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

42

5 CONCLUSÃO

O trabalho tem como objetivo estudar métodos que consigam concluir um nível deum jogo de plataforma. Todos os softwares passam por uma fase de teste, em jogos issotambém acontece, todos os jogos antes de serem lançados são testados diversas vezes, logouma forma de automatizar este processo seria muito vantajoso para os desenvolvedores.Os algoritmos que foram estudados foram aplicados no jogo WoodPecker World, um jogode plataforma para android, com poucos movimentos existentes.

Para atingir o objetivo foram propostas as buscas em profundidade, em largurae heurística. Destas buscas somente a busca heurística teve sucesso e conseguiu cumpriro objetivo, as outras passaram por problemas de otimização. A busca heurística usou aheurística gulosa, ou seja, sempre vai para mais perto do objetivo, isto levou a problemasque tiveram que ser ajustados, como por exemplo, se todos os caminhos não o levam paramais perto do objetivo.

Outra técnica estudada é a de aleatório direcionado, esta técnica aplicada sozinhatem sucesso e também conseguiu cumprir o seu objetivo, mas ela teve muitas dificuldadespor ser muito aleatória, com este pensamento foi implementada a mesma técnica só queo problema foi dividido em blocos, diminuindo as chances da variável aleatória matar opersonagem do jogo. A técnica de aleatório direcionado em blocos teve o maior sucessoentre todas as outras estudadas, completou o nível aproximadamente nove vezes maisrápido que a busca heurística além de ter criado a possibilidade de usar o melhor caminhode todos os explorados pela técnica.

Como trabalhos futuros pode-se fazer um estudo de como otimizar as técnicas debusca em largura ou em profundidade para este problema, afim de cortar os ciclos deforma eficiente, tirando as movimentações inúteis, deste modo as técnicas poderão seraplicadas e não terão mais tempo infinito de execução.

Com a divisão do problema em blocos também seria interessante tentar simular vá-rios personagens jogando ao mesmo tempo, cada um em seu bloco, sendo assim cada blocoseria testado em paralelo agilizando o processo e obtendo resultados mais rapidamente.

Como o projeto teve acesso ao código fonte do jogo WoodPecker World, os testestodos foram feitos nele, logo um trabalho futuro seria testar as mesmas técnicas em outrosjogos do mesmo estilo a fim de comparar os resultados e a conclusão.

Page 44: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

43

REFERÊNCIAS

[1] NORVING, S. R. P. Articial Intelligence A Modern Approach. 3. ed. [S.l.]: Pearson,1995.

[2] BIERMANN CRPC SUMMER RESEARCH STUDENT, C. A. S. ParallelImplementation and Optimization of the Minimax Algorithm with Alpha-BetaCutoffs in the context of the game Othello. 1994. <http://pressibus.org/ataxx/autre/minimax/node2.html#SECTION00020000000000000000>.

[3] SIMAS, E. Introdução às Redes Neurais Artificiais. <http://www.dee.eng.ufba.br/home/simas/introdRNA.pdf>.

[4] NINTENDO. Nintendo’s Oficial Home for Mario. 2014. <http://http://www.mario.nintendo.com/> Nintendo.

[5] SCHWAB, B. AI game engine programming. [S.l.]: Cengage Learning, 2009.

[6] CORREA, T. D. P. B. D. A evolução das técnicas de inteligência artificial.SBGAMES, 2012.

[7] 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.

[8] MYERS, G. J.; SANDLER, C.; BADGETT, T. The art of software testing. [S.l.]:John Wiley & Sons, 2011.

[9] SETHBLING. MarI/O - Machine Learning for Video Games. <https://www.youtube.com/watch?v=qv6UVOQ0F44>, MarI/O.

[10] STANLEY, K. O.; MIIKKULAINEN, R. Evolving neural networks throughaugmenting topologies. Evolutionary computation, MIT Press, v. 10, n. 2, p. 99–127,2002.

[11] KISHIMOTO, A. Inteligência artificial em jogos eletrônicos. Academic researchabout Artificial Intelligence for games, 2004.

[12] FUGITA, E. Algortimos de IA para jogos. [S.l.], 2005. Disponível em:<http://www.cin.ufpe.br/~tsr/tcc-Eduardo_Fujita-2005.pdf>.

[13] FELINTO, J. WoodPecker World. <https://play.google.com/store/apps/details?id=com.jonas.felinto>,Woodpecker World.

[14] FELINTO, J. Produção de jogo 2d de plataforma teste de viabilidade cominteligência artificial. Estágio, Faculdade de Ciência da Computação, UniversidadeEstadual de Londrina., 2016.

[15] RICH, E. Artificial Intelligence. 2. ed. [S.l.]: McGraw-Hill Publishing Co., 1991.

[16] NIGRIN, A. Neural networks for pattern recognittion. American PsychologicalAssociation (APA), 1993.

Page 45: APLICAÇÃODEINTELIGÊNCIAARTIFICIALPARA ......13 1 INTRODUÇÃO Inteligência artificial em jogos é um tópico estudado há muito tempo. Em 1974 surgiu o primeiro jogo que a utilizava

44

[17] CAPCOM. Mega Man Legacy Collection. 2015. <http://www.megaman.capcom.com/> Capcom.

[18] DOG, N. 30 years Naughty Dog. <http://www.naughtydog.com/timeline/>,NaughtyDog.