Você está na página 1de 55

ESCOLA DE ENGENHARIA DE PIRACICABA

BACHARELADO EM CINCIA DA COMPUTAO

Kleber de Oliveira Andrade

Um Algoritmo Evolutivo para Adaptao das Estratgias dos NPCs em um Jogo de Ao

Piracicaba 2008

Kleber de Oliveira Andrade

Um Algoritmo Evolutivo para Adaptao das Estratgias dos NPCs em um Jogo de Ao

Trabalho de concluso do curso de Cincia da Computao apresentado Escola de Engenharia de Piracicaba como parte dos requisitos necessrios aprovao na disciplina Trabalho de Graduao.

Orientadora: Profa. Dra. Ana Estela Antunes da Silva Co-orientador: Prof. Msc. Marcio Kassouf Crocomo

Piracicaba 2008

FOLHA DE APROVAO

Kleber de Oliveira Andrade

Um Algoritmo Evolutivo para Adaptao das Estratgias dos NPCs em um Jogo de Ao

Trabalho de concluso do curso de Cincia da Computao apresentado Escola de Engenharia de Piracicaba como parte dos requisitos necessrios aprovao na disciplina Trabalho de Graduao.

Data de aprovao: 24/11/2008

Banca Examinadora

Titulao e nome: Prof. Msc. Jos Martins Jr Instituio: Escola de Engenharia de Piracicaba Assinatura: _______________

Titulao e nome: Prof. Msc. Luis Henrique Sacchi Instituio: Escola de Engenharia de Piracicaba Assinatura: _______________

Titulao e nome: Prof. Msc. Mrcio Kassouf Crocomo Instituio: ICMC USP Assinatura: _______________

DEDICATRIA

minha famlia, meus professores e aos meus valiosos amigos.

AGRADECIMENTOS Deus, por me conceder o privilgio da Vida. minha amiga, professora e orientadora Dra. Ana Estela Antunes da Silva que me apresentou a rea de Inteligncia Artificial e me guiou neste projeto, me mantendo sempre firme na idia base para no fazer coisas desnecessrias e obter um timo resultado. Ao amigo e co-orientador, Msc. Mrcio Kassouf Crocomo, que sempre esteve disposto a responder minhas dvidas sobre algoritmos evolutivos e jogos. Sem essa ajuda, certamente o caminho desse trabalho teriam sido mais rduo. Aos meus orientadores, muito obrigado pela ajuda, interesse, dedicao e contribuio. Aos meus professores que me transmitiram conhecimentos valiosos, sempre me dando apoio e motivao, e com quem pude compartilhar uma maravilhosa jornada acadmica. minha famlia, pela simples existncia em minha vida. Nenhuma palavra capaz de expressar toda minha gratido minha me e meus irmos, que estiveram sempre me apoiando e torcendo por mim. A todos os meus amigos dos mais antigos aos mais recentes, pela companhia e momentos vividos em minha vida antes e durante o perodo da graduao. Ao professor Msc. Rogrio Leon Pereira da Universidade Federal de Maring, que compartilho idias de jogos desde 2007 e que apesar de nunca ter o conhecido pessoalmente, meu muito obrigado. Pessoal do portal UNIDEV e do grupo XNA-BR que me ajudaram na compreenso de alguns pontos importantes no desenvolvimento do jogo. Leonardo Trindad e Felipe Aron que me ajudaram com os conceitos de programao em XNA, e mesmo s mantendo contato virtualmente, muito cooperaram para a implementao do jogo. Aos colegas de trabalho e aos diretores da Elos & PPR Bombas e Vlvulas, meu muito obrigado pelo apoio que me deram durante todo esse perodo e por me darem a oportunidade de aprender e crescer no s profissionalmente, mas tambm como pessoa. Para todos aqueles que leram este trabalho e deixaram suas valiosas contribuies, e tambm aos que sempre perguntaram sobre o andamento deste projeto: obrigado, o interesse demonstrado por vocs foi responsvel pela qualidade que pude atingir neste trabalho. Espero que gostem do resultado final!

Para o Infinito, e Alm! Buzz Ligthyear, Personagem do filme Toy Story.

RESUMO Durante este trabalho foi desenvolvido um Algoritmo Evolutivo e elaborado um jogo em que as estratgias adotadas pelos personagens no controlados pelo jogador se adaptam de acordo com as estratgias utilizadas pelo jogador a cada batalha. Desta forma o Algoritmo Evolutivo utilizado tende a aumentar a atratividade do software. Para a elaborao deste jogo chamado de O ltimo Sobrevivente, foi utilizada a linguagem C# e o framework XNA desenvolvido pela Microsoft. Foi realizada uma pesquisa sobre a aplicao de Inteligncia Artificial em jogos, mais especificamente, Algoritmos Evolutivos em jogos. O presente trabalho vem a contribuir com o estado da arte, onde so poucas as publicaes de aprendizagem utilizando Algoritmos Evolutivos aplicados a jogos em tempo real, sendo assim, o mesmo contribui com mais um estudo de caso. Graas ao Algoritmo Evolutivo implementado, o jogo produzido mostrou adaptar-se s aes do jogador. Palavras-chave: Inteligncia artificial, jogos eletrnicos, videogames, algoritmo evolutivo, aprendizagem.

ABSTRACT An evolutionary algorithm was developed to support a game in which the non-player character strategies are adapted, during each battle, accordingly to the human player strategies. In this way, the evolutionary algorithm tends to improve the software attraction to the players. In order to develop the game called O ultimo sobrevivente (The last survivor) the C# language and the XNA framework (by Microsoft) were utilized. A research in Artificial Intelligence, specifically in Evolutionary Algorithms, was developed in order to assimilate the main concepts of the area. The present work tries to contribute to the state of art where there are few publications using evolutionary algorithms applied to game in real time execution. In this way the work contributes to one more case study. Accordingly to the evolutionary algorithm the developed game was very well adapted to the players actions. Keywords: Artificial intelligence, electronic games, consoles, evolutionary algorithms, learning.

LISTA DE ILUSTRAES Figura 1 Tennis for Two (1958) rodado na tela de um osciloscpio ............12 Figura 2 Spacewar! (1961) rodado no computador PDP-1 ........................13 Figura 3 Magnavox Odyssey, o primeiro console domstico ......................13 Figura 4 Evoluo de grficos do personagem Mario da Nintendo. ............14 Figura 5 Jogo Black & White utiliza RNA para aprendizagem dos NPCs....19 Figura 6 Jogo Doom....................................................................................23 Figura 7 Jogo Monkey Island ......................................................................24 Figura 8 Jogo Championship Manager 2008...............................................24 Figura 9 Jogo Civilization III ........................................................................25 Figura 10 Jogo Neverwinter Nights 2 ..........................................................26 Figura 11 Jogo World of Warcraft................................................................27 Figura 12 Camadas do XNA Framework.....................................................30 Figura 13 Rascunho da interface do jogo....................................................33 Figura 14 Tela do jogo O ltimo Sobrevivente .........................................35 Figura 15 MEF da tomada de deciso de um NPC .....................................37 Figura 16 Fluxograma de funcionamento do AE .........................................38 Figura 17 Exemplo de cromossomo. Cada clula representa um alelo ......39 Figura 18 Exemplo de crossover.................................................................41 Figura 19 Exemplo de mutao...................................................................42 Figura 20 Evoluo do experimento 1, Mdia Mvel Aptido / Gerao.....43 Figura 21 Evoluo do experimento 2, Mdia Mvel Aptido / Gerao.....44 Figura 22 Agrupamento formado pelos NPCs.............................................45

LISTA DE TABELAS Tabela 1 Linha de tempo da IA em jogos ....................................................18 Tabela 2 Exemplo de entradas e suas respectivas sadas..........................36 Tabela 3 Exemplo de populao onde cada indivduo um NPC...............40

LISTA DE ABREVIATURAS E SIGLAS AE AG API C# CE CG EE IA IDE MEF MMOG NPC PE RNA RPG RTS SDK UML XNA Algoritmo Evolutivo Algoritmo Gentico Application Programming Interface C Sharp, linguagem de programao Computao Evolutiva Computao Grfica Estratgia Evolucionria Inteligncia Artificial Integrated Development Environment Mquina de Estado Finito Massively Multiplayer Online Game Non-Player Character, personagem no controlado pelo jogador Programao Evolucionria Redes Neurais Artificiais Role Playing Game, jogo de interpretaes de papis Real Time Strategy, jogo de estratgia em tempo real Software Development Kit Unified Modeling Language XNA`s Not Acronymed

