• Nenhum resultado encontrado

Geração automática de níveis de masmorras com barreiras para jogos digitais

N/A
N/A
Protected

Academic year: 2021

Share "Geração automática de níveis de masmorras com barreiras para jogos digitais"

Copied!
108
0
0

Texto

(1)

Departamento de Informática e Matemática Aplicada Bacharelado em Ciência da Computação

Geração Automática de Níveis de

Masmorras com Barreiras para Jogos

Digitais

Breno Maurício de Freitas Viana

Natal - RN 14 de Junho de 2019

(2)

Geração Automática de Níveis de Masmorras com

Barreiras para Jogos Digitais

Monografia de Graduação apresentada ao Departamento de Informática e Matemática Aplicada do Centro de Ciências Exatas e da Terra da Universidade Federal do Rio Grande do Norte como requisito parcial para a obtenção do grau de bacharel em Ciência da Computação.

Orientador

Prof. Dr. Selan Rodrigues dos Santos Coorientadora

Profa Dra Silvia Maria Diniz Monteiro Maia

Universidade Federal do Rio Grande do Norte – UFRN Departamento de Informática e Matemática Aplicada – DIMAp

Natal - RN 14 de Junho de 2019

(3)

Viana, Breno Maurício de Freitas.

Geração automática de níveis de masmorras com barreiras para jogos digitais / Breno Maurício de Freitas Viana. - 2019. 107f.: il.

Monografia (Bacharelado em Ciência da Computação)

-Universidade Federal do Rio Grande do Norte, Centro de Ciências Exatas e da Terra, Departamento de Informática e Matemática Aplicada. Natal, 2019.

Orientador: Selan Rodrigues dos Santos.

Coorientadora: Silvia Maria Diniz Monteiro Maia.

1. Computação - Monografia. 2. Geração procedural de esboços de níveis - Monografia. 3. Masmorras - Monografia. 4. Jogos digitais - Monografia. 5. Estudo sistemático de níveis de masmorras - Monografia. 6. Algorítimo genético - Monografia. I. Santos, Selan Rodrigues dos. II. Título.

RN/UF/CCET CDU 004

Catalogação de Publicação na Fonte. UFRN - Biblioteca Setorial Prof. Ronaldo Xavier de Arruda - CCET

(4)

Barreiras para Jogos Digitais apresentada por Breno Maurício de Freitas Viana e aceita

pelo Departamento de Informática e Matemática Aplicada do Centro de Ciências Exatas e da Terra da Universidade Federal do Rio Grande do Norte, sendo aprovada por todos os membros da banca examinadora abaixo especificada:

Prof. Dr. Selan Rodrigues dos Santos

Orientador

Departamento de Informática e Matemática Aplicada Universidade Federal do Rio Grande do Norte

Profa Dra Silvia Maria Diniz Monteiro Maia

Coorientadora

Departamento de Informática e Matemática Aplicada Universidade Federal do Rio Grande do Norte

Prof. Dr. André Maurício Cunha Campos

Departamento de Informática e Matemática Aplicada Universidade Federal do Rio Grande do Norte

(5)
(6)

Primeiramente, agradeço a Deus. Segundo, à minha família, principalmente meus pais e minha irmã, pelos cuidados, apoio, preocupação com meu bem-estar e fé em mim. Agradeço, especialmente, ao meu primo Raryson Cavalcante que, mesmo não me conhecendo na época, me acolheu em sua casa no meu primeiro ano e meio em Natal.

Aos meus grandes amigos da universidade Débora Oliveira, Gustavo Alves (Koruja), Felipe Barbalho, João Santana, Murilo Bento, Raul Silveira e Patrícia Cruz. Agradeço pela ajuda nos projetos, caronas, suporte e, principalmente, pelos momentos memoráveis. À ProfaDraMárjory da Costa-Abreu, uma boa amiga e uma das minhas melhores professoras. Aos meus amigos de fora da universidade, os quais sempre acreditaram em mim e me deram suporte de várias formas. Dou destaque à Pedro Cavalcante, que me ajudou de várias formas, inclusive em alguns dos meus projetos da universidade.

Aos demais colegas de departamento, por me auxiliarem com dicas, sugestões e críticas durante a jornada.

Ao grupo Programa de Educação Tutorial de Ciência da Computação da UFRN (PET-CC UFRN), aos meus colegas petianos e ao nosso tutor, Prof. Dr. Umberto Souza da Costa, pela amizade e pelos momentos descontração. Participar deste grupo foi bastante gratificante e me proporcionou boas experiências que certamente me ajudarão no futuro. À minha coorientadora, a Profa Dra Silvia Maria Diniz Monteiro Maia, pela dispo-sição, dedicação e paciência ao me ajudar durante as displinas que me ensinou e durante o desenvolvimento deste trabalho. Pela confiança e por acreditar na minha capacidade. E também pela amizade.

E, por último, agradeço ao meu orientador, Prof. Dr. Selan Rodrigues dos Santos, pelo apoio, conselhos e ensinamenos compartilhados durante quase toda minha jornada na UFRN. Pela disposição, empenho, paciência e confiança durante o desenvolvimento deste trabalho. Agradeço, principalmente, por acreditar na minha capacidade e por não me permi-tir me desafiar mais do que eu já me desafiei ao fazer este trabalho. E, por fim, pela amizade.

(7)

not re-create, but create. This is why it is cruel.”

Michael A. Stackpole, World of Warcraft: Vol’jin: Shadows of the Horde

(8)

Barreiras para Jogos Digitais

Autor: Breno Maurício de Freitas Viana Orientador(a): Prof. Dr. Selan Rodrigues dos Santos Co-orientador(a): Profa Dra Silvia Maria Diniz Monteiro Maia

Resumo

Geração procedural de conteúdo (PCG) é um método de criação automatizada de conteúdo digital. Um dos desafios da área é gerar uma variedade de conteúdos, com custo computacional baixo e com garantia de validade. O presente trabalho aborda a geração procedural de níveis típicos de jogos do gênero Dungeon Crawler (Exploração de Masmorras). Em particular, estávamos interessados em geração de níveis com a mecânica

de barreiras. Barreiras são elementos presentes nos níveis que impedem o progresso

do jogador e, portanto, precisam ser resolvidos por meio de elementos do jogo como a localização e utilização de chaves, resolução de puzzles, ou aquisição e utilização de novas habilidades. O trabalho considera quatro formas de barreiras com chaves, dependendo da relação entre quantidades de chaves (C) e barreiras (B): 1C para 1B, MC para 1B, 1C para NB e MC para NB. A geração automática de esboços de níveis que suportem essas combinações de C/B pode ser mapeado como um problema de satisfação de restrições (PSR), visto que B e C possuem restrições de posicionamento dentro de regiões do cenário;

isto é, devemos evitar a geração de uma barreira cuja solução seja inalcançável dentro do nível. Uma das formas de solucionar PSRs é por meio de técnicas de busca. Portanto, a proposta ora apresentada utilizada uma combinação de Algoritmo Genético (AG) com um algoritmo de geração-e-teste (não baseado em busca) para gerar níveis com suporte a múltiplas combinações B/C. Os resultados preliminares demonstraram que, apesar de surgirem soluções inviáveis, a maioria das buscas executadas com o método proposto resultaram em níveis viáveis com a mecânica de barreiras.

Palavras-chave: Geração Procedural de Esboços de Níveis, Masmorras, Jogos Digitais,

(9)

for Digital Games

Author: Breno Maurício de Freitas Viana Advisor: Prof. Dr. Selan Rodrigues dos Santos Co-advisor: Profa Dra Silvia Maria Diniz Monteiro Maia

Abstract

Procedural content generation (PCG) is a digital content creation method performed by algorithms. One of the challenges of the area is to generate a variety of content, with low computational cost and with validity guarantee. The present work addresses the procedural generation of typical game levels of the Dungeon Crawler genre. In particular, we were interested in generating levels with the mechanics of barriers. Barriers are elements present at levels that impede the progress of the player and, therefore, need to be solved through elements of the game such as the location and use of keys, by solving puzzles, or the acquisition and use of new skills. The work considers four forms of barriers with keys, depending on the relationship between the amount of keys (K) and barriers (B): 1K for 1B, NK for 1B, 1K for MB and NK to MB. The automatic generation of level sketches that support these K/B combinations can be mapped as a constraint satisfaction problem (CSP), since B and K have position constraints within scenario regions; that is, we must avoid generating a barrier whose solution is unreachable within the level. One of the ways to solve CSP is by means of search techniques. Therefore the proposal presented here uses a combination of a Genetic Algorithm (AG) with a generate-and-test (non-search-basead) algorithm to generate levels with support for multiple B/K combinations. Preliminary results have shown that, although it generate infeasible solutions, most solutions generated by our method are feasible levels with the mechanics of barriers.

Keywords: Procedural Sketch Level Generation, Dungeon, Digital Games, Sistematic Study

(10)

Figura 2.1 – Exemplos de dois tipos de câmera em jogos 2D . . . 5

Figura 2.2 – Exemplos de barreiras da franquia Pokémon (2002) . . . 7

Figura 2.3 – Relação entre barreiras (Bi) e chaves (Kj) . . . . 7

