Geração Procedural de Mapa Pseudo-Infinito Felipe Abrahão Ferrari, Luiz Antonio Lima Rodrigues (Bolsista da Fundação Araucária/PIBIC), Paulo Ricardo Bueno (Bolsista da Fundação Araucária/PIBIC) Ricardo Inácio Álvares e Silva, Mario Henrique Akihiko da Costa Adaniya e-mail: [email protected] Centro Universitário Filadélfia/Departamento de Computação. Área e sub-área do conhecimento: Ciências Exatas e da Terra/Ciência da Computação. Palavras-chave: Geração Procedural de Conteúdo; mapa pseudo-infinito; entretenimento eletrônico. Resumo Este trabalho é uma evolução ao trabalho iniciado em 2015. Através de algumas técnicas como Evolução Gramatical e Agentes de Software, e geramos um mapa pseudoinfinito. Aplicamos em um jogo rogue-like, como prova de conceito. O sistema desenvolvido se demonstrou eficiente no sentido que, a geração é em tempo de execução e os mapas gerados são jogáveis. Introdução Atualmente, com a evolução da tecnologia no desenvolvimento de jogos eletrônicos, a geração de conteúdo vem sendo uma tarefa que tem alto custo de tempo, trazendo a necessidade de um recurso para automatizar essa tarefa, para melhor rendimento do desenvolvimento do jogo. A Geração Procedural de Conteúdo (GPC) se encaixa nesse quesito, pois ele busca automatizar essa tarefa, através diversos tipos de técnicas controláveis. O GPC pode ser aplicado para gerar uma grande variedade de tipos de conteúdo do jogo, que é dividida em 6 tipos de classes, cada classe é especializada por gerar específicos conteúdos. (HENDRIKX et al., 2012). Levando em conta o alto custo de tempo para se gerar grandes quantidades de mapas, com a GPC se minimizaria este custo, facilitando o desenvolvimento dos jogos. O objetivo desse projeto é desenvolver um mapa pseudo-infinito, onde o jogador ao explorar o mapa, faz com que o mesmo expanda proceduralmente utilizando a GPC. Com essa ideia da para trazer 1 uma grande de variedade de mapas e mantendo a complexidade do jogo (GREUTER et al., 2003). Revisão Bibliográfica A utilização do GPC veio da ideia que hoje em dia para gerar mapas para os jogos, é uma tarefa muito cara e que leva muito tempo para ser realizado, só empresas que fizeram jogos como World of Warcraft e Halo 3, tem a capacidade para bancar o custo para gerar os mapas, com isso era necessário algo que minimizasse este custo e que gerasse os mapas automaticamente (HENDRIKX et al., 2012). Em (TOGELIUS et al., 2012) os autores discutem as técnicas de GPC de diversos aspectos, apresentando seus pontos fortes e fracos, mesmo quando desenvolvidas para um domínio específico. Discutem e demonstram através de exemplos que a combinação de diferentes algoritmos juntos maximiza as qualidade e minimiza as fraquezas, complementando-se. Uma abordagem de cidades virtuais pseudo-infinitas é apresentada por Greuter et al.. A cidade virtual é gerada em tempo de execução usando um numero inteiro como seed. A utilização de uma cache com a política substituição least recently used minimiza a regeneração procedural de construções, para economia e utilização eficiente de memória e manter a taxa de quadros estável. Os resultados apresentados indicam que o overhead do caching é insignificante para construções complexas (GREUTER et al., 2003). Métodos Neste projeto foi utilizada a linguagem C#, e a engine Unity. Como teste, foi utilizada uma reimplementação de um jogo guia da Unity. Sendo uma adaptação do jogo para um mundo infinito, ele não gera uma saída. No jogo original, a cada fase gerada, uma saída era uma produção obrigatória. No mundo pseudoinfinito, ele não gera uma saída. Como uma prova de conceito, o jogo também não possui objetivos para o fim. Uma das técnicas empregadas foi Evolução Gramatical (EG) define uma gramática na forma de Backus-Naur (BNF). Esta forma expressa uma linguagem através de regras de produções. É representa por uma tupla N, T, P, S; onde N é um conjunto de símbolos não terminais, os quais podem ser expandidos em um ou mais símbolos, sendo estes também não terminais ou terminais. Os símbolos terminais são os itens que fazem parte da linguagem de fato, representados por T. O conjunto de regras de produções é representado 2 por P e, o ponto de início é definido por S. Na EG, o algoritmo evolucionário é aplicado em um genótipo, definido como um conjunto de números inteiros, onde cada um destes valores é chamado de gene, usado na escolha da produção a ser aplicada, dado um símbolo não terminal. Agentes de Software (ASs) são entidades que detectam informações do ambiente através de sensores e são capazes de agir neste (RUSSELL; NORVIG, 2009). No algoritmo criado, estes agentes são utilizados como construtores, agindo em uma fase inicialmente vazia, realizando o posicionamento dos artefatos que devem estar conti- dos. Digamos que P é um agente de proximidade, o qual deve posicionar um artefato A próximo ao artefato B. A ação deste agente em um determinado ambiente (fase) poderia ser definida da seguinte maneira, com um único parâmetro D, dizendo a distância máxima que A pode ser criado de B. Resultados e Discussão A geração foi decomposta em três partes: definição dos elementos selecionados para uma fase; tentativa de criação destes, um a um, a partir de uma fase vazia e; avaliação se o resultado obtido é aceitável ou não. No primeiro passo, o algoritmo utiliza a EG. Todos os elementos possíveis à fase são mapeados como símbolos terminais T. Em seguida, a criação de cada um destes é realizada por ASs. Durante o processo de configuração, é necessário que para cada um dos símbolos terminais definidos, um AS deve ser vinculado. Então, após a definição dos elementos pela EG, eles serão criados iterativamente por seus respectivos agentes. Isso permite que a criação de elementos seja diferenciada, independente e/ou dependente, além de adaptável através de parâmetros. E por fim, uma verificação é realizada, concluindo se o mapa gerado é jogável ou não. 3 Figura 1 - Exemplo de uma parte do mapa gerado, com os elementos: personagem, inimigos, itens e obstáculos. Conclusões Os resultados propostos no inicio do projeto foram alcançados, e as técnicas empregadas alcançam o seu objetivo gerando mapas pseudo-infinitos em tempo de execução. Para trabalhos futuros da pesquisa, além da geração e posicionamento dos mapas, queremos estudar a analisar a geração de construções, itens e inimigos de forma procedural também. Agradecimentos Agradecemos à Fundação Araucária pelo apoio ao nosso projeto e aos professores pelas orientações. Referências HENDRIKX, M. et al. Procedural content generation for games: A survey. ACM Trans. Multimedia Comput. Commun. Appl., ACM, New York, NY, USA, v. 9, n. 1, p. 1:1–1:22, fev. 2013. ISSN 1551-6857. Greuter , S.; Parker, J; Stewart, N; Leach, G. 2003. Real-time procedural generation of `pseudo infinite' cities. In Proceedings of the 1st international conference on Computer graphics and interactive techniques in Australasia and South East Asia (GRAPHITE '03). ACM, New York, NY, USA, 87-ff. Russell, Stuart J. e Norvig, Peter. Reinforcement Learning. In ______. Artificial Inteligence: A modern Approach. 3 ed. Prentice Hall, 2003. p. 830-859. TOGELIUS, J.; JUSTINUSSEN, T.; HARTZEN, A. Compositional procedural content generation. In: Proceedings of the The Third Workshop on Procedural Content Generation in Games. New York, NY, USA: ACM, 2012. (PCG’12), p. 16:1–16:4. ISBN 978-1-4503-1447-3. 4