Sumrio 1 Introduo ...................................................................................................12 1.1 Apresentao dos orientadores................................................................15 1.2 Objetivos ..................................................................................................16 1.3 Objetivos especficos ...............................................................................16 2 Reviso bibliogrfica ...................................................................................16 2.1 Inteligncia Artificial..................................................................................17 2.1.1 Padres de movimento..........................................................................19 2.1.2 Mquina de Estado Finito......................................................................20 2.1.3 Redes Neurais Artificiais .......................................................................20 2.1.4 Scripting ................................................................................................21 2.2 Computao Evolutiva .............................................................................21 2.3 Gneros de Jogos ....................................................................................22 2.3.1 Jogos de Ao.......................................................................................23 2.3.2 Jogos de Aventura ................................................................................23 2.3.3 Jogos Esportivos ...................................................................................24 2.3.4 Jogos de Estatgia ................................................................................25 2.3.5 Role-Playing Game (RPG) ....................................................................25 2.3.6 Jogos Massivos de Mundo Persistente (MMOG) ..................................26 2.4 Trabalhos relacionados ............................................................................27 3 Atividades Realizadas .................................................................................29 3.1 Recursos necessrios ..............................................................................29 3.2 XNA ..........................................................................................................29 3.2.1 Camadas do XNA..................................................................................30 3.2.2 Requisitos do sistema para desenvolver o jogo ....................................31 3.3 O Projeto do jogo .....................................................................................32

13

3.3.1 A idia e o rascunho do jogo .................................................................32 3.3.2 A interface .............................................................................................33 3.3.3 O Jogo...................................................................................................34 4 O Algoritmo Evolutivo do Jogo ....................................................................38 4.1 Cromossomos ..........................................................................................39 4.2 Populao ................................................................................................39 4.3 Funo de Pontuao ..............................................................................40 4.4 Mtodo de seleo ...................................................................................40 4.5 Crossover .................................................................................................41 4.6 Mutao....................................................................................................42 5 Resultados ..................................................................................................42 6 Concluses..................................................................................................45 6.1 Dificuldades e Limitaes.........................................................................46 6.2 Trabalhos Futuros ....................................................................................47 7 Referncias bibliogrficas ...........................................................................48 8 Bibliografia...................................................................................................51 ANEXOS ........................................................................................................53

12

1 Introduo As primeiras tentativas de se criar um jogo eletrnico segundo Kent (2001), foi em 1958 no Brookhaven National Laboratories em Nova Iorque, pelo fsico Willy Higinbotham. O Tennis for Two (Figura 1) era exibido em um osciloscpio e processado por um computador analgico. Willy morreu no dia 10 de Novembro de 1995, porm ele no lembrado por inventar o primeiro jogo eletrnico, e sim por ter contribudo com a criao da primeira bomba atmica que destruiu as cidades de Hiroshima e Nagasaki durante a segunda guerra mundial.

Figura 1 Tennis for Two (1958) rodado na tela de um osciloscpio

Mas para muitos adoradores de jogos clssicos, o primeiro jogo eletrnico chama-se Spacewar! (Figura 2), desenvolvido por Steve Russel em 1961 durante a sua graduao no MIT (Massachussets Institute of Technology) (DEMARIA, 2004). Spacewar um jogo no qual dois jogadores se envolvem em uma batalha espacial e tentam derrotar o oponente com torpedos e, ao mesmo tempo, evitar uma representao do sol que fica no centro da tela. Uma das pessoas que tinha contato com o jogo era o engenheiro Ralph H. Bear que em 1971 fecha contrato com a

13

Magnavox e lana em 1972 o primeiro console domstico, o Magnavox Odyssey (Figura 3).

Figura 2 Spacewar! (1961) rodado no computador PDP-1

Figura 3 Magnavox Odyssey, o primeiro console domstico

A indstria de jogos procurou tornar os jogos mais realistas, para atrair novos jogadores e aumentar o faturamento. Desde ento, a criao de jogos evoluiu, e os jogos eletrnicos comearam a chegar a um nvel impensvel de realidade nos ltimos 20 anos. Um exemplo de evoluo dos grficos pode ser visto na figura 4.

14

Figura 4 Evoluo de grficos do personagem Mario da Nintendo.

Em 2003 a indstria de jogos superou a indstria do cinema, movimentando US$ 28 bilhes no mundo inteiro. Esse grande movimento de dinheiro por causa da melhoria de grficos, que implica em melhoria de componentes de hardware, melhoria dos enredos, em jogabilidades, entre outros. A indstria de jogos eletrnicos no Brasil responsvel por 0,16% do faturamento mundial. Este ano, a produo de games no Brasil deve movimentar 87,5 milhes de reais, um crescimento de 16,6% em relao ao faturamento de 76,5 milhes de reais verificado em 2007, revela o mais novo levantamento da Abragames (Associao Brasileira das Desenvolvedoras de jogos Eletrnicos). Desenvolver jogos uma atividade multidisciplinar na rea da computao, dentre as matrias envolvidas esto: projeto, programao, desenho, msica, efeitos sonoros, hardware, redes, inteligncia artificial, matemtica e fsica. Em funo da diversidade de matrias envolvidas, os jogos se mostram um bom ambiente para a pesquisa de novas tecnologias para estas reas da computao. Inicialmente os fabricantes de jogos tm concentrado grandes esforos ao realismo da ambientao grfica. No entanto, autores como Sweetser (2002) dizem que o prximo foco a ser desenvolvido no mercado de jogos ser com personagens que se

15

comportam de forma realista e podem aprender a se adaptar, ao invs de personagens mais visivelmente reais (CROCOMO, 2006). Tais informaes esto sendo reforadas devido ao aumento do investimento das empresas em jogos com qualidade em sua inteligncia artificial. Dentre as diversas tcnicas envolvidas em IA, os Algoritmos Evolutivos (AE) tm sido bastante utilizados para evoluir comportamentos e estratgias de jogos desde os anos 80. Porm, a tcnica encontra resistncia em ser utilizada pelos desenvolvedores de jogos, pois autores como Spronk (2004) afirmam que esta tcnica (assim como a tcnica de Redes Neurais Artificiais) permite a obteno de comportamentos no aceitveis durante o processo de aprendizado dos

personagens se aplicada de maneira errada (CROCOMO, 2006). Alguns trabalhos realizados por: Crocomo (2006), Crocomo (2008) e Demasi (2004) j conseguiram, com sucesso, utilizar AEs para gerar estratgias pelos personagens no controlados pelo jogador (NPCs Non-Player Characters). O presente trabalho procura contribuir com a aplicao dos AEs no aprendizado dos NPCs de um jogo, onde existem poucos trabalhos encontrados at o momento.

1.1 Apresentao dos orientadores Os dois orientadores deste projeto, os professores Ana Estela A. Silva e Marcio K. Crocomo tiveram papis importantes para a concluso deste trabalho, e foram escolhidos pela capacidade profissional, conhecimento e interesses nas reas de Inteligncia Artificial e Jogos. A professora Ana Estela Antunes da Silva doutora em Engenharia da Computao pela UNICAMP (Universidade Estadual de Campinas), mestre em Cincia da Computao na Massey University, graduada em Cincia da Computao na UNICAMP. Atualmente professora do Programa de Mestrado em Cincia da

16

Computao na UNIMEP (Universidade Metodista de Piracicaba) e professora na EEP (Escola de Engenharia de Piracicaba). Marcio Kassouf Crocomo mestre em Cincia da Computao e Matemtica Computacional pela USP So Carlos (Universidade de So Paulo), graduado em Cincia da Computao a USP So Carlos e desde 2007 ministra aulas de Desenvolvimento de Jogos para Computador e Processamento de Imagens na UNIMEP. Tem diversos artigos publicados, sendo dois deles na SBGames (Simpsio Brasileiro de Jogos e Entretenimento Digital) no ano de 2005 e 2007.

1.2 Objetivos O objetivo deste trabalho consiste em desenvolver um algoritmo evolutivo (AE) que seja responsvel pelas estratgias dos NPCs em um jogo de ao. Desta forma, este AE dever propor desafios diferentes ao jogador a cada novo jogo, aumentando a atratividade e jogabilidade do software.