Figura 2.4 – Captura de tela do jogo Eldritch (Minor Key Games, 2013) . . . . 8

Figura 2.5 – Captura de tela do jogo Spelunky (YU, 2008) . . . . 9

Figura 2.6 – Captura de tela do jogo Diablo III (Blizzard, 2012) . . . 10

Figura 2.7 – Captura de tela do jogo Rogue (TOY; WICHMAN, 1980) . . . 10

Figura 2.8 – Tipos de seleção de cromossomos (Ii: indivíduo) . . . 15

Figura 2.9 – Exemplo de mutação (Ii: indivíduo) . . . 16

Figura 2.10–Exemplo de crossover com um ponto (Ii: indivíduo) . . . 16

Figura 3.1 – String de busca . . . 20

Figura 3.2 – Fórmula de busca convertido em um diagrama . . . 20

Figura 3.3 – Diagrama de fluxo do PRISMA . . . 21

Figura 3.4 – Dados relacionados aos jogos e trabalhos . . . 24

Figura 3.5 – Algoritmos utilizados . . . 25

Figura 3.6 – Taxonomia dos algoritmos . . . 26

Figura 3.7 – Representações visuais 2D de níveis de dungeons . . . 33

Figura 3.8 – Dungeon gerada pela técnica proposta por Liapis (2017) . . . 34

Figura 3.9 – Exemplos de esboços de níveis com barreiras (J: jogador; S: saída; B: barreira; C: chave) . . . 35

Figura 3.10–Exemplos de níveis com barreiras dos tipos 1 × 1, 1 × M e N × 1 . . . . 36

Figura 4.1 – Exemplo de definição das conexões do trabalho de Liapis (2017) . . . . 38

Figura 4.2 – Comparação entre as conexões dos esboços do trabalho de Liapis (2017) e da nossa proposta . . . 39

Figura 4.3 – Demonstração da aplicação das regras de conexão . . . 40

Figura 4.4 – Exemplo de definição das conexões do trabalho proposto . . . 40

Figura 4.5 – Problemas que as restrições definidas evitam . . . 41

Figura 4.6 – Exemplo de crossover com de três pontos (p1, p2 e pf) onde pf é fixo (Ii: indivíduo) . . . 53

Figura 5.1 – Resultados gerados de esboços de dimensão 5 × 5 com 1 barreira . . . . 60

Figura 5.2 – Resultados gerados de esboços de dimensão 5 × 5 com 2 barreiras . . . 61

Figura 5.3 – Caminho de solução do esboço de nível da Figura 5.2a . . . 62

Figura 5.4 – Resultados gerados de esboços de dimensão 5 × 5 com 3 barreiras . . . 62

Figura 5.5 – Resultados gerados de esboços de dimensão 5 × 5 com 4 barreiras . . . 63

(11)

Figura 5.8 – Caminho de solução do esboço de nível da Figura 5.7b . . . 64 Figura 5.9 – Exemplo de problema da representação das regiões . . . 65 Figura 5.10–Esboços de níveis inviáveis . . . 66

(12)

Tabela 3.1 – Fontes de informação . . . 19

Tabela 3.2 – Termos de busca . . . 19

Tabela 3.3 – Classificação dos artigos em ordem cronológica de publicação de acordo com dimensão, gênero, estratégia de solução e se possui ou não pseudo-algoritmo . . . 22

Tabela 3.4 – Classificação dos artigos em ordem cronológica de publicação de acordo com a taxonomia . . . 23

Tabela 3.5 – Quadro resumo . . . 34

Tabela 4.1 – Tipos de segmentos do esboço de uma dungeon . . . 39

Tabela 5.1 – Média da iteração de criação das soluções para cada configuração de testes . . . 59

Tabela 5.2 – Média do tempo de execução das soluções para cada configuração de testes . . . 59

Tabela 5.3 – Média do valor fitness das soluções para cada configuração de testes . . 60

Tabela B.1 – Número máximo de chamadas à função de fitness . . . 83

Tabela B.2 – Desempenho do FI-2pop GA para 5 × 5 com 1 barreira . . . 83

Tabela B.3 – Desempenho do FI-2pop GA para 5 × 5 com 2 barreiras . . . 83

Tabela B.4 – Desempenho do FI-2pop GA para 5 × 5 com 3 barreiras . . . 83

Tabela B.5 – Desempenho do FI-2pop GA para 5 × 5 com 4 barreiras . . . 84

Tabela B.6 – Desempenho do FI-2pop GA para 5 × 5 com 5 barreiras . . . 84

Tabela B.7 – Desempenho do FI-2pop GA para 6 × 6 com 1 barreira . . . 84

Tabela B.8 – Desempenho do FI-2pop GA para 6 × 6 com 2 barreiras . . . 84

Tabela B.9 – Desempenho do FI-2pop GA para 6 × 6 com 3 barreiras . . . 84

Tabela B.10–Desempenho do FI-2pop GA para 6 × 6 com 4 barreiras . . . 84

Tabela B.11–Desempenho do FI-2pop GA para 6 × 6 com 5 barreiras . . . 85

Tabela B.12–Desempenho do FI-2pop GA para 7 × 7 com 1 barreira . . . 85

Tabela B.13–Desempenho do FI-2pop GA para 7 × 7 com 2 barreiras . . . 85

Tabela B.14–Desempenho do FI-2pop GA para 7 × 7 com 3 barreiras . . . 85

Tabela B.15–Desempenho do FI-2pop GA para 7 × 7 com 4 barreiras . . . 85

Tabela B.16–Desempenho do FI-2pop GA para 7 × 7 com 5 barreiras . . . 85

Tabela B.17–Desempenho do FI-2pop GA para 8 × 8 com 1 barreira . . . 86

Tabela B.18–Desempenho do FI-2pop GA para 8 × 8 com 2 barreiras . . . 86

Tabela B.19–Desempenho do FI-2pop GA para 8 × 8 com 3 barreiras . . . 86

Tabela B.20–Desempenho do FI-2pop GA para 8 × 8 com 4 barreiras . . . 86

(13)

Tabela B.23–Desempenho do FI-2pop GA para 9 × 9 com 2 barreiras . . . 87

Tabela B.24–Desempenho do FI-2pop GA para 9 × 9 com 3 barreiras . . . 87

Tabela B.25–Desempenho do FI-2pop GA para 9 × 9 com 4 barreiras . . . 87

Tabela B.26–Desempenho do FI-2pop GA para 9 × 9 com 5 barreiras . . . 87

Tabela B.27–Desempenho do FI-2pop GA para 10 × 10 com 1 barreira . . . 87

Tabela B.28–Desempenho do FI-2pop GA para 10 × 10 com 2 barreiras . . . 87

Tabela B.29–Desempenho do FI-2pop GA para 10 × 10 com 3 barreiras . . . 88

Tabela B.30–Desempenho do FI-2pop GA para 10 × 10 com 4 barreiras . . . 88

Tabela B.31–Desempenho do FI-2pop GA para 10 × 10 com 5 barreiras . . . 88

Tabela B.32–Desempenho do FI-2pop GA para 15 × 15 com 1 barreira . . . 88

Tabela B.33–Desempenho do FI-2pop GA para 15 × 15 com 2 barreiras . . . 88

Tabela B.34–Desempenho do FI-2pop GA para 15 × 15 com 3 barreiras . . . 88

Tabela B.35–Desempenho do FI-2pop GA para 15 × 15 com 4 barreiras . . . 89

Tabela B.36–Desempenho do FI-2pop GA para 15 × 15 com 5 barreiras . . . 89

Tabela B.37–Desempenho do FI-2pop GA para 20 × 20 com 1 barreira . . . 89

Tabela B.38–Desempenho do FI-2pop GA para 20 × 20 com 2 barreiras . . . 89

Tabela B.39–Desempenho do FI-2pop GA para 20 × 20 com 3 barreiras . . . 89

Tabela B.40–Desempenho do FI-2pop GA para 20 × 20 com 4 barreiras . . . 89

Tabela B.41–Desempenho do FI-2pop GA para 20 × 20 com 5 barreiras . . . 90

Tabela B.42–Desempenho do FI-2pop GA para 30 × 30 com 1 barreira . . . 90

Tabela B.43–Desempenho do FI-2pop GA para 30 × 30 com 2 barreiras . . . 90

Tabela B.44–Desempenho do FI-2pop GA para 30 × 30 com 3 barreiras . . . 90

Tabela B.45–Desempenho do FI-2pop GA para 30 × 30 com 4 barreiras . . . 90

Tabela B.46–Desempenho do FI-2pop GA para 30 × 30 com 5 barreiras . . . 90

Tabela B.47–Desempenho do FI-2pop GA para 50 × 50 com 1 barreira . . . 91

Tabela B.48–Desempenho do FI-2pop GA para 50 × 50 com 2 barreiras . . . 91

Tabela B.49–Desempenho do FI-2pop GA para 50 × 50 com 3 barreiras . . . 91

Tabela B.50–Desempenho do FI-2pop GA para 50 × 50 com 4 barreiras . . . 91

(14)

Algoritmo 2.1 – Estrutura genérica de um algoritmo genético . . . 16

Algoritmo 4.1 – Algoritmo de cálculo da inviabilidade de segmentos . . . 42