1.3 Objetivos especficos Para viabilizar o desenvolvimento do trabalho proposto, alguns objetivos especficos foram realizados: estudar e aprender a linguagem C# e o framework XNA para o desenvolvimento do jogo; desenvolvimento de um AE adequado ao jogo, capaz de produzir solues adaptativas para o problema; modelagem e programao de um jogo que mostre um bom ambiente para os testes do AE; verificar a adaptao dos personagens colhendo e analisando os resultados.

2 Reviso bibliogrfica Para o desenvolvimento deste trabalho, foram realizado estudos nos seguintes tpicos: Inteligncia Artificial e Algoritmos Evolutivos. Tais tpicos so explicados

17

nas subsees seguintes. Ainda neste tpico comentado um pouco sobre os gneros de jogos e alguns trabalhos relacionados so explicados.

2.1 Inteligncia Artificial Segundo Bourg e Seemann (2004), mais apropriado pensar que IA o comportamento inteligente demonstrado pela mquina que foi criada, ou talvez o crebro artificial por trs daquele comportamento inteligente. Os trabalhos em torno da IA comearam logo a aps a Segunda Guerra Mundial, e o prprio nome foi cunhado em 1956 (RUSSEL e NORVIG, 2004). Para aqueles que desenvolvem jogos eletrnicos, a IA estudada no meio acadmico diferente da IA aplicada nos jogos (SCHAWAB, 2004). Segundo kishimoto (2004), a principal diferena entre as duas o objetivo de busca de cada uma. A IA no meio acadmico, busca resolver problemas complexos como, reconhecimento de sinais e imagens, entender e construir agentes (SCHAWAB, 2004). Nos jogos de entretenimento o objetivo da IA a diverso, mas para jogos srios os objetivos so os mesmo da IA acadmica. A importncia da IA nos jogos quanto aos resultados que o sistema ir gerar, e no como o sistema chega at os resultados. Isso se deve pelo fato que jogos eletrnicos so negcios, sendo assim, os consumidores os compram em busca de diverso, e no pensando na maneira como a inteligncia de um personagem do jogo foi criada, desde que ela transforme o jogo divertido e desafiador, alm de tomar decises coerentes com o contexto do jogo (TOZOUR, 2002) (SCHWAB, 2004) (KISHIMOTO, 2004). Segundo Perucia (2005) IA um dos recursos que so muito utilizados nos jogos eletrnicos. No qual, diversos elementos do jogo exibem, de uma forma ou de outra, certo nvel de inteligncia e o grande objetivo de seu uso, desafiar o jogador.

18

No comeo da histria dos jogos eletrnicos, a programao de IA era mais usualmente conhecida por programao de jogabilidades, pois no havia nada de inteligente sobre os comportamentos exibidos pelos NPCs (SCHAWAB, 2004). A tabela 1 contm alguns exemplos de como a IA foi utilizada nos jogos com o passar do tempo.

Tabela 1 Linha de tempo da IA em jogos

Ano 1962 1972 1974 1975 1978 1980 1990 1993 1996 1998

Descrio Primeiro jogo de computador, Spacewar, para 2 jogadores. Lanamento do jogo Pong, para 2 jogadores. Jogadores tinham que atirar em alvos mveis em Pursuit e Qwak. Gun fight lanado, personagens com movimentos aleatrios Space Invaders contm inimigos com movimentos padronizados, mas tambm atiram contra o jogador. O jogo Pac-man conta com movimentos padronizado dos inimigos, porm cada fantasma (inimigo) tem uma personalidade sobre o mundo em que caa o jogador. O primeiro jogo de estratgia em tempo real, Herzong Wei, lanado. Junto, os jogadores puderam noticiar uma pssima busca de caminho. Doom lanado como primeiro jogo de tiro em primeira pessoa. BattleCruiser: 3000AD publicado como o primeiro jogo a utilizar redes neurais em um jogo comercial. Half-Life lanado e analisado como a melhor IA em jogos at a poca, porm, o jogo utiliza IA baseada em scripts.

IA utilizada Nenhuma Nenhuma Padres de Movimento Padres de Movimento Padres de Movimento Padres de Movimento Mquina de Estados Mquina de Estados Redes Neurais Mquina de Estados / Script Diversos

O jogo Black & White (figura 5) alvo da mdia a respeito de como as criaturas do jogo aprendem com as decises 2001 feitas pelo jogador. Utiliza redes neurais, reinforcement1 e observational learning2. Fonte: (Schwab, 2004).

Reinforcemente learning - aprendizagem por reforo (reinforcement learning) (Sutton e Barto, 1998) consiste, basicamente, em fazer um agente escolher suas aes se baseando apenas na interao com o ambiente
2

Observational learning - aprendizagem supervisionada consiste em dizer ao agente qual deveria ter sido a ao correta para cada estado.

19

Algumas tcnicas de IA utilizadas em jogos como: padres de movimento, MEF, RNA e Script, sero descritas nos subtpicos.

Figura 5 Jogo Black & White utiliza RNA para aprendizagem dos NPCs

2.1.1 Padres de movimento Os padres de movimento foram utilizados nos primeiros jogos eletrnicos da histria, e so compostos por movimentos aleatrios, algoritmos de perseguio e evaso. Movimentos aleatrios so implementados obtendo um valor aleatrio e incrementando a posio de um personagem com tal valor. O algoritmo de perseguio verifica a posio do adversrio que ele quer perseguir e avana em sua direo. O algoritmo de evaso faz o personagem se distanciar de um determinado personagem. Os padres de movimento simplesmente fazem com que um personagem se movimente em um determinado padro (LAMOTHE, 1999), porm era utilizado na poca pela falta de memria e a limitao existente na velocidade de processamento (SCHWAB, 2004).

20

2.1.2 Mquina de Estado Finito As mquinas de estado finito so compostas de um conjunto de estados predefinidos e um conjunto de regras que definem a transio entre os estados, geralmente os estados so alguma ao ou tipo de comportamento que o personagem deve executar e podem tambm apresentar algum evento a ser executado no ambiente do jogo (KARLSSON, 2005). Ainda segundo Karlsson (2005), a MEF uma tcnica bastante utilizada nos jogos, pois apresenta um timo custo/benefcio: rpida implementao, fcil depurao e baixa complexidade. As MEFs apresentam limitaes, pois seu mtodo de programao torna previsvel a estratgia utilizada pelo computador, j que, dada uma situao, a MEF sempre escolher a mesma ao (KARLSSON, 2005).

2.1.3 Redes Neurais Artificiais As redes neurais (RNs) so simulaes computacionais simplificadas do funcionamento do crebro humano. O conhecimento adquirido a partir do ambiente envolvente atravs de um processo de aprendizagem, e esse conhecimento armazenado nas redes. O primeiro modelo de RNs simulando mquinas foi introduzido por McCulloch e Pitts (1943). Hebb (1949) e Rosenblatt (1958) apresentam, respectivamente, o modelo bsico de rede de auto-organizao e o modelo Perceptron de aprendizado supervisionado. Hopfield (1982) descreve a utilizao de redes simtricas para otimizao e Rumelhart et all. (1986), o mtodo de treinamento backpropagation. Muitos desenvolvedores de jogos oferecem resistncia ao uso desta tcnica, devido ao fato da mesma permitir aprender algo estpido. Como se procura manter um certo grau de inteligncia aparente por parte dos NPCs, a soluo passa por fazer a aprendizagem durante o desenvolvimento do jogo (aprendizado off-line)

21

(YANNAKAKIS, 2005), para que esta possa ser aferida de acordo com as pretenses do jogo. Alguns exemplos de jogos que utilizam RNAs na execuo de vrias tarefas so BattleCruiser, Black & White e Creatures e Quake 2.

2.1.4 Scripting As linguagens de scripting so linguagens de programao que permitem ter o controle sobre o motor de um jogo, sem que esse controle tenha sido explicitamente includo no cdigo do motor. Desta forma possvel alterar as funcionalidades ou comportamento sem necessidades de recompilar o jogo. As linguagens de scripting so potentes e so muito utilizadas pelos desenvolvedores de jogos (PRECHELT, 2003). Grande parte dos jogos que utilizam linguagem de script tem como principal linguagem utilizada a Lua, devido ao seu tamanho e desempenho, fcil integrao e portabilidade. Lua utilizada por diversas empresas da indstria de jogos como: LucasArts, BioWare, Relic Entertainment, Absolute Studios e Monkeystone Games. (CELES et all., 2004). Utilizar uma linguagem de script no desenvolvimento de jogos traz vrios benefcios, ela pode ser usada para o desenvolvimento de um jogo inteiro, para definir objetos de um jogo, gerenciar algoritmos de I.A., controlar personagens, tratar eventos de entrada e montar a interface com o usurio (CELES et all., 2004). Exemplos de jogos que usam est tcnica so Baldur`s Gate e Neverwinter Nights.

2.2 Computao Evolutiva A Computao Evolutiva (CE) se inspira na teoria da evoluo natural das espcies de Charles Darwin (DARWIN, 1859) para o desenvolvimento de mtodos computacionais. Os algoritmos que pertencem a este campo da computao so

22

chamados de Algoritmos Evolutivos (AEs). Introduzidos por John Holland (WHITLEY, 1993) o algoritmo mais conhecido na CE o Algoritmo Gentico (AG) (BARRETO, 1996). O AG uma subdiviso do AE, onde tambm se encontra a Programao Evolucionria (PE) e a Estratgia Evolucionria (EE). Todos compartilham do mesmo princpio, que consiste na simulao da evoluo de estruturas individuais, atravs do processo de seleo e os Operadores Genticos (OG), tais como crossover (recombinao ou cruzamento) e mutao. Essas estruturas individuais so as possveis solues para o problema e so representadas sob a forma de indivduos de uma populao (cromossomo). Todo o processo depende de um grau de adaptao, ou seja, do fitness (aptido), do indivduo frente ao ambiente. A seleo, inspirada na seleo natural das espcies, diz que os indivduos mais aptos ou com melhor grau de adaptao ao meio, tero uma chance maior de repassar seu material gentico para as prximas geraes. Assim quanto maior o grau de adaptao de um indivduo, maiores as chances do material gentico deste estar presente na prxima gerao. Exemplos de jogos de computador que utilizam AEs so: Creatures; Cloak Dagger and DNA e Return to Fire II.

2.3 Gneros de Jogos Segundo Salen e Zimmerman (2004), Meigs (2003), Pedersen (2003) e Pereira (2006) os jogos eletrnicos podem ser agrupados segundo sua jogabilidade, seu propsito, seu contedo e at mesmo a faixa etria a quem se destina. Os principais gneros so: ao, aventura, esporte, estratgia, RPG e MMOG.

23

2.3.1 Jogos de Ao Os jogos de ao so aqueles nos quais o jogador deve responder com velocidade ao que est acontecendo, exigindo do usurio coordenao motora e reflexos rpidos. Jogos desse gnero buscam sempre ser rpidos e em tempo real. Este gnero possui uma grande galeria de jogos com tipos diferenciados como exemplo: Devil May Cry, Doom (figura 6) e Half Life.

Figura 6 Jogo Doom

2.3.2 Jogos de Aventura Os jogos de aventura so baseados em histrias, colocam o jogador no papel de protagonista, como se fosse uma novela digital, precisando ento resolver vrios quebra-cabeas para poder chegar ao final da trama. Os exemplos de maiores sucessos so Where in the world is Carmen Sandiego?, King`s Quest e Monkey Island (figura 7).

24

Figura 7 Jogo Monkey Island

2.3.3 Jogos Esportivos Os jogos de esportes representam os esportes individuais ou coletivos do mundo real. Esse gnero subdividido em dois grupos, o grupo que simula o esporte pelo lado do atleta praticando o esporte e o segundo que simula pelo lado do tcnico gerenciando sua equipe. Alguns jogos exemplos desse gnero so: FIFA 2008, NBA Live 2008 e Championship Manager 2008 (figura 8).

Figura 8 Jogo Championship Manager 2008

25

2.3.4 Jogos de Estatgia O gnero Estratgia est subdivido em dois grupos, sendo o primeiro baseado em turnos Turn-based e o segundo em tempo real Real Time Strategy RTS, ambos priorizando o raciocnio estratgico para alcanar a vitria. Em ambos estilos a inteligncia artificial utilizada tanto para a construo dos agentes como para o micro-gerenciamento das unidades no jogo. Exemplos de jogos deste gnero so: Civilization III (figura 9), Starcraft e OutLive3.

Figura 9 Jogo Civilization III

2.3.5 Role-Playing Game (RPG) Role-Playing Game (RPG), ou jogos de interpretaes de papis, geralmente colocam o jogador em um universo com uma histria no linear, onde o jogador pode dirigir ou no um grupo de personagens em alguma misso, com diversas criaturas controladas por inteligncia artificial e sistema de evoluo dos poderes e
3

OutLive um jogo brasileiro produzido pela Continuum Entertainmen, lanado em 2001. <http://www.continuum.com.br/principal.htm>, acessado em junho de 2008.

26

foras dos personagens at atingir um objetivo maior no final. Jogos de sucesso no gnero so: Final Fantasy, Neverwinter Nights 2 (figura 10) e Baldur`s Gate.

Figura 10 Jogo Neverwinter Nights 2

2.3.6 Jogos Massivos de Mundo Persistente (MMOG) Os jogos do gnero MMOGs - Massively Multiplayer Online Game permitem a participao de milhares de usurios interagindo simultaneamente entre si e com o ambiente virtual. Esse mundo virtual chamado de mundo persistente, o que significa que o mundo continua evoluindo independentemente de o usurio estar ou no conectado. Esses tipos de jogos possuem alta tecnologia em balanceamento de carga, protocolo de comunicao de rede e inteligncia artificial. Os MMOG podem ser de qualquer outro gnero de jogo j citado como ao, estratgia, esporte, RPG e outros. So exemplos de jogos MMOG: Ultima Online, World of Warcraft (figura 11) e Taikodom 4.

Taikodom um jogo brasileiro produzido pela Hoplon, lanado em 2008. <http://www.taikodom.com.br/>, acessado em junho de 2008.

27

Figura 11 Jogo World of Warcraft

2.4 Trabalhos relacionados Em um trabalho de graduao desenvolvido no Instituto de Cincias e Matemtica Computacional (ICMC-USP), Crocomo utiliza Algoritmos Evolutivos para criar um jogo adaptativo, no qual o comportamento dos agentes controlados pelo computador se adapta de acordo com as estratgias utilizadas pelo jogador (CROCOMO, 2006). Crocomo neste trabalho testa vrios AEs, com o objetivo de encontrar uma configurao capaz de adaptar as estratgias do computador ao estilo do jogador. Neste trabalho Crocomo cita que alguns autores chegam a afirmar que AEs no so umas alternativas viveis para esse tipo de aplicao por no cumprirem o requisito de eficincia. Contrariando essas afirmaes, o software que Crocomo produziu resultou num jogo em que os personagens controlados pelo computador oferecem um grau de adaptabilidade s aes do jogador devido ao AE implementado. Alm disso, ele continua dizendo que foi possvel observar o surgimento de estratgias originais muito eficientes utilizadas pelo computador que superaram as expectativas dos desenvolvedores.

28

Crocomo em seu mestrado da continuidade em sua pesquisa, e tenta verificar a possibilidade de aplicar Algoritmo Evolutivos no aprendizado on-line de jogos (CROCOMO, 2008). Crocomo neste trabalho contesta a veracidade da afirmao de alguns autores que afirmam que os Algoritmos Evolutivos no so aplicveis na pratica para atingir o objetivo em questo. Sendo assim foi desenvolvido um jogo de computador, no qual o algoritmo de aprendizagem gera estratgias inteligentes para os NPCs atravs de um algoritmo evolutivo. Desta forma, a funo do algoritmo evolutivo fazer com que a estratgia adotada pelo computador se adapte a estratgia utilizada pelo usurio a cada vez que joga. No trabalho Crocomo apresenta uma reviso bibliogrfica a respeito da Computao Evolutiva e suas vantagens e desvantagens, alm das aplicaes. So tambm explicados o jogo e os algoritmos implementados, assim como os experimentos realizados e seus resultados. No final Crocomo faz uma comparao entre o algoritmo evolutivo e a tcnica de Dynamic Scripting. Cruz e Demasi apresentam um mtodo de evoluo em tempo real de agentes em jogos eletrnicos de ao, baseado em algoritmos genticos (CRUZ e DEMASI, 2003). A idia de seu trabalho de fazer os agentes dentro de um jogo evolurem de acordo com determinados objetivos at atingirem um certo patamar, a partir do qual evoluem livremente de acordo com o adversrio. O objetivo do mtodo proposto por Cruz e Demasi de permitir que haja uma evoluo suave da capacidade dos agentes de acordo com o adversrio, fazendo assim, com que o nvel de dificuldade do jogo cresa na mesma proporo em que o jogador humano melhora seu desempenho. Para Cruz e Demasi testar o mtodo foi desenvolvido um jogo chamado Olhos Assassinos, no qual, o jogador controla um aventureiro que dispe de uma arma com tiros limitados, mas recarregveis que deve se proteger contra os olhos que

29

tentam mata-lo. Os resultados do projeto foram bastante animadores. Baseados em tempos de perda de vida do jogador e diferenas entre esses tempo, pode-se notar uma tendncia ao longo do tempo de ter uma evoluo bem distribuda. O mtodo ento apresentado apesar de ter resultados bastante animadores e de ampla gama de possibilidades de seu uso, o mtodo apresentou algumas desvantagens, a principal delas, foi o risco de a evoluo dos agentes sair completamente do previsto em relao ao prximo indivduo objetivo.

3 Atividades Realizadas Durante o projeto de graduao, foi criado um jogo para testar o AE desenvolvido. Este AE tem por objetivo adaptar as estratgias dos NPCs. Desta forma espera-se obter desafios diferentes a cada nova partida.

3.1 Recursos necessrios O projeto foi construdo utilizando a linguagem C#, o Ambiente Integrado de Desenvolvimento Microsoft Visual C# Express Edition 2005 (Integrated Development Environment IDE), XNA Game Stdio Express 2.0 que um framework desenvolvido pela Microsoft. Ferramentas como GIMP e Inkscape para computao grfica e na edio do som o software Audacity. Os diagramas foram feitos utilizando o StarUML. Todos os softwares utilizados so gratuitos, no deixando a desejar de suas funcionalidades.

3.2 XNA O Microsoft XNA (XNA`s Not Anacronymed) uma plataforma de desenvolvimento, desenvolvida pela Microsoft para auxiliar os programadores de jogos tanto para Windows quanto Xbox 360. Por ser uma plataforma de desenvolvimento, ela possui