Algoritmo 4.2 – Algoritmo de cálculo da inviabilidade de conexão . . . 42

Algoritmo 4.3 – Algoritmo de cálculo da inviabilidade da mecânica de barreiras 43 Algoritmo 4.4 – Algoritmo de cálculo da inviabilidade das barreiras . . . 44

Algoritmo 4.5 – Algoritmo de cálculo da inviabilidade das regiões . . . 45

Algoritmo 4.6 – Algoritmo de cálculo da inviabilidade das chaves . . . 45

Algoritmo 4.7 – Algoritmo de distribuição de segmentos . . . 46

Algoritmo 4.8 – Algoritmo de distribuição de segmentos parede . . . 47

Algoritmo 4.9 – Algoritmo de distribuição de barreiras . . . 48

Algoritmo 4.10 – Algoritmo de criação das regiões . . . 49

Algoritmo 4.11 – Algoritmo de distribuição de chaves . . . 50

Algoritmo 4.12 – Algoritmo de mutação . . . 52

Algoritmo 4.13 – Algoritmo de crossover . . . 53

Algoritmo 4.14 – Algoritmo da função objetiva de controle de recursos . . . 55

Algoritmo 4.15 – Algoritmo da função objetiva de balanceamento de segmentos . 56 Algoritmo 4.16 – Algoritmo da função objetiva da exploração . . . 56

(15)

AB – Algoritmo de Busca AC – Algoritmo Construtivo AE – Algoritmo Evolucionário AG – Algoritmo Genético

AG/AC – Algoritmo Genético e Autômato Celular AC – Autômato Celular

CF – Colônia de Formigas

CSP – Constraint Satisfaction Problem (Problema de Satisfação de Restrições)

FI-2pop GA – Feasible-Infeasible two population GA (AG de Duas Populações Viável-Inviável)

FPS – First-Person Shooter (Tiro em Primeira Pessoa) GG – Gramática Generativa

NPC – Non-Player Character (Personagem Não Jogador)

PCG – Procedural Content Generation (Geração Procedural de Conteúdo) PSR – Problema de Satisfação de Restrições

(16)

Lista de ilustrações . . . . iii

Lista de tabelas . . . . v

Lista de algoritmos . . . . vii

Sumário . . . . ix

1 INTRODUÇÃO . . . . 1

2 EMBASAMENTO TEÓRICO . . . . 4

2.1 Geração procedural de conteúdo . . . 4

2.2 Conceitos de elementos de jogos . . . 5

2.3 Gêneros de jogos comumente estudados em PCG . . . 8

2.3.1 Ação/Aventura . . . 8 2.3.2 Plataforma . . . 8 2.3.3 Role-Playing Game . . . 9 2.3.4 Roguelike . . . 10 2.4 Taxonomia de PCG em jogos . . . 11 2.4.1 Necessidade do conteúdo . . . 11 2.4.2 Momento da geração . . . 11 2.4.3 Controle da geração . . . 12 2.4.4 Generalidade . . . 12 2.4.5 Método de escolha . . . 12 2.4.6 Forma de geração . . . 13 2.4.7 Autoria do conteúdo . . . 13 2.5 Algoritmos evolucionários . . . 13 2.5.1 Principais termos . . . 14 2.5.2 Estrutura de evolução . . . 15 2.5.3 Abordagem FI-2pop GA . . . 17 2.6 Conclusão . . . 17

3 ESTUDO SISTEMÁTICO DA LITERATURA . . . . 18

3.1 Métodos . . . 18

3.1.1 Critério de elegibilidade . . . 18

3.1.2 Fonte de informação . . . 19

(17)

3.2 Resultados . . . 21

3.2.1 Artigos selecionados . . . 22

3.2.2 Visualização das características dos artigos . . . 24

3.2.3 Análise individual . . . 27 3.3 Discussão . . . 31 3.3.1 Quadro resumo . . . 34 3.4 Conclusão . . . 34 3.4.1 Definição do Problema . . . 35 4 PROPOSTA DE SOLUÇÃO . . . . 38 4.1 Representação do esboço . . . 38

4.2 Viabilidade de esboços de dungeons . . . 40

4.3 População inicial . . . 45

4.4 Evolução . . . 51

4.5 Funções-objetivo . . . 54

4.6 Conclusão . . . 57

5 EXPERIMENTOS, RESULTADOS E DISCUSSÕES . . . . 58

5.1 Descrição dos experimentos . . . 58

5.2 Desempenho do FI-2pop GA . . . 59

5.3 Esboços de níveis gerados . . . 60

5.4 Problemas encontrados . . . 65 5.4.1 Resultados inviáveis . . . 65 5.5 Conclusão . . . 66 6 CONSIDERAÇÕES FINAIS . . . . 67 6.1 Trabalhos futuros . . . 68 REFERÊNCIAS . . . . 70

APÊNDICES

75

APÊNDICE A – LISTA DE TRABALHOS EXCLUÍDOS . . . . 76

(18)

Capítulo 1

Introdução

Geração procedural de conteúdo (PCG) é um método de criação de conteúdo digital por meio algorítmico. Esse método surgiu nos jogos buscando solucionar o problema do crescente consumo de memória para poder armazenar e transmitir os recursos dos jogos (assets) necessários para o funcionamento de um jogo. PCG também permite tratar de outros dois problemas: (1) alto custo de produção de assets, pelo time de arte e design, como mapas, terrenos, estórias, diálogos, missões, efeitos sonoros, músicas, armas ou itens, etc.; (2) complexidade de oferecer um balanceamento de dificuldade capaz de manter o jogador engajado, especialmente no que diz respeito a variedade de cenários e desafios. Contudo, dependendo do conteúdo a ser gerado e da técnica utilizada, o consumo de recursos computacionais pode ser alto.

Assim, muitos trabalhos de pesquisa propuseram soluções para geração de conteúdo em diversos gêneros de jogos. Contudo, parte das soluções propostas não consegue oferecer uma variedade satisfatória dos conteúdos que pretendem gerar, não consideram alguns elementos comuns de jogos ou o custo computacional para a geração de um conteúdo é alto devido à necessidade de garantir a consistência. A definição de consistência depende do tipo de conteúdo, mas, em geral, um conteúdo é inconsistente quando o jogador não consegue utilizá-lo. Além disso, surgiu uma nova vertente da área de PCG, denominada de iniciativa mista, a qual utiliza a geração procedural para gerar conteúdos para serem usados como fonte de inspiração para aumentar a produtividade de level designers. Contudo, por ser uma abordagem nova, ainda existem vários aspectos a serem melhorados, tais como a interação das ferramentas que utilizam essa abordagem com o designer.

Nossa pesquisa foi dividida em duas etapas. Na primeira etapa, realizamos um estudo sistemático para avaliar, sintetizar e classificar trabalhos relacionados à geração procedural focada em níveis típicos de jogos do gênero Dungeon Crawler (Exploração de Masmorras). O estudo forneceu uma visão geral dos tópicos pesquisados e suas descobertas e permitiu também encontrar problemas de pesquisa em aberto. Dentre os problemas identificados, escolhemos a geração automática de esboços de níveis de dungeons (masmorras) com

barreiras como problema a ser atacado na segunda etapa de nossa pesquisa.

A geração automática de níveis é um problema bastante atacado na academia. Contudo, ainda existem elementos relacionados aos níveis, e que influenciam em sua topologia, que podem tornar o jogo mais desafiador e, consequentemente, oferecer uma melhor experiência ao jogador e aumento do seu engajamento no jogo. Ao mesmo tempo, tais elementos podem apresentar uma complexidade relevante como problema de geração procedural. Um exemplo de tais elementos é a mecânica de barreiras, a qual efetua

(19)

um bloqueio temporário de regiões ou recursos em um jogo impedindo, assim, o jogador de progredir até encontrar uma forma de desfazer o bloqueio. A mecânica de barreiras é interessante para geração procedural devido à complexidade de garantir que um nível seja consistente (concluível). Para isso, é necessário realizar uma distribuição das barreiras e dos recursos que efetuam o desbloqueio de forma a respeitar certas restrições, como permitir que tais recursos de desbloqueio sejam alcançáveis pelo jogador.

O estudo realizado na primeira etapa nos permitiu identificar que, no contexto de níveis para jogos do estilo Dungeon Crawler, poucos trabalhos apresentaram soluções com geração de níveis com a mecânica de barreiras. Os trabalhos que o fizeram, apresentaram no máximo duas variações dos tipos de barreiras com chaves. Contudo, existem quatro tipos de barrerias com chaves que podem ser exploradas na área de PCG, as quais são definidos no capítulo a seguir. O estudo também nos possibilitou identificar a falta da mecânica de barreiras em um dos melhores trabalhos encontrados, o de Liapis (2017). Tomando tais resultados do estudo como motivação para a realização do nosso trabalho, definimos como objetivo o desenvolvimento de uma solução para a geração de níveis com a mecânica de barreiras viáveis. Portanto, apresentamos neste trabalho uma expansão da primeira etapa do trabalho de Liapis (2017) (a geração do esboço do nível de uma

dungeon) de forma a incluir a mecânica de barreiras com chaves considerando as suas

quatro formas.

Um esboço de um nível é uma abstração de um nível. Um esboço possui apenas informações de topologia e de tipos de conteúdo que irão aparecer em certas partes de um nível. No trabalho de Liapis (2017), por exemplo, o esboço guarda informações sobre quais regiões do nível possuem recompensas, inimigos e as saídas do nível. No nosso trabalho adicionamos as informações acerca da mecânica de barreiras (suas posições e posições de suas chaves). O problema de geração de esboços de níveis com barreiras pode ser mapeado como um Problema de Satisfação de Restrições (Constraint Satisfaction Problem – CSP), pois as barreiras e as suas chaves possuem restrições de posicionamento (TOGELIUS et al., 2011). Os tipos de regiões também possuem restrições. O problema é melhor detalhado no Capítulo 3.

Uma das formas de solucionar CSP é a partir do uso de técnicas de busca (BRAILS-FORD; POTTS; SMITH, 1999). Portanto, nossa proposta é uma técnica que utiliza uma combinação de uma versão do algoritmo genético (AG) com um algoritmo de geração-e-teste (que não é baseado em busca) que é responsável por gerar a população inicial. O algoritmo geração-e-teste não consegue gerar esboços de níveis sempre consistentes, isto é, que não possui problemas estruturais. Contudo, utilizamos tal problema do algoritmo construtivo para formar a população da abordagem Feasible-Infeasible 2 population GA (FI-2pop GA) que evolui duas populações de esboços consistentes e inconsistentes. FI-2pop GA, segundo Togelius et. al (2011), é uma abordagem projetada para CSP. Com isso, a técnica é capaz de gerar níveis com maior qualidade no decorrer da evolução.

(20)

O conjunto de testes utilizados em nossos experimentos foram definidos com 10 dimensões diferentes com a quantidade de barreiras do esboço variando de 1 a 5 para cada dimensão. Os resultados mostraram que as soluções obtidas pelo FI-2pop GA convergiram. Em relação à qualidade dos esboços de níveis gerados, definimos como uma boa solução o nível com barreiras que apresentasse o menor caminho entre a entrada e a saída maior que o menor caminho do mesmo nível sem as barreiras. Devido à complexidade, desconsideramoso as chaves para encontrar o menor caminho. Dessa forma, poucos níveis apresentaram uma boa qualidade. Além disso, existem três problemas na nossa técnica. O primeiro é está no algoritmo construtivo, pois as restrições envolvidas para a geração de um nível consistente, apesar de raramente, fazem com que, em níveis pequenos, não exista uma permutação válida da distribuição das barreiras. O problema está na definição representação das regiões que permite a geração de níveis inconsistentes. E o último é que nossa abordagem ainda gera níveis inviáveis mesmo com algumas características inviáveis já previstas.

No capítulo a seguir descrevemos os principais conceitos relacionados à geração procedural, as definições dos elementos de jogos relevantes para este trabalho (onde detalhamos os tipos de barreiras e como elas aparecem em jogos), alguns dos gêneros mais estudados e a taxonomia das técnicas. Em seguida, no Capítulo 3, descrevemos como se deu a realização do estudo sistemático, apresentamos os seus resultados e detalhamos a definição do problema. Logo após, no Capítulo 4, apresentamos a proposta de solução para o problema. No Capítulo 5, apresentamos e discutimos os resultados obtidos. Por fim, no Capítulo 6 são apresentadas as conclusões e trabalhos futuros de ambas as etapas deste trabalho.

(21)

Capítulo 2

Embasamento teórico

Neste capítulo, apresentamos mais detalhadamente o conceito de conteúdo em jogos e o de geração procedural de conteúdo, descrevemos os elementos de jogos que são abordados neste trabalho (dungeon, níveis, barreiras e relacionados), os quatro gêneros de jogos mais comumente estudados na pesquisa de PCG e as classificações das técnicas da área. Tais conceitos são importantes para facilitar a compreensão da área de PCG e para guiar o estudo sistemático. Além disso, apresentamos a área de algoritmos evolucionários com foco em algoritmos genéticos e uma de suas derivações, a Feasible-Infeasible 2 population

GA, que utilizamos para o desenvolvimento da solução proposta.

2.1

Geração procedural de conteúdo

Conteúdo em jogos, segundo Togelius, Shaker e Nelson (2016), se refere à tudo o que está contido em um jogo, como níveis, mapas, regras do jogo, texturas, estórias, itens, missões, música, armas, veículos, personagens, entre outros elementos. Deste modo, níveis e barreiras podem ser considerados como conteúdos de um jogo. Contudo, os mesmos autores (2016) destacam que Game Engines (Motores de Jogos) e o comportamento de

Non-Player Characters (NPC), ou Personagens Não-Jogadores em tradução livre, não são

considerados como conteúdo em jogos.

Segundo os mesmos autores (2016), geração procedural é um processo computacional, ou algorítmico, que cria algum conteúdo digital, através do uso de aleatoriedade. No entanto, esse processo deve garantir que o resultado seja coerente e não simplesmente aleatório (DOULL, 2018). A fim de esclarecer o sigficado de PCG, apresentamos a seguir, em

tradução livre, três definições de geração procedural de conteúdo:

D1: Segundo Hendrikx et al. (2013), PCG é “a aplicação de computadores para gerar

conteúdo de jogos, distinguir instâncias interessantes entre as geradas e selecionar instâncias de entretenimento em nome dos jogadores.”

D2: Segundo Togelius, Shaker e Nelson (2016), PCG é um “software de computador que

pode criar conteúdo de jogo por conta própria, ou junto com um ou muitos jogadores ou designers humanos.”

D3: Segundo Doull (2018), PCG é a “geração programática do conteúdo do jogo que utiliza

um processo aleatório ou pseudo-aleatório que resulta em uma variedade imprevisível de possíveis espaços de jogo.”

(22)

Elegemos a definição a D2 para tomar como base neste trabalho, pois a consideramos a mais abrangente que as outras duas uma vez que considera softwares que utilizam abordagem mista. Esta é uma classificação que permite a participação por parte de

designers ou jogadores humanos na criação do conteúdo.

2.2

Conceitos de elementos de jogos

Precisamos compreender os conceitos dos elementos envolvidos no conteúdo que queremos gerar proceduralmente. Dessa forma, é possível definir as regras de geração para guiar o algoritmo de forma a gerar um conteúdo consistente. Em jogos, um conteúdo é inconsistente quando possui algum problema que impede o jogador de utilizar o conteúdo para o objetivo para o qual o conteúdo foi criado. Portanto, apresentamos e definimos nesta seção a definição dos elementos de jogos abordados neste trabalho e outros conceitos envolvidos.

Side-scroller é um tipo de câmera em jogos, na qual o ângulo de visão é lateral. Nesse formato, os personagens do jogo, normalmente, só se movem da esquerda para direita. Um exemplo de um jogo side-scroller é o Super Mario World (Nintendo, 1991) o qual pode ser visto na Figura 2.1a.

Top-down é um tipo de câmera com ângulo de visão área. Nesse formato, o jogador pode mover tanto horizontalmente quanto verticalmente. Um exemplo de jogo top-down é The Legend of Zelda (Nintendo, 1987) o qual pode ser visto na Figura 2.1b.

Figura 2.1 – Exemplos de dois tipos de câmera em jogos 2D

(a) Exemplo de câmera side-scrolling

Fonte: TFX, 2016

(b) Exemplo de câmera top-down

Fonte: Gamer Evolution, 2018

Dungeon (Masmorra/Calabouço) é, segundo van Linden, Lopes e Bidarra (2014), um ambiente labiríntico que possui desafios, recompensas e puzzles (enigmas) inter-relacionados para oferecer progressões de jogabilidade estruturadas.

Obstáculo é, segundo Duarte (2012), um objeto ou característica do nível capaz de

dificultar a progressão do jogador. Tal recurso aparece de forma de objetos emissores de dano (armadilhas ou inimigos), ainda elementos do cenário do próprio nível do

(23)

jogo (um abismo que exige um salto preciso, por exemplo) ou puzzles, são obstáculos que exigem um grau de raciocínio maior por parte do jogador.

Desafio é um obstáculo cuja dificuldade põe em dúvida as capacidades do jogador de

vencê-lo. Tal recurso visa instigar o jogador de modo a mantê-lo engajado com o jogo. Desafios, segundo Duarte (2012), são classificados como: desafios temporais, onde existe um tempo limite para a realização do desafio; desafios cognitivos (puzzles); desafios de destreza, os quais o jogador têm que realizar algo com exatidão (como acertar um objeto distante); e desafios de combate, onde o jogador deve vencer inimigos muito fortes. Um desafio pode apresentar combinações de desafios.

Recompensa é um recurso do jogo o qual o jogador não tem acesso no início do mesmo.

Portanto, para obter uma recompensa é necessário encontrá-las. Elas podem ter fácil acesso (recursos comuns) ou podem requerer a realização de algum desafio (recursos especiais). Recompensas podem aparecer no formato de itens ou habilidades.

Item é um recurso que permite o jogador realizar algum efeito que ofereça algum benefício

de jogabilidade. Um item pode ser classificado em termos de consumo e de uso. Em relação ao consumo, um item pode ser: consumível, que depois de ser utilizado desaparece; não-consumível, pode ser utilizado várias vezes. Em relação ao uso, destacamos o item do tipo chave, que é necessário para progressão do jogador de forma a permitir acessar recursos bloqueados do jogo (pode ser ou não consumível).