30

uma srie de componentes que auxiliam durante o projeto. Ela possui o XNA Game Studio que uma IDE de desenvolvimento que utiliza a linguagem C#. Lanado em 2006, atualmente se encontra na verso 3.0, porm por motivos do projeto ter iniciado com a verso 2.0 a mesma foi mantida at o final. O XNA possui uma rica API para criao de jogos 3D assim como jogos 2D, alm de permitir a manipulao de som e entrada de dados como teclado, mouse e joystick (Xbox 360). O Microsoft XNA incorpora as funcionalidades do DirectX, sendo assim os recursos do DirectX esto presentes no XNA mas de uma maneira mais fcil e rpida de serem utilizados. O XNA uma iniciativa da Microsoft para facilitar ao mximo o desenvolvimento de jogos, onde ela leva ao desenvolvedor entusiasta e at mesmo a outros tipos de desenvolvedores como os profissionais, a praticidade na criao dos jogos.

3.2.1 Camadas do XNA As camadas do XNA Framework so mostradas na figura 12.

Figura 12 Camadas do XNA Framework

Plataforma: (Direct3D, XACT, XInput, e XContent) a base do XNA, API`s de baixo nvel.

31

Framework (ncleo): (Graphics, Audio, Input, Math e Storage) o ncleo do framework e prov de funcionalidades que vm da base de grficos, entrada de dados, funes matemticas e armazenamento. Framework (extenso): a camada que faz com que o XNA se torne uma ferramenta prtica para o desenvolvimento de jogos e aplicaes que utilizam DirectX. Modelo de aplicao: responsvel pelo trabalho maante, como criao e gerenciamento de janelas, game looping e funes do DirectX. Content Pipeline: responsvel por processar os dados do jogo como texturas, carregamento de objetos (modelos 3D), som e entrada de dados. Jogos: Starter Kits: so kits iniciais que foram desenvolvidos para auxiliar os desenvolvedores a entender a tecnologia XNA. Cdigo: no nativo, o programador do jogo que o desenvolve. Contedo: formado pelas comunidades, fruns e todos aqueles que contribuem para o melhoramento do framework. Componente: so cdigos criados por terceiros, mas que podem ser includos nos jogos at mesmo para minimizar o processo de codificao.

3.2.2 Requisitos do sistema para desenvolver o jogo Os requisitos necessrios para desenvolver jogos com XNA na plataforma Windows so: Windows XP SP2 ou Windows Vista. Visual C# 2005 Express Edition (com SP1 Service Pack 1) Runtime do DirectX

32

Placa de video comptivel com Direct3D 9.0 e Shader Model 1.1 (recomendado Shader Model 2.0)

Runtime do XNA e do DirectX

3.3 O Projeto do jogo O jogo implementado (O ltimo sobrevivente) para este projeto tem como objetivo servir de ambiente de teste para o AE desenvolvido. Neste jogo o jogador responsvel pelo controle de um nico personagem, contra quatro NPCs. O ltimo Sobrevivente segue o gnero ao, onde o jogador deve responder com velocidade o que est acontecendo na batalha para no ser surpreendido pelos NPCs e perder.

3.3.1 A idia e o rascunho do jogo O desenvolvimento da idia do jogo produzido neste trabalho surgiu na primeira reunio realizada. Nesta reunio alm de ter sido tratado o funcionamento do AE, nela tambm foi discutida as idias do jogo, como: qual o objetivo do jogo, o que o jogador ter de fazer, como ele vai interagir como o personagem e outras. Todas essas idias da reunio se transformaro no rascunho (figura 13). Segundo Perucia (2005) o processo de rascunhos do projeto em papel muito vantajoso, pois por meio dele, pode-se visualizar melhor como ser o produto final.

33

Figura 13 Rascunho da interface do jogo

3.3.2 A interface A tela do jogo do tamanho 800x600 pixels e nela so identificados os seguintes componentes: Arena: a rea onde o jogo se passa. Essa rea esta localizada no canto esquerdo e possui as dimenses de 570x600 pixels e onde ocorrem as batalhas entre os NPCs e o personagem do jogador. Circulo: identifica o personagem do jogador. Cavaleiro negro: personagem controlado pelo jogador. Cavaleiro vermelho: personagem controlado pelo computador. Barra de energia: a barra de energia representa em forma percentual a quantidade de energia que aquele personagem tem. Os NPCs e jogador tm no mximo 4, esses valores foram escolhidos aps vrios testes, afim de, obter um jogo mais equilibrado. Tempo: o tempo decorrido daquela batalha.

34

Batalha: indica quantas geraes as NPCs tiveram para evoluir. Se for a primeira batalha ento todos os NPCs tem seu cromossomo iniciados aleatoriamente. Conforme aumenta o nmero de batalhas, os NPCs tendem a evoluir e dificultar o jogo.

Vitrias: o nmero de vitrias que o jogador ganhou at a batalha atual. O jogador obtm uma vitria quando o nico personagem sobrevivente.

Derrotas: o nmero de derrotas at a batalha atual. O jogador derrotado quando sua energia acaba e ainda existem outros personagens vivos.

3.3.3 O Jogo O jogo se passa em uma arena de batalha, no qual existem quatro NPCs (cavaleiros vermelhos) e um jogador (cavaleiro negro). Cada NPC possui quatro vidas e um nico equipamento que composto por uma espada. A espada possui um dano padro, retirando somente uma vida do personagem que recebe o ataque. O jogador controla o cavaleiro negro que dispe de quatro vidas e uma espada. O cavaleiro negro deve se proteger contra os cavaleiros vermelhos que tentaram matlo. Os personagens podem andar em oito direes, estando limitado, somente a dimenso da arena (570x600 pixels). O objetivo do jogador tentar permanecer vivo e acabar com os NPCs. A figura 14 mostra um quadro do jogo desenvolvido para este trabalho5.
5

Sprites utilizados no jogo extrados de http://reinertileset.4players.de/. Acessado em abril de 2008.

35

Figura 14 Tela do jogo O ltimo Sobrevivente

Cada um dos NPCs possui as aes que so determinadas pelas duas primeiras colunas da Tabela 2. Essas aes representam uma possvel abstrao de um NPC. Na primeira coluna representado o nvel de energia que pode variar de 0 a 3 (0 = 1 vida, 1 = 2 vidas e 2 = 3 vidas). A segunda coluna representa a quantidade de amigos que est dentro do campo de percepo daquele NPC (o campo de percepo tem raio de 150 pixels dentro da arena). Para cada situao, existe uma nica sada (coluna 3) e essa sada pode ser o valor 0 no qual, o personagem fugira do jogador quando o ver. Esse valor pode ser 1, ento o personagem caminhara em direo do amigo mais prximo. Mas quando o valor de sada for 2, o NPC ira procurar e perseguir o jogador desviando dos obstculos para atac-lo. Ento os

36

NPCs com base na energia e quantidade de amigos que pode ver, assumem assim uma determinada ao.

Tabela 2 Exemplo de entradas e suas respectivas sadas.

Vida 0 0 0 0 1 1 1 1 2 2 2 2

Amigos 0 1 2 3 0 1 2 3 0 1 2 3

Cromossomo (Sada) 2 1 2 2 0 0 1 0 2 1 2 1

Essas entradas e sadas tambm podem ser representadas por uma MEF, onde a abstrao ocorre quando o personagem se encontra em alerta, as transies dos estados so as entradas da abstrao e as sadas so os estados de 1 a 12 que representao respectivamente uma linha de cada possvel ao da tabela 2. Uma representao dessas MEF pode ser visto na figura 15.

37

Figura 15 MEF da tomada de deciso de um NPC

Para cada ao que o individuo tomar, ser executado um padro de movimento. Estes padres de movimentos foram usados para facilitar a programao do jogo. Um dos padres de movimentos definidos foi o de caminhar at um determinado personagem. Mas para no ter um movimento linear ao caminhar em direo de um personagem, foi mantida uma aleatoriedade de movimentos com a funo random. Quando o NPC andar este no s anda em direo do personagem definido como pode andar para outros lados. Para cada ao de caminhar tomada pelo indivduo, este pode se mover 6 pixels se andar nas direes verticais e horizontais (norte, sul, leste e oeste) ou 5 pixels se ele andar nas diagonais (nordeste, noroeste, sudeste e sudoeste).

38

4 O Algoritmo Evolutivo do Jogo O AE proposto para o jogo tem como cromossomos as estratgias de uma populao composto por 4 guerreiros. O funcionamento do AE consiste em 5 etapas bsicas: gerao da populao aleatoriamente, testes dos indivduos no ambiente, seleo do indivduo mais bem adaptado, aplicao dos operadores genticos (crossover e mutao), gerao de uma nova populao. Este funcionamento pode ser visto no fluxograma da figura 13.

Inicio do Jogo (batalha = 0)

Populao gerada aleatoriamente

Inicio da batalha (tempo = 0)

Populao testada no ambiente

Nova populao (batalha ++)

Fim da batalha

Aplica-se Mutao

Aplica-se Crossover

Seleo do pai

Figura 16 Fluxograma de funcionamento do AE

O AE utilizado tem como objetivo adaptar os parmetros da coluna mais a direita da tabela 2 de cada NPC que forma a populao. Esse conjunto de parmetro o cromossomo de cada indivduo. Inicialmente, tais parmetros so iniciados aleatoriamente aps comear o jogo, onde o nmero da batalha zero. A populao

39

ento testada no ambiente do jogo, e o membro mais bem adaptado no final da batalha ento selecionado para se tornar o pai da prxima gerao. So aplicadas em seguida, as funes de crossover e mutao para produzir a prxima gerao.

4.1 Cromossomos O cromossomo uma estrutura de dados que representa uma possvel soluo para um problema. Os cromossomos do jogo (Figura 14) a serem evoludos sero representados como um vetor numrico, sendo que cada clula (alelo) pode ser composta de valores variando de 0 a 2. Essa estrutura tem 3 (531.441) possibilidades de estratgias para cada NPC.

0 2 1 0 0 1 2 2 0 1 0 1
Figura 17 Exemplo de cromossomo. Cada clula representa um alelo

4.2 Populao O conceito de populao aplica-se a um grupo de indivduos. Cada indivduo dentro da populao representado por um cromossomo, e cada cromossomo detentor de uma possvel soluo para o mesmo problema, sendo na maioria das vezes diferentes entre si. Pode-se chamar de gerao cada nova populao produzida nas iteraes do algoritmo. Um exemplo de uma possvel populao representado na tabela 2.

40 Tabela 3 Exemplo de populao onde cada indivduo um NPC

Populao Indivduo 1 Indivduo 2 Indivduo 3 Indivduo 4


4.3 Funo de Pontuao

Cromossomo 021002010001 010202210101 000000000000 112110111111

Aptido 20 12 5 11

Cada soluo avaliada por uma funo de pontuao no decorrer do jogo, recebendo uma nota (fitness score) que indica o quo eficaz a soluo (TOMASSINI, 1995). Os NPCs no jogo so recompensados com 5 pontos para cada ataque realizado com sucesso e 2 pontos a cada 10 segundo que permanea vivo na partida. Porm, para encontrar uma boa soluo necessrio punir certas aes, e para cada ataque que o NPC receber do jogador ele punido com 3 pontos de sua nota. Essas pontuaes foram reguladas empiricamente aps alguns jogos, afim de, deixar o jogo mais dinmico.

4.4 Mtodo de seleo O Mtodo de seleo responsvel por selecionar os indivduos mais aptos para o cruzamento. o jogo proposto foi utilizado o mtodo de elitismo, j que o elitismo pode aumentar rapidamente o desempenho do AE, porque previne a perda da melhor soluo j encontrada. Sendo assim o AE pode convergir mais rapidamente, o que ideal para o jogo, j que o mesmo possui um grande nmero de solues e uma pequena populao. A idia do elitismo copiar os melhores cromossomos (no jogo s copia o melhor) para a nova populao. O resto da populao submetido aos operadores

41

genticos (crossover e mutao). Sendo assim a melhor soluo escolhida para gerar descendentes.

4.5 Crossover O operador de recombinao ou reproduo (crossover) permite combinar dois ou mais cromossomos de uma mesma populao para formar descendentes similares. Esse operador pode ser aplicado de diversas maneiras e com certa probabilidade de ocorrncia, denominada probabilidade de recombinao. O crossover no jogo, assim como em qualquer outro problema aplicado logo aps o indivduo mais bem adaptado ser escolhido. Esse indivduo torna-se o pai da populao e todos os outros que no foram escolhidos sero as mes. Cada valor dos cromossomos das mes tem 50% de probabilidade de recombinao. Exemplo: se a posio 1 do vetor da me possui valor 0 e no pai a mesma posio possui valor 2, o novo cromossomo (filho) possui 50% de chance de possuir esse mesmo parmetro como o valor 0 e 50% de chance com o valor 2. Outro exemplo de crossover pode ser visto na figura 15.

Figura 18 Exemplo de crossover

42

4.6 Mutao O operador de mutao necessrio para a introduo e manuteno da diversidade gentica da populao, alterando arbitrariamente um ou mais componentes de um indivduo. Exemplo: quando este operador aplicado, cada alelo possui 5% de chance de ser substitudo por um novo valor. No caso do valor original ser 0 ou 1, o novo valor ser 2. Se o valor original 2, o novo valor ter 50% de probabilidade de ser 1, caso contrrio, ser 0. Outro exemplo de mutao pode ser visto na figura 16.

Figura 19 Exemplo de mutao

O operador de mutao permite ao AE explorar novas possibilidades e pode impedir os NPCs de ficarem presos em uma soluo local. A taxa de mutao est relacionada com o grau de liberdade do algoritmo. Quando se aumenta a probabilidade de mutao, aumenta-se a liberdade do algoritmo para buscar novas solues na regio de domnio do parmetro. Entretanto, o AE poder levar mais tempo para convergir, ou at mesmo no chegar a nenhum resultado, uma vez que a mutao tambm pode gerar comportamentos no desejados pelos NPCs.

5 Resultados Neste trabalho foi desenvolvido um algoritmo evolutivo para a adaptao das estratgias dos NPCs do jogo O ltimo Sobrevivente, construdo tambm neste

43

projeto. O AE utilizado apresentou uma adaptao bem interessante, tendendo a ter uma evoluo de forma bem distribuda ao longo do tempo e de acordo com o prprio desempenho do jogador. Foram realizados dois jogos com 80 partidas por motivo de tempo. O sistema automtico de coleta de dados implementado permite que, aps cada partida, o fitness de cada personagem seja armazenado. Com isso pode-se obter grficos referente aquele jogo, podendo visualizar a adaptao dos NPCs, sendo assim, cada linha do grfico referente a um indivduo daquela populao. Com o primeiro experimento demonstrado no grfico da figura 20, foi possvel notar que a populao comeou conseguindo altos valores de aptido sendo assim, o jogo foi mais demorado e o mesmo deu mais desafio ao jogador. Com o passar dos jogos o usurio comeou a perceber como os NPCs esto jogando e passou a ganhar dos mesmos. Porm logo o mesmo aconteceu com os NPCs, e voltaram a ganhar do jogador.

Figura 20 Evoluo do experimento 1, Mdia Mvel Aptido / Gerao

44

Em um segundo experimento, obteve um jogo mais desafiador. Os NPCs aprendiam de maneira rpida a estratgia do jogador, assim como, o jogador aprendia de maneira rpida a estratgia nos NPCs. Sendo assim o jogo permaneceu em equilbrio, aumentando a atratividade do jogo. O grfico que representa este jogo pode ser visto na figura 21.

Figura 21 Evoluo do experimento 2, Mdia Mvel Aptido / Gerao

Embora o primeiro experimento tenha resultado em um maior nmero de vitrias para o jogador (31 vitrias e 52 derrotas), essas vitrias foram consecutivas, isso est bem refletido no grfico da figura 20, no qual o nvel de aptido diminui de maneira suave e aumenta novamente de maneira suave. J no segundo experimento, o jogador teve uma quantidade menor de vitrias (26 vitrias e 54 derrotas), porm elas foram distribudas de maneira uniforme, sendo assim o jogo obteve um maior nvel de disputa entre o jogador e os NPCs, aumentando a diverso do jogo. O desafio ao jogador surgiu da adaptatividade dos NPCs proporcionada pelo AE.

45

O objetivo do trabalho era adaptar as estratgias dos NPCs, de maneira a tornar o jogo mais desafiador ao jogador. Uma das estratgias desenvolvidas pelos personagens no controlados pelo jogador foi a formao de enxames. Alm dos comportamentos de fuga e perseguio do jogador, os NPCs apresentaram em algumas ocasies comportamentos de agrupamento em enxames, resultantes da perseguio de algum amigo. Esse comportamento pode ser visto na figura 22.

Figura 22 Agrupamento formado pelos NPCs

Outros resultados obtidos com este projeto foram, as participaes com resumos no XVI CIC (XVI Congresso de Iniciao Cientifica da UFSCar) e no SIICUSP (Simpsio Internacional de Iniciao Cientifica da USP). Em seguida foi realizada uma entrevista para o Jornal de Piracicaba, matria que saiu no dia 12 de Outubro de 2008 e uma entrevista a TV Claret, exibida no dia 29 de Outubro no jornal do meio-dia da Cultura falando sobre o Algoritmo Evolutivo e o jogo desenvolvido.

6 Concluses O Algoritmo Evolutivo desenvolvido durante este projeto foi capaz de adaptar as estratgias dos personagens no controlados pelo jogador. Essas adaptaes podem ser constatadas nos jogos 1 e 2 realizados que apresentam evidncias da

46

adaptao das populaes evoludas pelo AE em resposta ao ambiente em que se encontram. Aplicaes como esta, podem ser possveis em uma variedade de jogos, como em jogos de ao, jogos de estratgia, em MMORPGs e outros. Dessa forma, no necessrio que o programador codifique todas as estratgias que sero utilizadas e sim esperar que a capacidade de gerar estratgias novas a cada jogo diferente renove o interesse despertado pelo mesmo em seus usurios. Ao utilizar o AE proposto neste projeto, busca-se aumentar o entretenimento, pois o mesmo adiciona novos desafios ao jogador e apresenta comportamentos diferentes para cada personagem evoludo com o objetivo de aumentar o interesse do usurio no jogo. Foi constatado que os nveis de dificuldade oferecidos pelas adaptaes das estratgias adotadas pelo computador foram bem equilibrados, tendendo a oferecer entretenimento. Esse entretenimento pode ser notado tambm durante as partidas de um jogo, ao invs de olhar somente os grficos. Esse projeto trouxe a oportunidade de aplicar conceitos aprendidos durante o curso de Cincia da Computao, e aprender muito sobre o estado da arte de Inteligncia Artificial aplicada no aprendizado em jogos de computador, e principalmente sobre o uso de Algoritmos Evolutivos em jogos.

6.1 Dificuldades e Limitaes Algumas dificuldades foram encontradas no desenvolvimento deste trabalho. Em primeiro lugar, deve-se destacar a necessidade de muitas horas de estudos que foram reservadas para o aprendizado da linguagem C#, da API XNA e dos estudos da computao evolucionria. Essas horas foram essenciais para o entendimento da programao orientada a objetos (POO), a fim de facilitar o desenvolvimento do jogo, porm o jogo no foi criado utilizando somente orientao a objetos, pois foram encontradas vrias

47

dificuldades em utilizar este paradigma. Outra parte do tempo foi reservada ao estudo das funcionalidades do XNA e sua arquitetura, sendo que o mesmo no teve 40% da potencialidade utilizada. Enfim uma boa parte foi reservada para o entendimento dos AEs e suas aplicaes em jogos. Outro problema enfrentado foi a necessidade de correo de bugs encontrados durante a programao do jogo O ltimo Sobrevivente, que desviava o esforo de trabalho do foco principal. Durante o projeto foi observado que existem grandes dificuldades em encontrar trabalhos que envolvem estudos de AEs em jogos, pois existem poucas pesquisas sobre esse assunto.

6.2 Trabalhos Futuros Como sugestes para a continuao deste trabalho, podem ser citadas: Avaliar melhor o AE implementado, procurando realizar testes para medir os comportamentos dos NPCs no jogo desenvolvido. Terminar o software deixando-o mais parecido com um jogo (apresentao, menu de opes, sons...). Implementar e comparar outras tcnicas de aprendizado no mesmo ambiente desenvolvido. Teste do AE produzido em outros gneros de jogos. Tentar encontrar AEs que se mostrem ainda mais eficientes que o deste trabalho. Gravar as informaes atuais de um jogo para no futuro continuar jogando o mesmo jogo, afim de, verificar o que acontece com a tcnica utilizada aps muitas horas de jogo. Melhorar o jogo implementado e expandir o mesmo, procurando obter novos cenrios com diferentes objetivos a serem cumpridos pelo jogador e at

48

mesmo uma histria para o jogo, propondo assim maior entretenimento aos jogadores. O software apresenta um total de 4558 linhas de cdigo, e o tempo utilizado para a programao e aprendizado foi de aproximadamente 500 horas.

7 Referncias bibliogrficas ABRAGAMES, http://www.abragames.org/, acessado em junho de 2008. AZEVEDO, E. et all. Desenvolvimento de jogos 3D e aplicaes em realidade virtual. Rio de janeiro: elseiver, 2005. BATTAIOLA, A. L. Jogos por computador: Histrico, Relevncia Tecnolgica, Tencncias e Tcnicas de Implementao. Anais da SBC 2000. Volume 2. Curitiba, 2000. BRAMLETT, M. F. Initialization, mutation and selection methods in genetic algorithms for function optimization, Proceedings of the Fourth International Conference on Genetic Algorithms, Sam Mateo, CA: Mongan Kaufmann, pp. 100107, 1991. BOURG, D. M.; SEEMAN, G. AI for Game developers. Cambridge: O`Reilly, 2004. CELES, W. et all. Linguagem Lua e suas Aplicaes em Jogos. Rio de Janeiro, 2004. CHAMPANDARD, A. J.; AI Game Development Synthetic Creatures with Learning and Reactive Behaviors. Indianapolis: New Riders, 2003. Continuum, http://www.continuum.com.br/principal.htm, acessado em junho de 2008. CROCOMO, M. K.; Desenvolvimento de um Jogo Adaptativo Utilizando um Algoritmo Evolutivo. 2006. 39 f. Dissertao (Graduao) Universidade de So Paulo Instituto de Cincias Matemtica de Computao (USP-ICMC), So Carlos, SP. CROCOMO, M, K.; Um Algoritmo Evolutivo para Aprendizado On-line em Jogos Eletrnicos. 2008. 95 f. Dissertao (Mestrado) Universidade de So Paulo Instituto de Cincias Matemtica de Computao (USP-ICMC), So Carlos, SP. CRUZ, A. J. O.; DEMASI, P., "Evoluo de Agentes em Tempo Real para Jogos Eletrnicos de Ao" , In:II Workshop de Jogos e Entretenimento Digital-Wjogos 2003, 2003, Salvador - Bahia, Proceedings of Wjogos 2003, 2003, v.1, p.1 - 10 DARWIN, C. The Origin of Species by Means of Natural Selection, Reading, UK, pp. 458, 1998. Reprint from the sixth edition 1872. ISBN 185958070.

49

DARWIN, C.; On the Origin of Species, 1st edition, Harward University Press, MA, 1859. DEMARIA, R.; WILSON, J. L.; Hign Score! The Illustrated History of Electronic Games, 2nd edition. Emeryville: McGraw-Hill/Osborne, 2004. DEMASI, P.; Estratgias Adaptativas e Evolutivas em Tempo Real para Jogos Eletrnicos. 2003. 175 f. Dissertao (Mestrado) Universidade Federal do Rio de Janeiro (UFRJ), Rio de Janeiro, RJ. DORIGO, M.; DI CARO, G.; Ant Colony Optimization: A New Meta-Heuristic, Preceedings of the Congresso n Evolutionary Computation, IEEE Press, vol. 2, pp. 1470-1477, Washington, DC, 1999. HEBB, D. O. The organization of behavior. Wiley, New York, 1949. HOLLAND, J. H.; Outline for a Logical Theory of Adaptive Systems, Journal of the Association for Computing Machinery. Vol. 3, pp. 297-314, 1962. HOPFIELD, J.; Neural Networks and Physical System with Emergent Collectives Computational Abilities. Proceedings of the National Academy of Science 79 (1982), 2554-2558. KARLSOON, B. F. F.; Um Middleware de Inteligncia Artificial para Jogos Eletrnicos. 2005. Dissertao (Mestrado) Pontifica Universidade Catlica do Rio de Janeiro, Rio de Janeiro, 2005. KENT, S. L.;The Ultimate History of Video Games: From Pong to Pokemon, the Story Behind the Craze That Touched Our Lives and Changed the World. New York: Three Rivers Press, 2001. KISHIMOTO, A.; Inteligncia Artificial em Jogos Eletrnicos. So Paulo, 2004. LAMOTHE, A. Tricks of the Windows Game Programming Gurus Fundamentals of 2D and 3D Game Programming. Indianapolis: Sams, 1999. MCCULLOCH, W. S. & PITTS, W.; A Logical Calculus of the Ideas Immanent in Nervous Activity. Bulletin of Mathematical Biophyics 5 (1943), 115-133. MEIGS, T. Ultimate Game Design: Building game worlds. New York: McGrawHill/Osborne, 2003. PEDERSEN, R. E. Game Design Foundations. Plano: Wordware Publishing, 2003. PEREIRA, R. L.; Uma Contribuio para a Rejogabilidade de Software de Entretenimento Digital atravs de Conceitos de Artificial Life. 2006. 90 f. Dissertao (Mestrado) Universidade Estadual de Maring (UEM), Maring , PR. PERUCIA, A. S. et all.; Desenvolvimento de Jogos eletrnicos: Teoria e Prtica. So Paulo: Novatec Editora Ltda., 2005.