Habilidade é um recurso semelhante ao anterior, sua distinção se dá na forma de uso no

jogo. Contudo, apesar de poderem ser temporárias (o jogador tem acesso por apenas parte do jogo), não podem ser classificadas como consumíveis.

Objetivo (ou missão) é algo a ser realizado no jogo com o intuito de progredir no jogo

ou finalizá-lo. Um jogo pode possui um objetivo principal e pode possuir objetivos secundários ou intermediários. Por exemplo, o objetivo principaldo jogo Super Mario World (1991) é resgatar a princesa Peach. Contudo, antes disso, o jogador deve completar vários níveis, cada um desses níveis são objetivos intermediários. Dentro de um nível, pode ser necessário utilizar de algum recurso para poder concluí-lo, sejam as habilidades do personagem controlado ou itens. Por exemplo, o nível Cheese

Bridge Area requer o Yoshi ou a habilidade da pena (que permite o Mario voar) para

ser completado, logo, a obtenção de algum destes itens é um objetivo intermediário.

Nível é parte de um jogo que possui um objetivo menor do que o objetivo principal do jogo.

Normalmente, os níveis possuem aumento de dificuldade de acordo com o progresso do jogador. A dificuldade pode ser inserida no nível a partir de inimigos mais poderosos ou com habilidades diferentes, armadilhas, puzzles ou outros obstáculos.

(24)

Lock-and-key (chave-fechadura) é recurso que impede, temporariamente, o acesso a um recurso do jogo, como itens ou outras recompensas, ou áreas de jogo (barreira). Para ser desbloqueado é necessário um item para desbloquear. O recurso de desbloqueio é definido como chave. Essa mecânica pode aparecer no formato de um baú que guarda uma recompensa, para acessá-la é necessário abrir o baú com uma chave.

Barreira é um recurso de jogos que impede o jogador de alcançar alguma região de

um nível ou parte de um jogo. Barreiras podem bloquear a progressão de forma permanente apenas em um sentido ou provisioriamente podendo ser desbloqueadas. Barreiras podem aparecer de forma de obstáculo ou de lock -and-key. Para desbloquear uma barreira é necessário um recurso chave (item ou habilidade), solucionar um

puzzle ou vencer um inimigo (como chefes de níveis). A Figura 2.2 apresenta três

exemplos de barreiras utilizadas em jogos da franquia Pokémon (2002). Figura 2.2 – Exemplos de barreiras da franquia Pokémon (2002)

(a) Uma flauta acorda o Snor-lax que está impedindo o acesso à outras rotas.

(b) O morro impede que o jogador acesse uma área com um item.

(c) Uma bicicleta especial per-mite atravesar a ponte para acessar outra área.

Fonte: Imagens capturadas a partir de vídeos do YouTube1, 2019

Barreiras com chaves podem aparecer de quatro formas (Figura 2.3): (1) uma chave que desbloqueia apenas uma barreira; (2) uma chave (não-consumível) desbloqueia várias barreiras; (3) mais de uma chave desbloqueia uma barreira; (4) um conjunto de chaves (não-consumíveis) que juntas desbloqueiam um conjunto de barreiras.

Figura 2.3 – Relação entre barreiras (Bi) e chaves (Kj)

(a) 1 × 1: 1 chave para 1 barreira K0 B0 (b) 1 × N : 1 chave para N barreiras B2 B1 K1 (c) M × 1: M chaves para 1 barreira K2 K3 B3 (d) M × N : barreiras compartilham chaves K4 K5 B4 B5 Fonte: autor

1. Figura 2.2a: https://youtu.be/HrN1i1NZ9Uk. Figura 2.2b: https://youtu.be/DoFjHGL4CM4. Fi-gura 2.2c: https://youtu.be/00kkWx1JQIA.

(25)

2.3

Gêneros de jogos comumente estudados em PCG

Criar um modelo único que represente de forma geral cada tipo de conteúdo é bastante difícil devido às particularidades e restrições de cada gênero de jogo e de cada tipo de conteúdo de jogos. Por essa razão, o estudo de técnicas de PCG para jogos não pode ser conduzido de maneira genérica (DUARTE, 2012). Portanto, é necessário definirmos os principais gêneros de jogos comumente estudados no contexto de PCG.

2.3.1

Ação/Aventura

Jogos do gênero ação/aventura combinam elementos de jogos de ação, como desafios de combate e de destreza, e de jogos de aventura, como a exploração, coleta de itens, interação com o cenário, resolução de puzzles, maior foco no enredo (Video Game History Wiki, 2019). Os níveis de jogos de ação/aventura estão estritamente relacionados aos

puzzles do jogo. Os puzzles aparecem no formato de desafios temporais, cognitivos e de

destreza. Nesse contexto, PCG pode ser aplicado para geração de níveis e puzzles. Eldritch (Minor Key Games, 2013) é um exemplo de jogos do gênero que apresentam níveis 3D

gerados proceduralmente, tal geração é baseada em módulos.

Figura 2.4 – Captura de tela do jogo Eldritch (Minor Key Games, 2013)

Fonte: Procedural Content Generation Wiki, 2013

2.3.2

Plataforma

Plataforma é um subgênero do gênero de ação que é caracterizado por obstáculos e plataformas suspensas. Segundo Smith, Cha e Whitehead (2008) jogos de plataforma possuem plataformas, obstáculos, auxílios de movimento, itens e gatilhos como elementos do jogo. Plataformas são objetos que fazem parte do cenário e permitem a movimentação

(26)

do jogador. Auxílios de movimento são elementos que permitem ou facilitam atravessar um obstáculos ou aumentam a velocidade do progresso do jogador sobre uma fase. Gatilhos são objetos do cenário que alteram o estado do jogo, no Super Mario World (Nintendo, 1991), por exemplo, esse elemento é utilizado para transformar moedas em blocos ou vice-versa. Em jogos do gênero de plataforma é possível aplicar PCG em todos os elementos citados. Spelunky (YU, 2008) é um exemplo de jogo de Plataforma 2D que utiliza geração procedural para gerar seus níveis.

Figura 2.5 – Captura de tela do jogo Spelunky (YU, 2008)

Fonte: eTeknix, 2017

2.3.3

Role-Playing Game

RPG (Role-Playing Game) é um gênero de jogo em que o jogador controla as ações de um ou mais personagens em um mundo fictício com o objetivo de realizar uma missão (HOSCH, 2018). A maioria dos jogos desse gênero teve origem em jogos de RPG de mesa,

como Dungeons & Dragons (HOSCH, 2017). Apesar de a história ter grande importância, a principal característica é a evolução do personagem que se dá através de experiência ou equipamentos. Existe um mundo inteiro a ser explorado nesses jogos, bem como vários

puzzles e inimigos para se envolver em combate, que, por sua vez, pode ser baseado em

turnos ou em tempo real. A vitória nesses jogos se dá ao completar uma série de missões ou ao alcançar a conclusão do enredo central. Em jogos desse gênero, PCG pode ser aplicado para gerar estórias, cenários, itens ou equipamentos. Diablo III (Blizzard, 2012), por exemplo, é um jogo do gênero RPG que utiliza PCG para a geração de mapas.

(27)

Figura 2.6 – Captura de tela do jogo Diablo III (Blizzard, 2012)

Fonte: Xbox Wire, 2014

2.3.4

Roguelike

Roguelike, ou Dungeon Crawler (Exploração de Calabouço), é um subgênero do

gênero RPG. Roguelike é caracterizado, principalmente, por apresentar níveis com cenários no estilo de dungeon crawl (ou simplemente dungeon) o qual deve ser gerado procedural-mente (MCHUGH, 2018). Além disso, tal gênero também apresenta combate baseado em turnos e a morte permanente do personagem do jogador, onde grande parte do progresso do jogador é perdida. Assim como seu gênero pai, jogos do estilo Roguelike apresentam também uma narrativa em um mundo fictício. O gênero foi intitulado dessa maneira devido

Figura 2.7 – Captura de tela do jogo Rogue (TOY; WICHMAN, 1980)

(28)

ao jogo Rogue (TOY; WICHMAN, 1980), mostrado na Figura 2.7), o qual define todos os elementos presentes nesse gênero. Spelunky (YU, 2008) e Diablo III (Blizzard, 2012), mostrados nas Figura 2.5 e Figura 2.6, também apresentam elementos do gênero Roguelike, uma vez que apresentam geração procedural de níveis de dungeons.

2.4

Taxonomia de PCG em jogos

Nesta seção apresentamos a taxonomia das abordagens de geração procedural de conteúdo proposta inicialmente por Togelius et al. (2011) e posteriormente revisada por Togelius, Shaker e Nelson (2016). A taxonomia possui sete tipos de classificações das técnicas de PCG, são elas a necessidade do conteúdo, o momento da geração, o controle da geração, a generalidade, o método de escolha, a forma de geração e a autoria do conteúdo.

2.4.1

Necessidade do conteúdo

PCG pode ser usado tanto para criar conteúdo necessário para que o jogador consiga progredir no jogo quanto para criar conteúdo opcional, isto é, conteúdo que não é essencial para o jogo. A principal diferença entre tais classificações é que, ao contrário do opcional, o necessário sempre deve ser gerado corretamente, pois impacta diretamente na gameplay. Um conteúdo em um jogo é definido como necessário ou opcional pelo game designer. No jogo Super Mario World (Nintendo, 1991), por exemplo, pode-se classificar a estrutura de níveis como conteúdo necessário e as recompensas auxiliares como conteúdo opcional.

2.4.2

Momento da geração

A primeira característica que diferencia as técnicas de PCG é o momento da geração, que pode ser online ou offline. A geração online é realizada durante o gameplay (jogabilidade) e permite que o jogo possua variações infinitas e que o conteúdo gerado se adapte ao estilo de jogo do jogador, o que pode aumentar o replay (rejogabilidade) de um jogo. Exemplos de jogos que utilizam tal abordagem são os jogos do gênero Endless

Runner Game (Jogo de Corrida Sem Fim) como o Temple Run (Imangi Studios, 2011)

que utiliza PCG online para criar fases infinitas. A geração offline, por sua vez, é a geração de conteúdo realizada durante o desenvolvimento do jogo ou antes da sessão de um jogo (durante o carregamento de um nível, por exemplo). Essa abordagem possui uma vantagem útil quando utilizada para geração de conteúdo complexo, como cenários e mapas. Exemplos bastante distintos de jogos que utilizaram tal abordagem foram Far Cry

2 (Ubisoft, 2008) e Moonlighter (Digital Sun, 2018). Far Cry 2 é um FPS (First-Person Shooter, ou Tiro em Primeira Pessoa) que utilizou técnicas de PCG para criação dos

terrenos do jogo (CRECENTE, 2008). Moonlighter é um Roguelike que utiliza geração procedural de cenários de dungeons onde a geração acontece antes da sessão do jogo.

(29)

2.4.3

Controle da geração

Podemos distinguir algoritmos de PCG em relação ao controle da geração, isto é, à medida em que podem ser parametrizados. O controle da geração de conteúdo do PCG pode ser feito utilizando sementes aleatórias ou um conjunto de parâmetros que controlam a geração. No primeiro caso, o controle oferecido abrange apenas uma dimensão de busca (espaço de busca). Um exemplo, é Minecraft (MICROSOFT, 2011), um jogo sandbox (o jogador pode efetuar mudanças no cenário) que gera mundos proceduralmente utilizando sementes aleatórias. No segundo caso, a quantidade de parâmetros define a quantidade de dimensões de busca. Um exemplo desse caso é o trabalho de Shaker, Yannakakis e Togelius (SHAKER; YANNAKAKIS; TOGELIUS, 2010) que utilizou um vetor de características

de conteúdo para gerar níveis de Infinite Mario Bros (WEE, 2008).

2.4.4

Generalidade

Outra classificação de PCG é a generalidade, a qual se refere à quem o conteúdo está sendo gerado, nesse caso, pode ser classificado como genérico ou adaptativo. Na geração genérica o conteúdo é gerado para qualquer perfil de jogador, sem levar em consideração suas características individuais. Por outro lado, a geração adaptativa tenta gerar de conteúdo personalizado a partir de dados coletados do jogador, o qual pode ser o seu comportamento no jogo. O primeiro caso é mais comum na indústria de jogos, já o segundo, apesar de existirem jogos, ainda é necessário realizar estudos para melhorar a qualidade dos conteúdos gerados. Minecraft (MICROSOFT, 2011) é um exemplo de jogo que utiliza geração genérica. Exemplos de jogos que utilizam geração adaptativa são Left 4

Dead (Valve Corporation, 2008) e Galactic Arms Race (Evolutionary Games, 2014). Leaf 4 Dead é um jogo do gênero FPS que utiliza PCG para alterar o estado do jogo, com base

na intensidade emocional do jogador. O Galactic Arms Race utiliza PCG adaptativo para evoluir as armas com base no uso e preferência do jogador.

2.4.5

Método de escolha

Outra distinção que pode ser feita sobre o PCG é em relação à forma de escolha de geração dos conteúdos que pode ser determinístico ou estocástico. O PCG determinístico permite que o conteúdo seja gerado sempre da mesma maneira para a mesma entrada. O PCG estocástico, por sua vez, permite a geração de conteúdos distintos para uma mesma entrada. Elite (BRABEN; BELL, 1984), um jogo do gênero Space Trading, é um exemplo que utiliza PCG determinístico na geração de galáxias e, eventualmente, pode gerar galáxias iguais em diferentes sessões dos jogos.

(30)

2.4.6

Forma de geração

Em termos da forma da geração as técnicas de PCG podem ser classificadas construtivas ou de geração-e-teste. Nas técnicas de PCG de geração construtiva o conteúdo é gerado em uma única passagem. Já as técnicas de geração-e-teste geram um conteúdo e o testam em laços. O teste pode avaliar a viabilidade (se a solução é consistente) e a qualidade da solução alcançada, assim, o algoritmo só para ao atingir uma condição de parada ou quando uma solução aceitável é gerada. Portanto, as técnicas construtivas normalmente são mais rápidas. Técnicas de geração construtiva normalmente são utilizadas para a geração antes de uma sessão de um jogo como, por exemplo, Moonlighter (Digital Sun, 2018). Yavalath (Cameron Browne, 2011) é um jogo de tabuleiro para dois jogadores e utiliza uma técnica de PCG de jogo geração-e-teste para geração de todo o jogo.

2.4.7

Autoria do conteúdo

Por fim, a última classificação de técnicas de PCG é em relação à autoria do conteúdo (ou à interferência durante a geração do conteúdo). A geração automática permite apenas que os game designers informem entradas como forma de guiar a geração do conteúdo. O paradigma de iniciativa mista, por sua vez, permite que um designer ou jogador humano coopere com o algoritmo de PCG para gerar o conteúdo desejado. Todos os jogos já citados na seção da taxonomia se encaixam na classificação de geração automática. No caso da iniciativa mista, existem algumas ferramentas disponíveis que auxiliam o desenvolvimento de jogos. World Machine (World Machine Software, 2008) é um exemplo de sistema de geração de terrenos que permite edição por parte de designers humanos. Esse sistema foi utilizada no desenvolvimento de Far Cry 2 (Ubisoft, 2008). Spore (Eletronic Arts, 2009) é um jogo de estratégia em tempo real que permite o jogador criar uma espécie desde a sua fase celular até a exploração espacial, o jogo utiliza PCG para geração das animações dos movimentos das criaturas a partir das alterações do design do ser vivo feita pelo jogador.

2.5

Algoritmos evolucionários

Os algoritmos evolucionários (AE) são baseadas em populações e são baseadas em teorias da evolução. Os algoritmos genéticos (AG) são algoritmos evolucionários que se baseiam na teoria da evolução neo-Darwiniana, a qual diz que os indivíduos evoluem a partir de mecanismos como reprodução e mutação e apenas os mais fortes sobrevivem (seleção natural). Tais algoritmos simulam a evolução para solucionar problemas de busca. A população evolui de forma a remover os indivíduos com uma baixa pontuação, a qual é calculada por uma função. As técnicas baseadas nessa classe de algoritmos requerem um grande poder computacional. A pesquisa nessa área, se dá de forma experimental, isto é, é necessário testar as várias opções da estrutura da evolução: a forma de representação de

(31)

um indivíduo, a geração da população inicial, as formas possíveis de efetuar a evolução, a forma de seleção de indivíduos que irão evoluir, a forma de calcular a qualidade dos indivíduos, a forma de seleção dos indivíduos que irão sobreviver para a próxima geração e a forma de terminação do algoritmo. Portanto, as pesquisas buscam encontrar a melhor configuração para os problemas os quais pretendem resolver.

Neste trabalho utilizamos uma abordagem derivada de AG, a qual utiliza duas populações de indivíduos onde uma delas guarda os indivíduos viáveis, soluções válidas, e a outra os inviáveis, soluções inválidas. Portanto, nesta seção apresentamos as características deste gênero de algoritmo, tomando como base Reeves (2010), e da sua versão derivada.

2.5.1

Principais termos

Devido à fonte de inspiração, os termos envolvidos nos algoritmos genéticos tam-bém foram inspirados nos seus respectivos termos na biologia. Portanto, nesta seção apresentamos os termos da biologia relacionados à computação evolucionária de forma a fazer um paralelo entre ambas as áreas. Os principais termos, segundo Reeves (2010), são: indivíduo, código genético, cromossomo, gene, alelo, população, fenótipo, genótipo, operadores genéticos, função objetivo.

Indivíduo é um ser que pode evoluir a partir da alteração do seu código genético. Em

computação, é uma solução para o problema que queremos resolver.

Código genético é responsável por guardar as informações acerca das características de

um indivíduo. O código genético é composto por um conjunto de cromossomos.

Cromossomo é uma estrutura de DNA que carrega genes. Em computação, um

cromos-somo é uma configuração de solução para o problema. No contexto dos algoritmos evolucionários, o código genético de um indivíduo é simplificado, de forma a ser composto por apenas um cromossomo.

Gene é uma parte de um cromossomo que define uma característica do indivíduo. Em

computação, é um atributo de um objeto (cromossomo).