50

PRECHELT, L. Are scripting languages any good? A validation of Perl, Phyton, Rexx, and Tcl against C, C++, and Java. Advances in Computers, 57: pp. 207-271, 2003 CODEN, ISSN 0065-2458. ROSENBLATT, F. The perceptron: a probabilistic model for information storage and organization in the brain. Psychological Review 65 (1958), 386-408. RUMELHART, D. E.; MCCLELLNAD, J. L. & GROUP, P.; Parallel Distributed Processing, vol 1: Foundations. The MIT Press, 1986. RUSSEL, S.; NORVIG, P. Inteligncia Artificial: traduo da segunda edio. Rio de Janeiro: Elsevier, 2004. SALEN, K.; ZIMMERMAN, E.; Rules of Play: Game Design Fundamentals. Cumberland: The MIT Press, 2004. SANTEE, A.; Programao de Jogos com C++ e DirectX. So Paulo: Novatec Editora Ltda., 2005. SCHWAB, B.; AI Game Engine Programming (Game Development Series). Charles River Media, 2004. SPRONCK, P., Shprinkhuizen-Kuyper, I. and Postma, E. Online Adaptation of Game Opponent AI in Theory and Practice. Proceedings of the 4th International Conference on Intelligent Games and Simulation (GAME-ON 2004) (ed. Q. Mehdi and N. Gough), SUTTON, Richard, BARTO, Andrew. Reinforcement Learning: An Introduction. Cambridge, MA. MIT Press. 1998 SWEETSER, P. Current AI in Games: A review. Australian Journal of Intelligent Information Processing Systems. Scool of ITEE, University of Queensland, 2002 Taikodom, http://www.taikodom.com.br/, acessado em junho de 2008. TOMASSINI, M. Survey of genetic algorithms. In: Annua Reviews of Computational Physics, World Scientific, 3, 87-118, 1995. TOZOUR, P.;.The Evolution of Game AI from AI Game Programming Wisdom. Hingham: Charles River Media, 2002. TOZOUR, P.; Artificial Intelligence: Introduction from Game Programming Gems 4. Hingham: Charles River Media, 2004. YANNAKAKIS, J. N. AI in Computer Games: Generating Interesting Interactive Opponents by the use of Evolutionary Computation, A thesis submitted t University of Edinburgh in the subject of Artificial Inteligence for the degree of Doctor of Philosophy, 2005. WHITLEY, D.; A Genetic Algorithm tutorial, Springer Science + Business Media B.V., Formerly Kluwer Academic, 1994. p. 65-85.