Alelo é um valor de um gene. Em computação, é um valor de um atributo de um objeto. População é um conjunto de indivíduos (cromossomos).

Fenótipo é a característica observável de um indivíduo.

Genótipo é a parte do cromossomo que determina um fenótipo.

Operadores genéticos selecionam e aplicam alterações em um indivíduo ou mais

indi-víduos de forma aleatória. Os operadores genéticos são os responsáveis pela evolução dos indivíduos.

(32)

Função objetivo (função de fitness) é a responsável por avaliar, de maneira objetiva, a

adequação do indivíduo ao meio. Tal função está diretamente relacionada com à sua chance de sobrevivência (“seleção natural”). Em computação, a função de fitness calcula a qualidade da solução representada por um cromossomo. Essa função deve ser otimizada para o problema computacional o qual o algoritmo genético se propõe a solucionar.

2.5.2

Estrutura de evolução

Na computação evolucionária, no contexto de algoritmos genéticos, as principais forças evolutionárias (os operadores genéticos), de acordo com a proposta de Darwin, são:

seleção, que possui dois níveis, um efetua a escolha de um cromossomo para realizar

a reprodução com base em alguns critérios utilizando aleatoriedade, e o outro efetua a seleção dos cromossomos sobreviventes; mutação, efetua a alteração de um gene de um cromossomo com base nos alelos disponíveis; crossover, efetua o cruzamento entre dois cromossomos baseado em um ou mais pontos de cruzamento. A estrutura dos algoritmos é baseadas na escolha da forma de seleção e em como a mutação e crossover vão ser efetuados.

Em relação à seleção de cromossomos, existem algumas abordagens, dentre as quais destacamos: a seleção por roleta proporcional e a seleção por torneio. A seleção por roleta proporcional seleciona um cromossomo aleatoriamente levando em consideração a qualidade dos mesmos de forma que, quanto maior a qualidade, maior a chance de o cromossomo ser selecionado. A seleção por torneio simula um torneio entre os cromossomos de uma população, neste caso, é necessário escolher, de forma aleatória, uma quantidade de cromossomos que irá participar do torneio, omelhor deles é selecionado. Vale ressaltar que, no segundo caso, a aleatoriedade se dá em uma distribuição uniforme. A Figura 2.8 apresenta duas imagens que demonstram como cada uma das seleções descritas é realizada.

Figura 2.8 – Tipos de seleção de cromossomos (Ii: indivíduo)

(a) Seleção por roleta proporcional

0.00 0.375 0.5 0.75 I1 I2 I3 I4

(b) Seleção por torneio

I1 I2 I3 I4

(33)

A mutação, como já dissemos, é simplesmente a alteração de um dos genes baseado nos alelos disponíveis para os respectivos genes. Tal operador genético possibilita a escolha das regras de transição entre alelos e levando probabilidades diferentes de cada regra ser aplicada. A Figura 2.9 apresenta um exemplo de aplicação da mutação. O crossover, por sua vez, possui variações, uma vez que existem várias formas de cruzamento de genes de dois pais. Para efetuar um cruzamento é necessário escolher os pontos os quais definem o cruzamento e permutar os trechos do cromossomo sem repetir os pais. A Figura 2.10 apresenta um exemplo de como funciona o crossover de um ponto (1-point crossover).

Figura 2.9 – Exemplo de mutação (Ii: indivíduo)

I1= 1 0 1 0 1 0 1 0 I2= 1 0 1 1 1 0 1 0

Fonte: autor

Figura 2.10 – Exemplo de crossover com um ponto (Ii: indivíduo)

I1= I2= 1 0 1 0 1 0 1 0 1 1 1 1 0 0 0 0 p I3= I4= 1 0 1 1 0 0 0 0 1 1 1 0 1 0 1 0 Fonte: autor

Algoritmo 2.1 Estrutura genérica de um algoritmo genético função AG()

pop ← GerarPopulacaoInicial()

enquanto condição de parada não for atingida faça

desc ← vazio

enquantonão atingir certa quantidade de descendentes faça se a condição de crossover for satisfeita então

desc ← Adiciona(Crossover(SelecionarPais(pop)))

fim se

se a condição de mutação for satisfeita então

desc ← Adiciona(Mutacao(SelecionarPai(pop)))

fim se

AvaliaQualidadeDaDecendencia(desc)

fim enquanto

pop ← SelecionaNovaPopulacao(pop, desc)

fim enquanto

retorna MelhorIndividuo(pop) fim função

(34)

Existem duas estratégias principais de condição de crossover, são elas: crossover-E-mutação e crossover-OU-mutação. No primeiro caso, o crossover é aplicado nos pais selecionados e a mutação é aplicada nos descendentes gerados pelo crossover. No segundo, ambas as operações são aplicadas apenas nos pais. A escolha entre as operações se dá a partir de uma regra de aleatoriedade baseado em uma distribuição uniforme. A estrutura de um algoritmo genético se dá com base na organização e na porcentagem de chances em que uma operação pode ser executada. O Algoritmo 2.1 apresenta uma estrutura geral de um algoritmo genético.

2.5.3

Abordagem FI-2pop GA

O AG tradicional, pode apresentar, para alguns problemas, uma baixa diversidade da população, uma vez que os melhores indivíduos podem possuir uma grande semelhança. Tal condição pode impedir o AG de explorar outros pontos do espaço de busca, conse-quentemente pode desviar da melhor solução global. A fim de aumentar a diversidade e contornar desse problema, Kimbrough et. al (2005) apresentou uma proposta de um algoritmo genético que evolui duas populações, uma de indivíduos viáveis e outra com indivíduos inviáveis. Nessa abordagem, as operações genéticas são realizadas sobre ambas as populações permitindo, assim, que indivíduos antes inviáveis evoluam e se tornem viáveis, o que pode ajudar na exploração do espaço de busca.

2.6

Conclusão

Neste capítulo apresentamos o embasamento teórico que serviu como base para entender melhor a área de geração procedural de conteúdo, as principais mecânicas envolvidas nos níveis, os gêneros de jogos que são mais comumente estudados, a classificação das técnicas da área e a programação evolucionária. Tal embasamento contribuiu para a realização do estudo sistemático e, portanto, para a classificação em relação aos gêneros de jogos e à taxonomia das técnicas de PCG e análise dos trabalhos selecionados, os quais são apresentados no capítulo a seguir.

(35)

Capítulo 3

Estudo sistemático da literatura

Neste capítulo, relatamos o processo e os resultados de um estudo sistemático da literatura de geração procedural de níveis de jogos do gênero Dungeon Crawler. Este estudo segue as diretrizes definidas pelo modelo de Itens de Relatório Preferidos para Revisões Sistemáticas e Meta-Análises, ou PRISMA do inglês Preferred Reporting Items

for Systematic Reviews and Meta-Analyses, proposto por Moher et al. (2009). O estudo

tem como objetivo a compreensão do estado da arte da área de geração procedural de

dungeons e a identificação problemas em aberto nesse contexto. Ao final deste capítulo

apresentamos o problema que atacamos em nosso trabalho.

3.1

Métodos

As diretrizes do PRISMA definem três passos principais para a realização de um estudo sistemático: a busca literária, a seleção de artigos elegíveis e a extração e o resumo dos artigos. As próximas seções definem os critérios sobre os quais o estudo foi realizado, em relação à seleção (elegibilidade e exclusão) de artigos, apresenta as fontes e quais tipos de dados foram coletados.

3.1.1

Critério de elegibilidade

Aplicamos, em cada um dos artigos encontrados, um conjunto de critérios para definir quais seriam eleitos para o estudo. Em seguida, um critério de exclusão foi aplicado para eliminar os falsos positivos. Esse passo é importante, pois limita os resultados da busca para um conjunto de artigos relevantes da área. Portanto, adotamos os seguintes critérios de elegibilidade (CE) e o seguinte critério de exclusão (CX) para descarte dos resultados falso positivos:

• CE1: Artigos escritos em Inglês; • CE2: Artigos revisados por pares;

• CE3: Artigos de congressos ou revistas científicas;

• CE4: Artigos cujo título e resumo deixam claro que o foco é geração de níveis de

dungeons ou labirintos.

• CX1: O título e o resumo não deixam claro que o foco principal é a geração procedural de níveis de dungeons ou labirintos.

(36)

O critério de seleção que adotamos é focado em geração procedural de níveis de jogos do gênero Dungeon Crawler ou de labirintos. Consideramos a geração de labirintos devido à sua proximidade com o gênero de dungeons, que são ambientes labirínticos. Dessa forma, acreditamos que trabalhos de geração de labirintos podem contribuir de algum modo com a geração de dungeons. Consideramos também os artigos que propuseram soluções genéricas desde que utilizassem dungeons ou labirintos como estudo de caso.

3.1.2

Fonte de informação

Os motores de busca que utilizamos como base para o processo de busca foram das bibliotecas digitais da ACM e da IEEE Xplore e da Scopus, que possui artigos da Springer, Elsevier e das duas bibliotecas digitais já mencionadas. Todas as bibliotecas digitais fornecem artigos revisados por pares de revistas científicas e conferências. Os motores de busca e seus respectivos endereços são listados na Tabela 3.1.

Tabela 3.1 – Fontes de informação

Fontes URL

ACM <https://dl.acm.org/> IEEE Xplore <https://ieeexplore.ieee.org/> Scopus <https://www.scopus.com/>

Fonte: autor

3.1.3

Busca

Definimos os termos de busca selecionando as palavras-chave relacionadas à geração procedural de conteúdo, ao tipo de nível gerado (dungeon ou labirinto) e jogos. Dividimos os termos em três grupos, onde cada grupo contém palavras que são sinônimos ou têm o mesmo significado semântico no campo de PCG. Uma das palavras-chave abrange dois grupos, portanto pertence a ambos. As palavras-chave foram definidas em Inglês devido às fontes de informação. A Tabela 3.2 apresenta cada grupo e os termos usados na busca.

Tabela 3.2 – Termos de busca

Grupo 1 (PCG) Grupo 2 (Nível) Grupo 3 (Jogo)

PCG Dungeon Game

Procedural Content Generation Dungeon Crawl Video Game Procedural Generation Maze

Procedural Generated Content Labyrinth Procedural Level Generation

Level Generation Automatic Generation

Procedural Dungeon Generation Fonte: autor

(37)

Definimos a string de busca a partir da conexão de cada palavra dentro de cada grupo com um operador booleano OR e, em seguida, combinando os grupos conectando os termos de cada um com o operador AND. Dentro da operação do primeiro e segundo grupo conectamos, com o operador OR, a palavra-chave “Procedural Dungeon Generation” devido, como já foi dito, a sua definição que engloba tanto a área de PCG quanto o tipo de conteúdo a ser gerado (dungeon). A string de busca resultante foi, portanto:

Figura 3.1 – String de busca

(((PCG OR “Procedural Content Generation” OR “Procedural Generation” OR “Procedural Generated Content” OR “Procedural Level Generation” OR “Level Generation” OR “Automatic Generation”) AND (Labyrinth OR Maze OR Dungeon

OR “Dungeon Crawl”)) OR (“Procedural Dungeon Generation”)) AND (Game OR “Video Game”)

Fonte: autor

A Figura 3.2 apresenta um diagrama que mostra, de forma estruturada, as palavras-chaves da string de busca permitindo, assim, uma melhor visualização da fórmula.

Figura 3.2 – Fórmula de busca convertido em um diagrama

AND

OR

PCG, “Procedural Content Generation”, “Pro-cedural Generation”, “Pro“Pro-cedural Generated

Content”, “Procedural Level Generation”, “Level Generation”, “Automatic Generation”

OR

Labyrinth, Maze, Dungeon, “Dungeon Crawl”

OR

Game, “Video Game”

OR

“Procedural Dungeon Generation”

Fonte: autor

Realizamos a busca na literatura de forma manual utilizando a string de busca dentro dos mecanismos de pesquisa mostrados na Tabela 3.1, configurados para pesquisar os termos no título, resumo, palavras-chave e o conteúdo dos artigos. A busca foi realizada no período de 11 a 14 de setembro de 2018 e refeita no período de 17 a 18 de outubro de 2018 em cada um dos motores de busca. A necessidade de refazer o processo se deu devido à uma correção da string de busca parra adquirir resultados aptos e não encontrados na primeira realização e, consequente, alguns novos resultados.

(38)

3.1.4

Dados coletados

Ao finalizar o processo de seleção, avaliamos cada artigo e extraímos os dados relevantes como parte do estágio de síntese. Os dados extraídos foram os seguintes: (1) disponibilidade de algoritmo ou pseudo-algoritmo; (2) características do jogo em relação à dimensão do conteúdo gerado e ao gênero do jogo; (3) aspectos técnicos do trabalho em relação à estratégia de solução e à taxonomia de PCG (momento da geração, controle da geração, generalidade, método de escolha, forma de geração, autoria do conteúdo).

A taxonomia proposta por Togelius, Shaker e Nelson (2016), descrita na Seção 2.4, apresenta também a classificação de necessidade do conteúdo. Contudo, desconsideramos esta classe nesse estudo, pois na pesquisa científica é mais interessante haver as restrições impostas pelo conteúdo necessário, que são garantir a consistência e qualidade do conteúdo gerado. Portanto, nenhum dos trabalhos seria classificado nessa categoria.

3.2

Resultados

As buscas nos três motores de busca (biblioteca digital da ACM, IEEE Xplore e Scopus) resultaram em um total de 211 artigos potencialmente relevantes. Após a revisão do título e resumo, 180 foram descartados, resultando em 31 artigos. A razão da grande quantidade de falsos positivos se deu pelo fato de que realizamos a busca de artigos de forma a considerar tanto os metadados quanto o conteúdo dos artigos. Portanto, os artigos que apenas citaram algumas das palavras-chave também apareceram na busca. O resumo desse processo é ilustrado no diagrama de fluxo PRISMA da Figura 3.3.

Figura 3.3 – Diagrama de fluxo do PRISMA

ACM Digital Libray

N = 14

IEEE Xplore

N = 114

Scopus

N = 120

Vista de título e resumo

N = 248 Remoção de duplicatas N = 37 Vista do conteúdo N = 211 Critérios de exclusão N = 180 Resultado final N = 31 Fonte: autor

(39)

3.2.1

Artigos selecionados

A Tabela 3.3 apresenta os dados acerca da dimensão do nível, o gênero do jogo para o qual o conteúdo é gerado, a estratégia de solução para gerar o conteúdo e se o artigo apresenta algum pseudo-algoritmo para facilitar a reprodutibilidade do experimento. As estratégias de solução encontradas foram: algoritmos evolutionários (AE), algoritmos genéticos (AG), algoritmos genéticos com autômatos celulares (AG/AC), outros algoritmos de busca (AB), gramáticas generativas (GG), algoritmos construtivos (AC), colônia de formigas (CF). Algumas abordagens utilizaram AnsProlog, as classificamos como AB. Tabela 3.3 – Classificação dos artigos em ordem cronológica de publicação de acordo com

dimensão, gênero, estratégia de solução e se possui ou não pseudo-algoritmo

Artigo Dimensão Gênero Estratégia

de Solução Pseudo-código (ASHLOCK; LEE; MCGUINNESS, 2011a) 2D - AE

-(MCGUINNESS; ASHLOCK, 2011) 2D - AE

-(ASHLOCK; LEE; MCGUINNESS, 2011b) 2D - AE

-(VALTCHANOV; BROWN, 2012) 2D - AG

-(TOGELIUS; JUSTINUSSEN; HARTZEN, 2012) 2D Roguelike AB Sim (LINDEN; LOPES; BIDARRA, 2013) 3D RPG de Aventura GG Sim (ASHLOCK; MCGUINNESS, 2014) 2D - AE Sim (SANTAMARIA-IBIRIKA et al., 2014) 2D e 3D - AC Sim (SMITH; BRYSON, 2014) 2D Roguelike AB Sim

(KIM; CRAWFIS, 2015) 2D - AB

-(ASHLOCK, 2015) 2D - AE

-(PECH et al., 2015) 2D - AG/AC

-(BAGHDADI et al., 2015) 2D Plataforma 2D AG

-(BAE et al., 2015) 2D - AC Sim

(FORSYTH, 2016) - Roguelike AC

-(POŁAP, 2016) 2D - CF Sim

(PECH et al., 2016) 2D - AG/AC

-(LAVENDER; THOMPSON, 2017) 2D Ação Aventura GG

-(HELL; CLAY; ELAARAG, 2017) - - AC

-(LIAPIS, 2017) 2D - AG

-(BALDWIN et al., 2017a) 2D - AG

-(BALDWIN et al., 2017b) 2D - AG

-(BARON, 2017) (5 algoritmos) 2D e 3D - AC -(HILLIARD; SALIS; ELAARAG, 2017)

(2 algoritmos) 2D - AC

-(KARAVOLOS; LIAPIS; YANNAKAKIS, 2016) 3D RPG de Aventura AE -(ADAMS; LOUIS, 2017) 2D Maze Running AG/AC -(SMITH; PADGET; VIDLER, 2018) 2D - AB

-(ALVAREZ et al., 2018) 2D - AG

-(SAMPAIO et al., 2017) 2D - AC

-(PEREIRA; PRADO; TOLEDO, 2018) 2D - AE

-(HENDRAWAN, 2018) 2D - AC

Referências

Documentos relacionados

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

Se você vai para o mundo da fantasia e não está consciente de que está lá, você está se alienando da realidade (fugindo da realidade), você não está no aqui e

servidores, software, equipamento de rede, etc, clientes da IaaS essencialmente alugam estes recursos como um serviço terceirizado completo...

Como eles não são caracteres que possam ser impressos normalmente com a função print(), então utilizamos alguns comandos simples para utilizá-los em modo texto 2.. Outros

Neste capítulo, será apresentada a Gestão Pública no município de Telêmaco Borba e a Instituição Privada de Ensino, onde será descrito como ocorre à relação entre

Este trabalho de pesquisa tem por objetivo levar à comunidade escolar uma discussão acerca do tema abordado: “A construção da identidade negra dos alunos da Escola Estadual de

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

Para cavernas da Serra do Ramalho, região localizada no sudoeste da Bahia e parte da Bacia do Médio São Francisco (Figura 6 - localização), foram registrados