51

8 Bibliografia Audacity, http://audacity.sourceforge.net, acessado em fevereiro de 2008. Brimond, http://brimond.com, acessado em abril de 2008. Blog do time do XNA, http://blogs.msn.com/xna, acessado em maro de 2008. Creator`s Club, http://creators.xna.com, acessado em janeiro de 2008. GameDev, http://www.gamedev.com.br/, acessado em junho de 2008. GameReporter, http://www.gamereporter.org/, acessado em maro de 2008. Game Studio XNA 2.0, http://msdn2.microsoft.com/en-us/xna/aa937795.aspx, acessado em fevereiro de 2008. GameTutorials, http://www.gametutorials.com/, acessado em maro de 2008. GIMP, http://www.gimp.org, acessado em fevereiro de 2008. GUEDES, G. T. A. UML: Uma Abordagem Prtica. So Paulo: Novatec Editora Ltda, 2004. HOPLON, http://www.hoplon.com/, acessado em setembro de 2008. KAWICK, M. Real-Time Strategy Game Programming. Plano: Wordware Publishing, 1999. PDJ, http://www.programadoresdejogos.com/, acessado em maro 2008. ROLLINGS, A. MORRIS, D.; Game Architecture and Design. Indianapolis: New Riders Publishing, 2003. SharpGames, http://sharpgames.net, acessado em janeiro/2008. SILVA, L. A. Simulacron: professional game & level design. Curitiba: Free Editora, 2004. StarUML, http://staruml.sourceforge.net, acessado em fevereiro de 2008. UniDev, http://www.unidev.com.br, acessado em fevereiro/2008. Visual Studio C# 2005, http://msdn.microsoft.com/vstudio/express/downloads/ , acessado em fevereiro de 2008. Visual C# 2005 Service Pack, http://download.microsoft.com/download/7/7/3/7737290f-98e8-45bf-907585cc6ae34bf1/VS80sp1-KB926749-X86-INTL.exe, acessado em fevereiro de 2008. XNA-Br, http://br.groups.yahoo.com/group/xna-br/, acessado em fevereiro 2008.

52

Xuti Game Development, http://www.xuti.net, acessado em maio de 2008.

53

ANEXOS