• Nenhum resultado encontrado

Vídeo jogos evolutivos

N/A
N/A
Protected

Academic year: 2021

Share "Vídeo jogos evolutivos"

Copied!
163
0
0

Texto

(1)

U

NIVERSIDADE DE

L

ISBOA

Faculdade de Ciências

Departamento de Informática

VIDEO JOGOS EVOLUTIVOS

Rui Guilherme Mendes Esteves Nogueira

PROJECTO

MESTRADO EM ENGENHARIA INFORMÁTICA

Especialização em Arquitetura, Sistemas e Redes de Computadores

(2)
(3)

U

NIVERSIDADE DE

L

ISBOA

Faculdade de Ciências

Departamento de Informática

VIDEO JOGOS EVOLUTIVOS

Rui Guilherme Mendes Esteves Nogueira

PROJECTO

MESTRADO EM ENGENHARIA INFORMÁTICA

Especialização em Arquitetura, Sistemas e Redes de Computadores

Trabalho orientado pelo Prof. Doutor Luís Manuel Ferreira Fernandes Moniz e pelo Prof. Doutor Paulo Jorge Cunha Vaz Dias Urbano

(4)
(5)

Agradecimentos

Em primeiro lugar, gostaria de agradecer aos melhores Pais do mundo, que com muito amor, esforço e dedicação sempre me mantiveram no bom caminho (a bem ou a mal), sem que nunca nada me faltasse. Agradeço aos meus dois irmãos, Raquel e David que sempre foram uma inspiração a seguir e são o motivo do meu maior orgulho. Aos meus tios, que nunca conseguirei agradecer por tudo o que fizeram por mim. Aos meus avós, que nunca deixaram e nunca deixaram de estar presentes na minha vida.

Quero agradecer ao meu amigo e colega João Gomes, que não só fez a loucura de aceitar o meu desafio de vir fazer o mestrado comigo, como me acompanhou durante este longo e tortuoso caminho, e que apesar dos brutais sacrifícios que tivemos de fazer nunca vacilou. Nunca teria chegado até aqui sem o teu apoio e companheirismo.

Agradeço aos meus dois orientadores Prof. Luís Moniz e ao Prof. Paulo Urbano por me orientarem neste projeto e se mostrarem sempre disponíveis para ajudar e contribuir para o sucesso deste. Em especial, ao Prof. Luís Moniz, que sempre que precisei encontrei uma porta aberta e uma disponibilidade e apoio louváveis.

Ao meu grande amigo, colega do “JACK ASS” e parceiro do crime, Hélder Gil, pela sua amizade ao longo destes anos todos.

Agradeço aos meus amigos de faculdade, que durante a licenciatura colaboraram comigo no estudo e na execução de dezenas de projetos e noitadas loucas de estudo. Agradeço em particular ao Alentejano, Gadelhudo, Partnere, Gordo, Mais velho, Pato, Diogo Simões, Eduardo, Reis e Rui Teixeira. A vossa amizade e o companheirismo que construímos durante este tempo foram muito importantes para mim e que nunca irei esquecer. A dedicação e espírito de grupo fantástico que empregamos em tudo o que fizemos, apoiando-nos e motivando-nos uns aos outros, resultou num percurso académico exemplar à custa também de muito esforço e dedicação.

Aos meus colegas de trabalho que me apoiaram e me ajudaram todos os dias da semana, todas as semanas do mês e todos os meses do ano…

Por fim, mas de maneira nenhuma menos importante, pelo contrário, um muito obrigado à minha amiga, confidente, amante, paixão e namorada Marlene de Jesus. Que

(6)

devido à minha falta de tempo, sacrificou-se e me aturou ao longo destes anos todos. Nunca poderei compensar o teu apoio, dedicação e sorriso, que nunca me deixaram fraquejar. Pronto…também agradeço aos gatos…Mojo Jojo Smeagol e Leia Chacha - As Bestas da Destruição!

A todos estes e aos demais que de alguma forma direta ou indireta possam ter contribuído para o meu sucesso, o meu mais sincero obrigado!

(7)
(8)

A todos aqueles que não são especialmente dotados ou talentosos, mas que possuem algo bem mais valioso, perseverança e força de vontade…

(9)
(10)

i

Resumo

Num jogo de computador, o requisito mais básico de um agente artificial é ser capaz de navegar no ambiente do jogo. O sistema de navegação é responsável por fornecer o melhor caminho entre dois pontos no ambiente e pela movimentação do agente através do caminho com a possibilidade de correção e redefinição do mesmo. Este trabalho propõe um processo de geração automática da representação espacial de ambientes de jogo dinâmicos suportados em grelha, procura do melhor caminho e movimentação do agente artificial ao longo do caminho

Palavras-chave: Jogos de vídeo, geração processual de conteúdo, representação do

ambiente, grafos de navegação, grafos em grelha, quadtree, algoritmos de procura A*, algoritmos de procura Fringe Search, inteligência artificial.

(11)
(12)

iii

Abstract

In a computer game, the most basic requirement of a non-player character is to be able to navigate through the game environment. The navigation system has to provide the best path between to points in the environment, the actual movement through the path and deal with eventual correction and redefinition of the path. Our proposal is to design a process to generate a grid supported by the spatial representation of a dynamic environment, search for the best path, and construct the movement sequence of a NPC over the path.

Keywords: Video games, procedural content generation, environment representation,

navigation graphs, graphs based on grid, quadtree, search algorithms A*, Fringe search, artificial intelligence.

(13)
(14)

v

Conteúdo

Capítulo 1 Introdução... 1 1.1 Motivação ... 1 1.2 Objetivos ... 2 1.3 Contribuições ... 3 1.4 Enquadramento institucional ... 4 1.5 Organização do documento ... 4 1.6 Sumário ... 5

Capítulo 2 Trabalho relacionado ... 6

2.1 Geração processual de conteúdo... 6

2.1.1 Vantagens ... 7 2.1.2 Desvantagens ... 8 2.1.3 Aproximações híbridas ... 8 2.1.4 Características ... 9 2.2 Sistema de navegação ... 12 2.2.1 Locomoção ... 12 2.2.2 Representação do ambiente ... 13

2.2.3 Algoritmos de procura em grafos ... 30

2.3 Sumário ... 35

Capítulo 3 Metodologia de investigação ... 38

3.1 Delineamento do estudo ... 38

3.1.1 Questões e hipóteses de investigação ... 38

3.2 Material e Métodos ... 40 3.2.1 Caracterização da amostra ... 40 3.2.2 Instrumentos ... 42 3.2.3 Procedimentos ... 51 3.2.4 Metodologia estatística ... 52 3.3 Sumário ... 52

(15)

vi

Capítulo 4 Trabalho realizado ... 53

4.1 Análise do problema ... 53

4.1.1 Geração automática e em tempo de execução de grafos ... 54

4.1.2 Ambientes de jogo com dimensões diferentes ... 54

4.1.3 Múltiplos agentes ... 55

4.1.4 Diferentes tipos de unidades ... 56

4.1.5 Deteção de obstáculos dinâmicos ... 56

4.2 Desenho da solução ... 57

4.2.1 Sistema de navegação... 57

4.3 Implementação... 60

4.3.1 Sistema de navegação... 61

4.3.2 Ferramenta de prova de conceito ... 87

4.3.3 Ferramenta de avaliação ... 89

4.4 Sumário ... 92

Capítulo 5 Resultados ... 93

5.1 Apresentação de resultados ... 94

5.1.1 Inicialização da camada de representação do ambiente ... 94

5.1.2 Inicialização da camada de procura de caminhos ... 97

5.1.3 Adição de objetos antes do início do jogo ... 101

5.1.4 Tamanho do espaço de pesquisa ... 104

5.1.5 Quantização ... 105 5.1.6 Localização... 109 5.1.7 Procura de caminho ... 111 5.1.8 Conexão de vizinhos ... 124 5.1.9 Adição de objeto... 127 5.2 Sumário ... 128

Capítulo 6 Discussão de resultados e conclusão ... 130

6.1 Discussão de resultados ... 130

(16)

vii

6.3 Limitações ... 135 6.4 Trabalho futuro ... 136 Bibliografia ... 137

(17)
(18)

ix

Lista de Figuras

Ilustração 1 - Sistema de navegação e as suas componentes. ... 12

Ilustração 2 - Ambiente de jogo base. ... 15

Ilustração 3 - Grafo de navegação baseado em pontos de passagem. ... 17

Ilustração 4 - Grafo de navegação baseado em pontos de visibilidade. ... 19

Ilustração 5 - Grafo de navegação baseado em pontos de visibilidade com geometria expandida. ... 20

Ilustração 6 - Geometria das conexões das células em grelha. ... 21

Ilustração 7 - Grafo de navegação baseado em grelha com células quadradas. ... 22

Ilustração 8 - Grafo de navegação baseado em grelha com células hexagonais. ... 22

Ilustração 9 - Quadrantes e quadtree correspondente. ... 24

Ilustração 10 - Grafo de navegação baseado em quadtree. ... 26

Ilustração 11 - Grafo de navegação baseado em quadtree inválido. ... 27

Ilustração 12 - Ambiente de jogo subdividido em polígonos navegáveis. ... 28

Ilustração 13 - Grafo de navegação baseado em malha de navegação. ... 28

Ilustração 14 - Algoritmo de procura Dijkstra's. ... 32

Ilustração 15 - Algoritmo de procura melhor-primeiro. ... 32

Ilustração 17 - Algoritmo de procura A*. ... 33

Ilustração 18 - Logotipo do Blender. ... 43

Ilustração 19 - Logotipo do jMonkey Engine ... 44

Ilustração 19 - Logotipo do Ogre. ... 44

Ilustração 20 - Logotipo do Panda3D. ... 45

Ilustração 21 - Logotipo do Torque Game Engine. ... 46

Ilustração 22 - Logotipo do Unreal Development Kit. ... 46

Ilustração 23 - Logotipo do Unity. ... 47

Ilustração 24 - Menu de configuração. ... 50

Ilustração 26 - Arquitetura subdividida em três módulos distintos. ... 61

Ilustração 26- Exemplo de abstração multidimensional da grelha e atribuição de Id's para cada célula. ... 71

Ilustração 27 - Exemplo de abstração linear da grelha e atribuição de Id's para cada célula. ... 72

Ilustração 28 - Determinação de vizinhos do nó (i, j). ... 73

Ilustração 29 - Disposição dos vizinhos do nó (i, j) num array linear. ... 73

Ilustração 31 – Conversão do número Morton (Id) na coordenada x e z ... 77

Ilustração 32 - Simulação de 600 NPC’s com esquema de divisão baseado em Grelha e algoritmo de procura A*. ... 89

Ilustração 33 - Simulação de 2 NPC’s com o esquema de divisão baseado em quadtree e algoritmo de procura Fringe Search. ... 89

Ilustração 34 - Média do tempo de processamento na inicialização da camada de representação do ambiente: Esquema de divisão Vs. Dimensão do ambiente. ... 95

Ilustração 35 - Gráfico do consumo de memória na inicialização da camada de representação do ambiente: Esquema de divisão Vs. Dimensão do ambiente. ... 96

Ilustração 36 - Gráfico do tempo de processamento na inicialização da camada do algoritmo de procura em grafos: Algoritmo de procura em grafos Vs. Dimensão do ambiente. ... 98

Ilustração 37 - Gráfico do tempo de processamento na inicialização da camada do algoritmo de procura em grafos no modo de execução com threadpool: Algoritmo de procura em grafos Vs. Dimensão do ambiente. ... 100

Ilustração 38 – Gráfico da média do consumo do tempo de processamento na adição de objetos antes da execução do jogo: Esquema de divisão Vs. Dimensão do ambiente. ... 102

Ilustração 39 - Gráfico da média do consumo do tempo de processamento na adição de objetos antes da execução do jogo no modo de execução com threadpool: Esquema de divisão Vs. Dimensão do ambiente. ... 103

Ilustração 40 - Gráfico da média do tamanho do espaço de procura: Esquema de divisão Vs. Dimensão do ambiente. ... 105

Ilustração 41 - Gráfico da média do tempo de processamento na localização: Esquema de divisão Vs. Dimensão do ambiente. ... 106

Ilustração 42 - Gráfico da média do tempo de processamento na localização: Esquema de divisão Vs. Densidade de objetos. ... 107

Ilustração 43 - Gráfico da média do tempo de processamento na quantização no modo de execução com threadpool: Esquema de divisão Vs. Dimensão do ambiente... 108

(19)

x

Ilustração 44 - Gráfico da média do tempo de processamento na quantização no modo de execução com

threadpool: Esquema de divisão Vs. Densidade de objetos. ... 109

Ilustração 45 - Gráfico da média do tempo de processamento na localização: Esquema de divisão Vs. Dimensão do ambiente. ... 110 Ilustração 46 - Gráfico da média do tempo de processamento na localização no modo de execução com

threadpool: Esquema de divisão Vs. Dimensão do ambiente... 111

Ilustração 47 - Gráfico da média dos resultados do nº de nos visitados na procura de caminho: Esquema de divisão Vs. Dimensão do ambiente. ... 113 Ilustração 48 - Gráfico da média dos resultados do nº de nos visitados na procura de caminho: Algoritmo de procura Vs. Dimensão do ambiente. ... 113 Ilustração 49 - Gráfico da média dos resultados do nº de nos visitados na procura de caminho: Algoritmo de procura Vs. Densidade de objetos. ... 114 Ilustração 50 – Gráfico da média dos resultados do nº de nós expandidos na procura de caminho:

Esquema de divisão Vs. Dimensão do ambiente. ... 116 Ilustração 51 - Média dos resultados do nº de nós expandidos na procura de caminho: Algoritmo de procura Vs. Dimensão do ambiente. ... 116 Ilustração 52- Gráfico da média do tempo de processamento na procura de caminho no modo de

execução: Esquema de divisão Vs. Dimensão do ambiente. ... 118 Ilustração 53 - Gráfico da média do tempo de processamento na procura de caminho: Esquema de divisão Vs. Densidade de objetos. ... 119 Ilustração 54 – Gráfico da média dos resultados do tempo de processamento na procura de caminho: Algoritmo de procura Vs. Dimensão do ambiente. ... 120 Ilustração 55 – Gráfico da média dos resultados do tempo de procura de caminho: Algoritmo de procura Vs. Densidade de objetos. ... 120 Ilustração 56 - Gráfico da média dos resultados do tempo de processamento na procura de caminho: Esquema de divisão Vs. Dimensão do ambiente no modo de execução com threadpool. ... 122 Ilustração 57 - Gráfico da média dos resultados do tempo de procura de caminho: Esquema de divisão Vs. Densidade de objetos no modo de execução com threadpool. ... 122 Ilustração 58 - Gráfio da média dos resultados do tempo de processamento na procura de caminho no modo de execução com threadpool: Algoritmo de procura Vs. Dimensão do ambiente. ... 123 Ilustração 59 - Gráfico da média dos resultados do tempo de procura de caminho no modo de execução com threadpool: Algoritmo de procura Vs. Densidade de objetos. ... 124 Ilustração 60 - Gráfico da média do tempo de processamento da conexão de vizinhos: Esquema de divisão Vs. Dimensão do ambiente. ... 125 Ilustração 61 - Gráfico da média do tempo de processamento da conexão de vizinhos no modo de execução com threadpool: Esquema de divisão Vs. Dimensão do ambiente. ... 126

(20)
(21)

xii

Lista de Tabelas

Tabela 1 - Esquema de divisão de grafos de navegação baseados pontos de visibilidade. ... 19

Tabela 2 - Esquema de divisão de grafos de navegação baseados em grelha. ... 23

Tabela 3 - Esquema de divisão de grafos de navegação baseados em grelha. ... 26

Tabela 4 - Esquema de divisão de grafos de navegação baseados em malha de navegação. ... 29

Tabela 5 - Tamanho mínimo da célula e número máximo de nós com base no tamanho do ambiente. ... 40

Tabela 6 - Tamanho do ambiente e densidade de objetos no ambiente de jogo. ... 41

Tabela 7 - Objetivos vs. tipo de esquema de divisão. ... 59

Tabela 8 - Lista de atributos físicos de um NPC usados pela camada de locomoção. ... 62

Tabela 9 - Lista de atributos de procura de caminho de um NPC usados pela camada de locomoção. ... 63

Tabela 10 - Lista de atributos comportamentais de um NPC usados pela camada de locomoção. ... 63

Tabela 11 - Lista de variáveis auxiliares usadas na camada locomoção. ... 64

Tabela 12 - Pseudo-código da rotina de pedido de resolução de caminho da camada locomoção. ... 65

Tabela 13 - Pseudo-código do ouvinte de eventos de resposta de caminhos da camada locomoção. ... 66

Tabela 14 - Pseudo-código da rotina de determinação do próximo movimento do NPC. ... 67

Tabela 15 - Métodos suportados pelo gestor da camada de representação do ambiente. ... 68

Tabela 16 - Quadrantes e código de orientação. ... 77

Tabela 17 - Lista de atributos do gestor da camada de algoritmos de procura em grafos. ... 79

Tabela 18 - Lista de métodos do gestor da camada de algoritmos de procura em grafos. ... 80

Tabela 19 - Lista de atributos do algoritmo de procura em grafos genérico... 81

Tabela 20 - Lista de métodos do algoritmo de procura em grafos genérico. ... 81

Tabela 21 - Lista de atributos da estrutura de pedido de resolução de caminho. ... 82

Tabela 22 - Lista de atributos da estrutura de resposta de resolução de caminho. ... 82

Tabela 23 - Pseudo-código do método FindPath para o algoritmo de procura em grafos A* ... 84

Tabela 24 - Pseudo-código do método DoIteration para o algoritmo de procura em grafos A* ... 84

Tabela 25 - Pseudo-código do método FindPath para o algoritmo de procura em grafos Fringe Search* 85 Tabela 26 - Pseudo-código do método DoIteration para o algoritmo de procura em grafos Fringe Search* ... 87

Tabela 27 - Parâmetros que compõe uma entrada do ficheiro XML. ... 90

Tabela 28 - Operações suportadas pela ferramenta de avaliação... 91

Tabela 29 - Especificação de ambiente de testes. ... 93

Tabela 30 - Resultados do tempo de processamento na inicialização da camada de representação do ambiente. ... 94

Tabela 31 - Média do tempo de processamento na inicialização da camada de representação do ambiente: Esquema de divisão Vs. Dimensão do ambiente. ... 94

Tabela 32 - Resultados do consumo de memória na inicialização da camada de representação do ambiente. ... 95

Tabela 33 - Média do consumo de memória na inicialização da camada de representação do ambiente: Esquema de divisão Vs. Dimensão do ambiente. ... 95

Tabela 34 - Resumo dos resultados da inicialização da camada de representação do ambiente no modo de execução com threadpool: Esquema de divisão Vs. Dimensão do ambiente. ... 96

Tabela 35 - Resultados do tempo de processamento na inicialização da camada de procura de caminhos. ... 97

Tabela 36 - Média do tempo de processamento na inicialização camada de procura de caminhos: Algoritmo de procura em grafos Vs. Dimensão do ambiente. ... 97

Tabela 37 - Resultados do consumo de memória na inicialização da camada de procura de caminhos. .... 98

Tabela 38 - Média os resultados do consumo de memória na inicialização da camada de procura de caminhos. ... 98

Tabela 39 - Resultados do tempo de processamento na inicialização da camada de procura de caminhos no modo de execução com threadpool. ... 99

Tabela 40- Média do tempo de processamento na inicialização da camada de procura de caminhos no modo de execução com threadpool: Algoritmo de procura vs. dimensão do ambiente de jogo... 99

Tabela 41 - Resultados do consumo de memória na inicialização da camada de procura de caminhos no modo de execução com threadpool. ... 100

Tabela 42 – Média dos resultados do consumo de memória na inicialização da camada de procura de caminhos no modo de execução com threadpool. ... 100

(22)

xiii

Tabela 44 - Média do consumo do tempo de processamento na adição de objetos antes do início do jogo: Esquema de divisão Vs. Dimensão do ambiente. ... 101 Tabela 45 - Média do tempo de processamento na adição de objetos antes do início do jogo: Esquema de divisão Vs. Densidade de objetos. ... 101 Tabela 46 - Resultados do tempo de processamento na adição de objetos antes do início do jogo no modo de execução com threadpool. ... 102 Tabela 47 - Média do tempo de processamento na adição de objetos antes do início do jogo no modo de execução com threadpool: Esquema de divisão Vs. Dimensão do ambiente. ... 103 Tabela 48- Média do tempo de processamento na adição de objetos antes do início do jogo no modo de execução com threadpool: Esquema de divisão Vs. Densidade de objetos. ... 103 Tabela 49 - Número máximo de nós por dimensão de ambiente e por densidade de objetos ... 104 Tabela 50 - Resultados do tamanho do espaço de pesquisa... 104 Tabela 51 – Média dos resultados do tamanho do espaço de pesquisa: Esquema de divisão Vs. Dimensão do ambiente. ... 104 Tabela 52 - Resultados do tempo de processamento na quantização. ... 105 Tabela 53 – Média dos resultados do tempo de processamento na quantização: Esquema de divisão Vs. Dimensão do ambiente. ... 105 Tabela 54 - Média dos resultados do tempo de processamento na quantização: Esquema de divisão Vs. Densidade de objetos. ... 106 Tabela 55 - Resultados do tempo de processamento na quantização no modo de execução threadpool. . 107 Tabela 56 – Média dos resultados do tempo de processamento na quantização no modo de execução com

threadpool: Esquema de divisão Vs. Dimensão do ambiente... 107

Tabela 57 - Média dos resultados do tempo de processamento na quantização no modo de execução com

threadpool: Esquema de divisão Vs. Densidade de objetos. ... 108

Tabela 58 - Resultados do tempo de processamento na localização. ... 109 Tabela 59 – Média dos resultados do tempo de processamento na localização: Esquema de divisão Vs. Dimensão do ambiente. ... 110 Tabela 60 - Resultados do tempo de processamento na localização no modo de execução com threadpool. ... 111 Tabela 61 - Média dos resultados do tempo de processamento na localização no modo de execução com

threadpool: Esquema de divisão Vs. Dimensão do ambiente... 111

Tabela 62 - Nº nós visitados na procura de caminho. ... 112 Tabela 63 - Média dos resultados do nº de nos visitados na procura de caminho: Esquema de divisão Vs. Dimensão do ambiente. ... 112 Tabela 64 - Média dos resultados do nº de nos visitados na procura de caminho: Algoritmo de procura Vs. Dimensão do ambiente. ... 112 Tabela 65 - Média dos resultados do nº de nos visitados na procura de caminho: Algoritmo de procura Vs. Densidade de objetos. ... 113 Tabela 66 - Média dos resultados: Esquema de divisão vs. Algoritmo de procura ... 114 Tabela 67 - Nº nós expandidos na procura de caminho. ... 115 Tabela 68 - Média dos resultados do nº de nós expandidos na procura de caminho: Esquema de divisão Vs. Dimensão do ambiente. ... 115 Tabela 69 - Média dos resultados do nº de nós expandidos na procura de caminho: Algoritmo de procura Vs. Dimensão do ambiente. ... 115 Tabela 70 – Custo e tamanho do caminho na procura de caminho... 117 Tabela 71 - Resultados do tempo de processamento na procura de caminho. ... 117 Tabela 72 – Média dos resultados do tempo de processamento na procura de caminho: Esquema de divisão Vs. Dimensão do ambiente. ... 117 Tabela 73 - Média dos resultados do tempo de procura de caminho: Esquema de divisão Vs. Densidade de objetos. ... 117 Tabela 74 – Média dos resultados do tempo de processamento na procura de caminho: Algoritmo de procura Vs. Dimensão do ambiente. ... 119 Tabela 75 - Média dos resultados do tempo de procura de caminho: Algoritmo de procura Vs. Densidade de objetos. ... 119 Tabela 76 - Resultados do tempo de processamento na procura de caminho no modo de execução

threadpool. ... 121

Tabela 77 – Média dos resultados do tempo de processamento na procura de caminho: Esquema de divisão Vs. Dimensão do ambiente no modo de execução threadpool. ... 121 Tabela 78 - Média dos resultados do tempo de procura de caminho: Esquema de divisão Vs. Densidade de objetos no modo de execução com threadpool. ... 121

(23)

xiv

Tabela 79 – Média dos resultados do tempo de processamento na procura de caminho no modo de execução com threadpool: Algoritmo de procura Vs. Dimensão do ambiente. ... 122 Tabela 80 - Média dos resultados do tempo de procura de caminho no modo de execução com threadpool: Algoritmo de procura Vs. Densidade de objetos. ... 123 Tabela 81 - Resultados do tempo de processamento na conexão de vizinhos. ... 124 Tabela 82 - Média dos resultados na conexão de vizinhos: Esquema de divisão Vs. Dimensão do

ambiente. ... 125 Tabela 83 - Resultados do tempo de processamento na conexão de vizinhos no modo de execução com

threadpool. ... 126

Tabela 84 – Média de resultados do tempo de processamento na conexão de vizinhos no modo de execução com threadpool. ... 126 Tabela 85 - Resultados do tempo de processamento de adição de objeto. ... 127 Tabela 86 - Média dos resultados de adição de objeto: Esquema de divisão Vs. Dimensão do ambiente. ... 127 Tabela 87 - Média dos resultados do tempo adição de objeto: Esquema de divisão Vs. Densidade de objetos. ... 127 Tabela 88 - Resultados do tempo de processamento de adição de objeto no modo de execução com

threadpool. ... 128

Tabela 89 – Média dos resultados do tempo de processamento de adição de objeto no modo de execução com threadpool: Esquema de divisão Vs. Dimensão do ambiente. ... 128

(24)
(25)

xvi

Lista de Equações

Equação 1 - Cálculo do custo de n. ... 33 Equação 2 – Tamanho do espaço de procura em grelhas. ... 70 Equação 3 - Profundidade máxima em quadtree. ... 70 Equação 4 – Tamanho mínimo da célula em quadtree. ... 71 Equação 5 – Id em grelha. ... 72 Equação 6 - Obtenção da coluna através do Id. ... 72 Equação 7 - Obtenção da coluna através da coordenada x. ... 72 Equação 8 - Obtenção da linha através do Id. ... 72 Equação 9 - Obtenção da linha através da coordenada z. ... 73 Equação 10 – Obtenção da coordenada x. ... 74 Equação 11 - Obtenção da coordenada z. ... 74 Equação 12 - Determinação do espaço de procura numa Quadtree. ... 76 Equação 12 - Determinação de Id de um nó da quadtree. ... 78 Equação 14 – Obtenção de h(n). ... 85

(26)

1

Capítulo 1

Introdução

1.1 Motivação

Cada vez mais os jogos de vídeo têm-se assumido como o instrumento preferido de diversão do ser humano, abrangendo uma faixa etária cada vez mais alargada. Da guerra à estratégia, passando pelo desporto e pela aventura, a aproximação do mundo virtual dos jogos de vídeo à realidade é cada vez maior. Os jogos de vídeo não só disponibilizam um leque alargado de escolhas, como também a forma a que chegam ao utilizador é bastante diversificada (computador pessoal, telemóveis, televisão inteligente, baseados na web, entre outros). O facto de uma grande variedade de meios digitais poderem ser usados para disponibilizar e comercializar jogos de vídeo, levou a que no ano de 2012, a comercialização de vídeo jogos tenha ultrapassado os lucros da indústria de cinema de Hollywood, com uma previsão de aumento de lucros para os próximos anos. Ao sucesso dos jogos de vídeo comerciais, está ligada à sua capacidade de diversão, que depende da sua jogabilidade e do seu realismo, e é também consequência direta da qualidade da imersão e experiência de jogo proporcionada ao utilizador.

O desenvolvimento de um vídeo jogo comercial demora bastante tempo e implica um investimento de milhões de euros. A maior parte do tempo de desenvolvimento é despendida na criação de cenários realistas e de mecânicas de jogo. O aumento da exigência dos consumidores por conteúdos multimédia de larga escala, sem que seja comprometido o detalhe gráfico e o realismo, obrigam a indústria de desenvolvimento de jogos a procurar formas alternativas de desenvolvimento e distribuição, para isso, é necessário automatizar processos e diminuir o tempo de desenvolvimento. As técnicas de geração processual de conteúdo (PCG) têm-se destacado como uma alternativa na geração automática de conteúdos em larga escala e a baixo preço. A sua oferta de conteúdos em quantidade, qualidade e diversidade é quase ilimitada. Contudo, não basta apenas gerar conteúdos, é necessário continuar a assegurar o realismo e a jogabilidade do jogo de vídeo.

(27)

2

Deste modo, a inteligência artificial de um jogo torna-se um fator preponderante no realismo e jogabilidade, uma vez que grande parte do sucesso dos jogos de vídeo está ligada à satisfação do jogador de “ganhar à máquina” e, mais atualmente, a cooperação com esta para alcançar e superar objetivos(Kishimoto & Artificial, 2004). É necessário então assegurar que os agentes inteligentes artificiais (Jogadores Não Humano – Non Player Character - NPC) consigam interagir corretamente com os conteúdos gerados pela PCG, principalmente se o conteúdo gerado é um cenário.

O NPC tem como requisito básico, movimentar-se corretamente dentro do ambiente de jogo, recorrendo ao sistema de navegação para isso. O sistema de navegação de um NPC pode ser dividido em dois componentes principais: a locomoção, responsável pelo movimento físico do agente no ambiente do jogo; e o pathfinding, responsável pela procura de caminhos válidos entre dois pontos. Este último componente, pathfinding, pode ser decomposto em duas componentes: a representação do ambiente de jogo e as técnicas de procura de caminho (Anguelov, 2011).

O problema do pathfinding é comum a outras áreas de estudo, tais como a de redes e a de robótica. Contudo, enquanto os fundamentos da representação do ambiente são similares, as técnicas de procura estão sujeitas aos requisitos de tempo real de múltiplos agentes resultando no aumento de limitações a este problema (Anguelov, 2011).

Apesar de existir uma literatura alargada sobre pathfinding, esta não está direcionada para a representação do meio ambiente e à procura de caminhos em ambientes sem processamento prévio e dinâmico.

1.2 Objetivos

O principal objetivo deste estudo é explorar e rever um conjunto de técnicas de pathfinding que possam ser aplicadas de forma automática (sem qualquer intervenção do jogador ou programador), e as quais ofereçam um desempenho suficiente para serem usadas em tempo de execução, com vista à navegação de agentes artificiais. É pretendido, desta forma, suportar a geração processual no momento de ambientes de jogos de vídeo.

A solução deve ainda cumprir com os seguintes requisitos principais:  suportar múltiplos agentes;

 suportar diferentes tamanhos de ambientes de jogo, sem aparente redução do desempenho do jogo de vídeo;

 possibilitar a deteção de obstáculos estáticos e dinâmicos.

(28)

3  suportar ambientes de relevo diferenciado;

 suportar diferentes tipos de unidades (ex.: agentes de diferente tamanho).

Os objetivos e requisitos desta investigação limitam consideravelmente as técnicas que podem ser utilizadas. Embora possam ser feitas algumas alterações e melhorias às técnicas empregues, não é o objetivo deste estudo inovar qualquer técnica em particular, mas sim articular um conjunto de "técnicas de estado da arte" e verificar e comparar os seus resultados, de acordo com os objetivos e requisitos descritos. Tendo em conta que não é possível encontrar uma solução geral ideal para todos os casos, é objetivo deste estudo o desenvolvimento de uma solução que possa ser empregue de forma satisfatória à generalidade das situações.

1.3 Contribuições

A contribuição primária deste estudo é a compreensão sobre a problemática da navegação de agentes em ambientes de jogo dinâmicos, e com cenários de diferentes dimensões, em que a impossibilidade de usar técnicas que envolvem pré-processamento agrava consideravelmente o problema de gerir a navegação de agentes em ambientes de grande dimensão. Este desafio assume uma maior relevância quando se observa que, ano após ano, os ambientes de jogo aumentam em detalhe visual, tamanho e complexidade.

Por outro lado, o objetivo de suportar a geração processual de conteúdos (PCG) nomeadamente de ambientes de jogos de vídeo, procura:

 diminuir o tempo e custos envolvidos no desenvolvimento dos jogos de vídeo;  aumentar a longevidade e variedade de jogos;

suportar novos paradigmas da tecnologia (tecnologia móvel e baseada na web); Para além das contribuições associadas à PCG, a pesquisa bibliográfica demonstra que a maioria da bibliografia direcionada aos jogos de vídeo não é suportada em dados científicos, mas sim na experiência de programadores de vídeo jogos. Em parte, este fenómeno pode ser explicado pelo facto de o conhecimento não ser partilhado pelas empresas que desenvolvem jogos de vídeo comerciais. Desta forma, este estudo procura dar uma maior relevância à área e contribuir de alguma forma para uma melhor compreensão da temática, nomeadamente:

fornecer uma visão alargada do estado atual do pathfinding em vídeo jogos, sobre este tópico;

 o uso maioritário do algoritmo de procura em grafos A* (Hirt, Gauggel, Hensler, Blaich, & Bittel, 2011) e algoritmos de procura que envolvem

(29)

pré-4

processamento faz com que existam poucas informações sobre soluções que explorem outras técnicas. Este estuda visa colmatar essa lacuna;

 fornecer dados exploratórios e comparativos entre diversas técnicas de representação de ambiente de jogo e algoritmos de procura em grafos;

 a bibliografia muitas vezes fala de técnicas e procedimentos sem fornecer dados e detalhes de implementação (ex.: algoritmo Fringe Search e a determinação de vizinhos numa quadtree). Este estudo visa fornecer dados e detalhes concretos de implementação de um sistema de navegação de agentes;

 demasiadas vezes os estudos referem uma técnica inovadora, falhando posteriormente em estudos de replicação e comparação de dados. Pretendemos fornecer dados relativos ao algoritmo de procura em grafo Fringe Search.

Queremos enfatizar a importância dos dados colhidos do algoritmo Fringe Search com estrutura de dados quadtree.

Outro aspeto importante da avaliação é a comparação dos resultados, entre usar uma ou mais threads nas instâncias de pathfinding. Procuramos fornecer dados válidos para esta questão, uma vez que este assunto ainda levanta algum debate dentro da comunidade do desenvolvimento de jogos.

1.4 Enquadramento institucional

Projeto realizado em regime externo à faculdade com o suporte do LabMAg, Laboratório de Modelação de Agentes Inteligentes, uma das unidades de investigação do Departamento de Informática da Faculdade de Ciências da Universidade de Lisboa. Ao longo da realização do presente trabalho foram realizadas diversas reuniões de supervisão sob a orientação atenta do Prof. Doutor Luís Manuel Ferreira Fernandes Moniz e do Prof. Doutor Paulo Jorge Cunha Vaz Dias Urbano.

1.5 Organização do documento

A organização do documento segue a estrutura especificada pela cadeira de projeto em que a presente investigação se insere. O documento está organizado da seguinte forma:

Capítulo 1 – introdução ao tema, onde são expostas as motivações, objetivos e contribuições dos autores para a conceção do presente estudo. É ainda feito um enquadramento institucional e resumo do trabalho realizado.

 Capítulo 2 – apresentação de trabalhos e investigações, relevantes e atuais, ao campo de estudo da investigação. Este capítulo encontra-se dividido em dois

(30)

5

subcapítulos. O primeiro subcapítulo é introdutório à geração processual de conteúdo. O segundo subcapítulo aborda o sistema de navegação de um NPC, sendo dado um maior enfâse ao pathfinding, nomeadamente às diferentes abordagens existentes para representar o espaço físico do ambiente dos jogos de vídeo.

 Capítulo 3 – descrição da metodologia de investigação, nomeadamente especificação dos objetivos e delineamento do estudo, material e métodos e o planeamento de atividades.

 Capítulo 4 – descrição do trabalho realizado e demonstra a solução proposta pelos autores.

 Capítulo 5 – apresentação e análise dos resultados obtidos e caracterização da amostra.

 Capítulo 6 – discussão dos resultados, finalizado com uma conclusão onde são apontados rumos futuros com base no trabalho desenvolvido.

1.6 Sumário

Secção introdutória ao presente trabalho, onde é descrita a sua motivação, objetivos e contribuições.

Este trabalho procura suportar a geração processual de conteúdos, nomeadamente de ambientes de jogo. O processo de geração de ambientes de jogo tem como requisito o automatismo e tempo de execução. Este estudo pretende suportar esta funcionalidade e os requisitos associados, através do desenvolvimento de um sistema de navegação de NPC’s. O estudo para além de contribuir para uma melhor compreensão da temática e dos requisitos envolvidos, procura fornecer dados e comparar um conjunto de diversas técnicas de representação de ambiente de jogo e algoritmos de procura em grafos, usadas no desenvolvimento do sistema de navegação.

A secção é finalizada com uma descrição sumária dos diversos capítulos que compõem o documento.

(31)

6

Capítulo 2

Trabalho relacionado

2.1 Geração processual de conteúdo

Os avanços tecnológicos têm tornado os consumidores de multimédia mais exigentes quanto ao detalhe gráfico, realismo e conteúdos multimédia de larga escala. Esta exigência tem sido respondida tradicionalmente com um aumento do número de artistas especializados e projetos cada vez mais longos. Tal resposta faz aumentar os já elevados custos de desenvolvimento que acabam por ser pagos pelo consumidor final (Kelly & Mccabe, 2006; Kelly, 2008). Por outro lado, à medida que a qualidade gráfica e realismo crescem, aumentam também as dificuldades de entrada de novas empresas competitivas no mercado, acabando por fazer diminuir a inovação (Kelly, 2008).

Tornou-se assim importante encontrar alternativas que permitam gerar conteúdos em larga escala, a baixo preço e sem que isso se reflita no detalhe gráfico e realismo do conteúdo. Uma potencial solução é o uso das técnicas de geração processual de conteúdos (Ebert et. al cit. por Kelly, 2008 e Kelly & Mccabe, 2006). As técnicas processuais de conteúdo em jogos consistem na aplicação de computadores para gerar automaticamente conteúdos de todo o tipo. Este conjunto de técnicas pode ser definido como a automatização do processo de criação de conteúdos através de um conjunto de instruções computacionais (Ramteke, 2011). Estas desmarcam-se das aproximações tradicionais que se baseiam na criação de conteúdos estáticos para definir o ambiente. Os conteúdos estáticos são inflexíveis, difíceis de modificar e limitados na sua reutilização, as técnicas processuais oferecem a possibilidade de gerar conteúdos mais flexíveis e reutilizáveis (Kelly, 2008).

Embora estas técnicas já venham a ser empregues no campo dos vídeo jogos há mais de 20 anos, a sua aplicação resumia-se à geração aleatória de conteúdos com um papel secundário nos vídeo jogos (Cardamone, Yannakakis, Togelius, & Lanzi, 2011). Nos últimos tempos estas técnicas têm assumindo um papel mais preponderante, sendo usadas na geração de elementos principais como mapas, sons, níveis e outros aspetos (Cardamone et al., 2011), sendo atualmente cada vez mais explorada pela indústria

(32)

7

multimédia: filmes, anúncios comerciais, televisão e videojogos (Kelly & Mccabe, 2006; Kelly, 2008).

A PCG aplicada à área dos videojogos pode ser usada na geração de geometrias, texturas, comportamentos de agentes, animações, cenários, personagens, sons, músicas, itens, vegetação, terrenos, entre outros (Cardamone et al., 2011). Hoje em dia é possível criar mundos virtuais inteiros de forma processual (Kelly, 2008; Pandromeda, 2006 cit. por Kelly & Mccabe, 2006).

De seguida iremos abordar as vantagens e desvantagens destas técnicas.

2.1.1 Vantagens

As técnicas PCG estão associadas a um conjunto de vantagens:

 Aumento da longevidade dos jogos. Apesar dos milhões gastos no desenvolvimento de vídeo jogos comerciais estes possuem uma longevidade curta., Um jogo do tipo atirador em primeira pessoa (First person shooter - FPS) por exemplo, possui apenas uma duração média de 10 horas no modo de jogador único e alguns mapas no modo de jogadores múltiplos (Cardamone et al., 2011). Se novos conteúdos puderem ser gerados com uma variedade suficiente em tempo real, então é possível criar jogos com inúmeros cenários (Togelius et al., 2011).

 Jogos sem repetições. A PCG confere a capacidade de o vídeo jogo se adaptar ao desempenho, experiência, capacidade e preferências de um ou vários jogadores (Cardamone et al., 2011). A capacidade de gerar mapas em tempo de execução permite dar aos jogadores novos desafios. Por exemplo, depois de um jogador ter finalizado a estória principal de um jogo de interpretação de personagem (Role-playing game - RPG) tem poucas razões para o voltar a jogar ao jogo, com a geração de mapas o jogador pode explorar novos locais desconhecidos ou até mesmos os mesmos locais mas com algumas modificações (ex.: “Mass effect 3”).

 Transposição de limitações técnicas como o espaço em disco ou memória (como por exemplo os jogos “elite” e “kkrieger”). À medida que os jogos se tornam mais complexos e detalhados, o espaço ocupado em disco aumenta proporcionalmente ao seu conteúdo (Kelly & Mccabe, 2006). Estas técnicas podem ser vistas como técnicas de compressão de dados (ex.: o jogo FPS “kkrieger” ou o jogo RPG “elite”) que através de algoritmos determinísticos transformam parâmetros de entrada dede tamanho reduzido em conteúdos diversos e complexos (Kelly, 2008; Togelius, Yannakakis, Stanley, & Browne, 2011). Esta capacidade é extremamente útil nos dias de hoje quando pensamos em transferência de conteúdos pela rede ou na capacidade limitada de hardware dos dispositivos móveis.

(33)

8

 Grandes paisagens a custos razoáveis. Mapas muito extensos podem ser difíceis de criar: cada árvore, casa, carro, entre outros elementos além de criados necessitam de ser posicionados. Mesmo com uma grande equipa de designers, este processo pode ser longo (ex.: “Grand Theft Auto”). Os projetos muito longos são um risco para as produtoras devido aos custos que acarretam, perda de competitividade comparando a companhias com ciclos de desenvolvimento mais rápido, lançamento de produtos semelhantes, tecnologia usada tornar-se ultrapassada entre outros.

 Possibilidade de ir além da imaginação do desenhador. É possível criar novos tipos de jogos com mecânicas de jogo construídas inteiramente a partir da PCG (Togelius et al., 2011).

2.1.2 Desvantagens

Apesar das vantagens no uso das técnicas PCG, existem também desvantagens que devem ser enumeradas:

 Limitação na liberdade de desenho. Como todos os conteúdos são gerados por algoritmos é difícil gerar elementos específicos. A geração de conteúdos baseada unicamente em algoritmos não possibilita indicar o aparecimento de elementos específicos e se a sua aparência ou ordem de aparecimento corresponde à história do jogo. Caso do jogo não possuir estória este aspeto deixa de ser importante.

Look and feel de paisagens genéricas. Se os algoritmos não estiverem corretamente configurados, o seu resultado pode ser paisagens que se repetem ou que não constituem um desafio de exploração a longo prazo. Um designer humano é capaz de criar paisagens atraentes ao olho humano e excitantes de explorar. Os algoritmos podem ser afinados por programadores experientes, mas isto por sua vez também constitui um custo.

Áreas inacessíveis e mapas partidos. Da mesma forma que um designer humano pode errar, um algoritmo pode não estar correto. Isto pode originar por exemplo mapas em que não seja possível ganhar, por exemplo, não permitam o jogador alcançar objetos chave ou mapas que são seja possível ganhar (Togelius et al., 2011).

2.1.3 Aproximações híbridas

Os conteúdos gerados de forma processual muitas vezes não são adequados para o jogo. Por outro lado os conteúdos criados por humanos geralmente apresentam uma qualidade muito superior. Contudo, não existe nenhuma razão para que ambos os métodos não possam coexistir (Ramteke, 2011; Wu, 2008). A combinação entre designers humanos e PCG pode ser usada por exemplo para geração de mapas de larga

(34)

9

escala que sejam interessantes e que proporcionem uma boa experiência de jogo ao utilizador. Isto pode ser conseguido de diversas formas:

 Cenários gerados através da PCG, com adição posterior ao mapa de salas criadas por designers humanos. Estas salas são desenhadas para caber no mapa auto gerado, desta forma embora o seu conteúdo possa não ser modificável a sua localização é. O jogador apenas se iria aperceber da repetição destas salas se repetisse o jogo (ex.: “Diablo”).

Mapas criados por designers humanos e posteriormente povoado pela PCG. Os designers criam o mapa e a PCG cria as paisagens como por exemplo árvores (ex.: “Elders Scrolls: Oblivion”).

 Mapas gerados em tempo de execução. Os mapas são gerados em tempo de execução, contudo os algoritmos usados estão configurados para colocar elementos importantes da estória. Desta forma a personagem começa sempre na mesma posição e acaba sempre em localizações pré-definidas. A inclusão de outras secções críticas estão cuidadosamente restritas para evitar conflitos. Isto limita a aleatoriedade, mas por outro lado assegura que estes elementos sejam colocados corretamente (ex.: “Valion”) (Togelius et al., 2011).

2.1.4 Características

Ao longo de mais de duas décadas diversas técnicas de PCG têm sido aplicadas no desenvolvimento de diversos aspetos dos vídeo jogos, contudo a comunidade académica poucos esforços realizou para estudar estas técnicas. Não existe assim nenhum corpo teórico ou taxonomia que suporte a PCG. Para um melhor entendimento da área iremos enumerar um conjunto de distinções para clarificar alguns aspetos da utilização da PCG, que julgamos ser pertinentes e uteis na clarificação do estudo da PCG. Os autores referem que estas distinções devem ser encaradas como um continuum e não como distinções dicotómicas, possíveis de serem alteradas no futuro com o amadurecimento do conhecimento na área.

Online vs. Offline

A aproximação online é usada durante a execução do jogo por exemplo o servidor sugere diariamente novos mapas a um grupo de jogadores com base no tipo de jogo de cada um deles. Outro exemplo é a criação de um segundo nível do jogo após o primeiro ter sido completado. Este segundo nível simplesmente não existe antes disso (Togelius et al., 2011).

A aproximação offline é usada para criar conteúdos de jogo antes do seu lançamento comercial. Um exemplo disto é a criação de grandes zonas de vegetação ou

(35)

10

secções de jogo que necessitam de uma grande carga de trabalho por partes dos designers (Blanchard & Jesper, 2012; Togelius et al., 2011).

Conteúdos necessários vs. Conteúdos opcionais

Existem conteúdos que são necessários para que o jogador possa progredir no jogo. Por exemplo os caminhos devem permitir a passagem do jogador, monstros serem mortos, regras cruciais ao jogo, etc. (Blanchard & Jesper, 2012; Togelius et al., 2011).

Conteúdos opcionais são descritos como conteúdos sobre o qual o jogador pode escolher, como por exemplo armas ou salas que o jogador pode entrar ou ignorar (ex.: “Borderlands”).

A grande diferença entre estes dois tipos de conteúdos é que o conteúdo necessário deve obrigatoriamente de estar sempre correto ou o jogador não é capaz de completar o jogo. Alguns tipos de conteúdos podem ser opcionais ou necessários em alguma parte do jogo (ex.: grutas). Desta forma a análise sobre se um conteúdo é opcional ou não deve ser feita de partida a partida (Togelius et al., 2011).

Sementes aleatórias vs. Vetores de inicialização

Os algoritmos PCG normalmente recorrem a um conjunto de parâmetros para criar conteúdos “expandidos” de um determinado tipo baseando-se numa representação compacta. Esta representação pode variar bastante e descrever conteúdos de quase todo o tipo. Os parâmetros podem ser usados como uma forma de controlo ou “aleatoriedade” do conteúdo criado.

A semente é uma representação compacta de um conteúdo que através de um sistema de geração de números aleatórios irá gerar o conteúdo com base na semente e nos números aleatórios indicados por parâmetro de entrada (Blanchard & Jesper, 2012; Togelius et al., 2011).

O vetor de inicialização corresponde a um vetor multidimensional de parâmetros de valor real que o algoritmo usa como parâmetro de entrada (Togelius et al., 2011).

Quer a sementes aleatórias, quer os vetores de inicialização, podem ser usados em simultâneo (Blanchard & Jesper, 2012).

Geração estocástica vs. Geração determinística

A geração de conteúdos baseada em parâmetros pode ser caracterizada pelo seu resultado.

(36)

11

Na geração estocástica, o algoritmo de geração de conteúdos com base nos mesmos parâmetros de entrada gera resultados diferentes. Este tipo de geração permite gerar conteúdos dinâmicos.

Na geração determinística, o algoritmo de geração de conteúdos gera sempre o mesmo resultado com base no mesmo parâmetro de entrada. A geração é baseada no que o parâmetro realmente representa (Blanchard & Jesper, 2012).

Algoritmos inteiramente determinísticos podem ser vistos como um processo de compressão de dados. O jogo de atirador em primeira pessoa kkrieger é um exemplo disso, apesar da sua grande componente gráfica apenas ocupa 95 Kb em disco rígido, segundo os seus criadores caso não tenham sido empregues técnicas PCG o jogo ocuparia entre 200 a 300 MB em disco rigido (ex.: o jogo “kkrieger”) (Togelius et al., 2011).

A escolha entre estas duas aproximações é uma questão de design. Contudo, na maioria das vezes é mais fácil personalizar um sistema que não recorre a uma aproximação de geração determinística (Blanchard & Jesper, 2012).

Algoritmo construtivo vs. Algoritmo gerar-testar

Na geração de conteúdos é possível distinguir dois tipos principais de algoritmos.

No algoritmo construtivo, a geração do conteúdo ocorre apenas uma só vez, sendo esta final, não sendo alvo modificações de posteriores. Esta aproximação é a melhor opção para a geração de conteúdos online onde a velocidade e performance são um problema. Na aproximação construtiva é importante que o conteúdo gerado esteja correto uma vez que não há espaços para correções (Blanchard & Jesper, 2012).

No algoritmo por aproximações, o conteúdo é gerado e depois testado de acordo um determinado critério. Se o conteúdo gerado não preenche um determinado critério, todo ou parte do conteúdo será regerada. Este processo irá repetir-se até que todos os critérios estejam reunidos. Este método permite o sistema errar e assegurar que o conteúdo final esta sempre correto (é necessário que caso os critérios estejam corretos). O aspeto negativo desta aproximação é que a execução de muitas iterações durante a geração pode demorar muito tempo o que não satisfaz a geração online (Blanchard & Jesper, 2012).

Não serão abordados algoritmos de PCG uma vez que sai da esfera de interesse do presente estudo.

(37)

12

2.2 Sistema de navegação

Cada vídeo jogo é único, e cada jogo requer uma implementação única da inteligência artificial para suportar as mecânicas específicas desse jogo (ex:. tipo de jogo). O sistema de navegação é apenas uma das componentes da inteligência artificial. Contudo existem aspetos comuns entre os diversos jogos. Neste capítulo iremos descrever esses aspetos baseando-nos no tipo de jogo atirador em primeira pessoa e jogos em terceira pessoa uma vez que partilham os mesmos pressupostos.

O sistema de AI de um jogo de vídeo constitui uma camada específica do motor de jogo, onde está incluído o sistema de navegação. O sistema de navegação pode ser dividido em duas componentes principais (ver Ilustração 1): locomoção (encarregue pelo movimento efetivo do agente) e pathfinding (responsável pelo planeamento de caminhos no ambiente do jogo de vídeo). A componente pathfinding por sua vez pode ser subdividida em duas componentes: representação do ambiente e algoritmos de procura (Anguelov, 2011).

2.2.1 Locomoção

A componente locomoção está encarregue do movimento efetivo do agente, é o sistema de controlo do movimento, esta determina como o NPC se deve mover no ambiente de jogo. As funcionalidades suportadas por esta componente variam de implementação para implementação, consoante o contexto e complexidade da IA do jogo de vídeo. As suas principais funções são:

fazer pedidos de resolução de caminho à camada pathfinding quando existe a necessidade de planear uma rota; e

executar os planos retornados pelo pathfinding.

Representação do ambiente Locomoção Algoritmos de Procura Pathfinding Sistema de Navegação

(38)

13

Esta componente não determina para onde o agente se deve mover, mas sim como o fazer. Esta solicita pedidos de caminho entre dois pontos e é responsável por assegurar que o agente se move de forma correta de um ponto para outro.

Para a realização eficaz do plano retornado pelo pathfinding o NPC deve ser capaz de identificar obstáculos (objetos do ambiente de jogo ou outros NPC’s) e validar o caminho devolvido, A identificação de obstáculos e validação do caminho é um problema complexo que varia consoante o tipo de jogo, complexidade da inteligência artificial do agente e o realismo do jogo. Existem diversas abordagens, as quais apenas iremos referir algumas:

dotar o NPC de sensores como por exemplo fazer raycasting para a identificação de obstáculos.

 se o mapa de navegação dispor de informação da área navegável, a repetição periódica de pedidos de caminho permite ao NPC descartar caminhos que podem não estar atualmente corretos.

2.2.2 Representação do ambiente

Para os algoritmos de procura de caminhos poderem desempenhar a sua função, é necessário em primeiro lugar que estes consigam entender o ambiente, e isto implica que o ambiente esteja guardado de forma simples e que permita realizar procuras de forma fácil e rápida. O detalhe visual do ambiente de jogo 3D é irrelevante para o planeamento de caminhos e o formato que este se encontra guardado não é adequado à procura de caminhos. Desta forma, os programadores de jogos para a procura de caminhos, recorrem a abstrações simples do ambiente complexo do vídeo jogo. Estas abstrações contêm toda a informação essencial para a navegação do NPC e que possibilitam a procura de caminhos (Anguelov, 2011). O seu objetivo não é descrever toda a geometria navegável, mas sim fornecer marcas que servem como localizações e a forma como lá chegar (Borovikov, 2011).

Abstração de grafo de navegação

A representação do ambiente assume a forma de grafo uma vez que é uma estrutura de dados simples, capaz de conter todos os dados de navegação. Um grafo é definido por dois conjuntos finitos: vértices (nós) e arestas (conexões). Os vértice contêm os dados enquanto as arestas fazem a ligação entre dois vértices. Um vértice pode ter uma ou mais arestas que o conecta com outros vértices do grafo. Os grafos que contem dados de navegação e que representam um ambiente de jogo são chamados de grafos de navegação (navgraph). Estes grafos delimitam o espaço de procura para algoritmos de procura. Cada nó do grafo representa uma localização possível do

(39)

14

ambiente 3D e contem as propriedades dessa localização e uma lista de localizações (nós) acessíveis diretamente a partir desse nó (Anguelov, 2011). Cada aresta representa a conexão entre as duas áreas, e esta por sua vez está associada a um custo que no caso mais simples representa a distância entre os dois nós que conecta (Buckland, 2004).

Em resumo, a geometria do mapa e a capacidade de movimento do agente são traduzidos em nós, conexões e em funções de custo que os valoriza (Millington & Funge, 2009).

Geralmente os navgraph são incluídos no jogo de vídeo durante a fase de desenvolvimento, com o objetivo de evitar o consumo de recursos (tempo de execução e memória) na sua geração durante a execução do jogo de vídeo. Esta decisão é a mais apropriada, nos jogos de vídeo em que cenários são imutáveis.

Esquema de divisão

Embora a ideia de construir um grafo de navegação a partir de um ambiente complexo pareça simples, a implementação da teoria à prática está associada a inúmeros problemas (Buckland, 2004). Para a construção do grafo é necessário dividir o espaço do jogo em regiões e conectá-las. Os diversos métodos que permitem fazer isto designam-se por esquemas de divisão (division schemes).

Propriedades

Cada esquema de divisão possui três importantes propriedades: quantização/localização (quantization/localization), geração (generation) e validade (validity).

Quantização/localização

Os grafos de navegação são mais simples que o ambiente de jogo, desta forma é necessário recorrer a um mecanismo que traduza as localizações no ambiente de jogo em nós no grafo, a isso se chama quantização. Esta propriedade é usada por exemplo quando um NPC decide alcançar um item dentro do ambiente de jogo, neste caso é necessário converter a sua posição e a posição do item em nós do grafo. A localização é o processo inverso da quantização, em que é usado um mecanismo que traduza os nós no grafo em localização no ambiente de jogo. Após um algoritmo de procura determinar um caminho entre dois pontos, o agente necessita de saber as coordenadas desses pontos no ambiente de jogo.

Geração

A propriedade geração distingue cada método relativamente ao seu grau de automatismo que pode variar entre manual ou automático. O processo automático é

(40)

15

caracterizado por gerar menos nós para cobrir o cenário, resultando em mapas de navegação mais simples que permitem processar respostas mais rápidas. O processo manual caracteriza-se por gerar grafos mais complexos (maior número de nós), mas que oferece melhores resultados em relação ao realismo do comportamento dos NPCs uma vez que o processo é específico a cada mapa do jogo.

Validade

A validade refere-se à capacidade do agente de realizar o plano traçado. Se um plano delineia um percurso ao longo da conexão do nó A ao nó B, então o agente deverá ser capaz de realizar esse movimento. Se a quantização das regiões à volta de A e B não permitem esse movimento então o grafo de navegação criou um plano de navegação inútil.

Um esquema de divisão é válido se todos os pontos, de duas regiões conectadas, possam ser alcançados entre elas. A maioria dos esquemas de divisão não verifica a validade, podendo ainda haver diversos níveis de validade (Millington & Funge, 2009).

Tipos

Existem três principais tipos de esquema de divisão: baseados em pontos de passagem, baseados em malha de navegação e baseados em grelha. O método de abstração usado para representar o ambiente de jogo irá determinar o tamanho e complexidade do grafo (Anguelov, 2011).

(41)

16

Para permitir entender melhor para cada um método de abstração é fornecido um exemplo da sua aplicação com base no ambiente de jogo mostrado na Ilustração 4.

Baseado em pontos de passagem

O método de abstração baseado em pontos de passagem é considerado como o método tradicional de criar grafos de navegação uma vez que era o método usado nos jogos de vídeo antigos como os jogos de aventura animada e first person shooter (FPS), ex.: “Monkey Island”, “Half-Life 2”. Este tipo de abstração consiste na adição de pontos de passagem (nós) de forma manual ou automática ao cenário, sendo posteriormente ligados (arestas) de forma manual ou automática formando desta forma o grafo de navegação.

As abordagens inteiramente manuais, embora confiram ao agente artificial um movimento menos artificial, não são consideradas como perfeitas uma vez que não garantem a cobertura total do ambiente. Em comparação, as abordagens automáticas caracterizam-se por cobrir eficazmente todo o espaço navegável, contudo este tipo de abordagem está associada a um grande custo computacional e à possibilidade de originarem um elevado número de nós redundantes resultando no aumento do espaço de procura. Por norma assiste-se ao uso das duas abordagens, de forma a obter o melhor dos dois mundos e a compensar os pontos negativos de cada abordagem (Tozour, 2008). Podemos dar como exemplo de abordagem automática os algoritmos: “art gallery” (onde se recorre à abstração de uma galeria de arte em que o algoritmo determina o número mínimo de guardas necessários para que todas as paredes da galeria estejam no raio de visão dos guardas), os pontos de visibilidade e geometria expandida (estas duas ultimas são abordadas com maior detalhe mais à frente). Embora as técnicas enunciadas possibilitem diversos graus de automatização é sempre necessário algum tipo de intervenção humana (Tozour, 2008).

(42)

17

Vantagens

Apesar de ser necessário inúmeros pontos de passagem para garantir o movimento adequado dos agentes artificiais, o grafo de navegação resultante desta abordagem potencialmente possui o menor espaço de procura quando comparados com as demais abordagens.

Existe a possibilidade de incluir informação adicional nos nós que compõe o grafo de navegação, como por exemplo atributos de orientação, ou tipos de animação que o agente deve realizar face a esse objeto. Esta característica é útil quando se pretende incluir pontos pré-definidos no ambiente de jogo, como assinalar pontos de abrigo, de passagem, de patrulha ou até mesmo, pontos chaves da estória do jogo. É possível por exemplo incluir um ponto de passagem numa porta com um atributo de orientação, desta forma um NPC ao aproximar-se saberá como se orientar face à porta de forma a poder abri-la corretamente.

No caso de haver a necessidade de incluir pontos pré-definidos que identifiquem posições chave no mapa, as outras abordagens para além do próprio grafo de navegação necessitam de uma segunda representação baseada em pontos de passagem que indiquem à AI como usar o ambiente de jogo (Tozour, 2008).

Desvantagens

A única informação que os agentes artificiais possuem do mundo são os pontos de passagem e as arestas que os une. Os agentes são assim forçados a manterem-se no caminho delineado como se estivessem a deslocar-se num trilho de caminho-de-ferro. Isto implica que o agente ao movimentar-se ao longo do trajeto caminhe com uma aparência artificial (“zig-zag”) ou não opte pelo caminho ótimo (Tozour, 2008).

(43)

18

A informação limitada que o agente dispõe do ambiente de jogo dificulta a aplicação desta abordagem a ambientes dinâmicos. O agente ao verificar que o caminho está obstruído tem de adotar um novo caminho, invés de se desviar do obstáculo (Tozour, 2008). Por outro lado caso ocorra um evento de alteração do ambiente de jogo, a geração automática de pontos de passagem não oferece garantias quanto à validade do caminho gerado (Anguelov, 2011).

Impossibilidade de usar o mesmo grafo de navegação para agentes com propriedades diferentes como o peso, tamanho, taxa de viragem e outros parâmetros. Muitas vezes é necessário usar diferentes grafos de navegação baseados no tamanho, forma e capacidade de movimentação de cada agente (Tozour, 2008).

Problemas na simulação de multidões uma vez que todos os elementos movem-se através das arestas, o que não é natural (Tozour, 2008).

Impossibilidade de prever o resultado das animações do agente. O agente ao realizar uma animação pode entrar numa posição inválida como uma parede ou precipício. (Tozour, 2008).

Técnicas de colocação de pontos

Pontos de visibilidade

Os gafos de navegação baseados em pontos de visibilidade (POV) são uma variante dos grafos de navegação baseados em pontos de passagem. Os grafos de navegação baseados em POV são criados através da colocação automática de pontos de inflexão (pontos em que a direção do caminho altera) nos vértices dos polígonos convexos, assinalando desta forma as obstruções do cenário. Estes pontos de inflexão são posteriormente conectados através da verificação da linha de visão (Anguelov, 2011).

Esquema de divisão

Os pontos de inflexão ocorrem naturalmente no caminho mais curto, estes podem ser transformados em nós e usados na procura de caminhos. A ligação entre pontos de inflexão pode ser feita através da técnica de raycasting em que a conexão entre dois pontos acontece se o raio colidir como a geometria de um. A ideia é verificar se um ponto pode ver o outro (Millington & Funge, 2009).

Quantização e localização

(44)

19

Validade Uso do dominó de Dirichlet (Millington & Funge, 2009).

Tabela 1 - Esquema de divisão de grafos de navegação baseados pontos de visibilidade.

Ilustração 4 - Grafo de navegação baseado em pontos de visibilidade. Vantagens

Este tipo de grafo de navegação é fácil de expandir de forma a incluir outros nós que forneçam informações para além dos dados de conectividade (Buckland, 2004).

Desvantagens

Espaço de procura e fator de ramificação grande quando comparado com grafos de navegação baseados em pontos de passagem. Obstáculos com uma geometria complexa (ex.: pilares circulares) podem gerar grafos com um grande número conexões devido à geração de múltiplos pontos de inflexão próximos uns dos outros (Anguelov, 2011).

Geralmente é necessário a intervenção humana para juntar diversos pontos de inflexão com o objetivo de reduzir o espaço de procura. Em cenários grandes e complexos o designer do mapa, pode gastar muito tempo a criar e a afinar os pontos de inflexão.

Geometria expandida

A técnica de geometria expandida é uma técnica que permite colocar pontos de inflexão de forma automática. Se o ambiente do jogo for constituído por polígonos é possível usar a informação presente nessas formas geométricas para automaticamente criar um grafo POV permitindo poupar imenso tempo no caso de grandes ambiente de

(45)

20

jogo. Este processo é feito da seguinte forma, primeiro são expandidos os polígonos por uma quantidade proporcional ao raio dos agentes do jogo, de seguida os vértices definidos, por estas geometrias expandidas, são adicionados como nós ao grafo de navegação. Por último, é executado um algoritmo para testar a linha de visão entre os vértices, e são acrescentadas as arestas ao grafo.

Como os polígonos estão expandidos por uma quantidade maior ou igual ao raio do agente, um agente pode procurar o grafo de navegação resultante para criar caminhos sem esbarrar contra paredes.

Apesar do automatismo desta técnica, ainda é necessário a intervenção humana para remover a redundância de pontos de inflexão (Buckland, 2004).

Ilustração 5 - Grafo de navegação baseado em pontos de visibilidade com geometria expandida.

Baseado em grelha

Grafos de navegação baseados em grelha são criados através da imposição de uma grelha sobre o ambiente de jogo, dividindo o ambiente em regiões regulares designadas por telhas (tiles) ou células. A conversão da grelha em grafo é feita através da geração de um nó abstrato por cada célula da grelha e de seguida, através da geometria de conexão das células em grelha (propriedade de vizinhança), são determinadas as arestas. A geometria de conexão de células é determinada pelo tipo de células usado para formar a grelha, este tipo pode variar entre células quadradas com 4 ou 8 vizinhos, células hexagonais com 6 vizinhos (ver Ilustração 6). Sendo a célula quadrada com 8 vizinhos a mais popular (Anguelov, 2011).

Referências

Documentos relacionados

Todas as outras estações registaram valores muito abaixo dos registados no Instituto Geofísico de Coimbra e de Paços de Ferreira e a totalidade dos registos

F REQUÊNCIAS PRÓPRIAS E MODOS DE VIBRAÇÃO ( MÉTODO ANALÍTICO ) ... O RIENTAÇÃO PELAS EQUAÇÕES DE PROPAGAÇÃO DE VIBRAÇÕES ... P REVISÃO DOS VALORES MÁXIMOS DE PPV ...

Contemplando 6 estágios com índole profissionalizante, assentes num modelo de ensino tutelado, visando a aquisição progressiva de competências e autonomia no que concerne

Bento Pereira apresenta uma lista de autores e obras em língua portuguesa, de vários pendores: religioso, enciclopédico, dicionarístico, e literário.A escolha destas obras

Para essa tarefa, tomo aqui como exemplo A noiva de Frankenstein (James Whale, 1935), filme que se tornaria cultuado nos anos subsequentes a sua realização,

The ultimate objectives of this work are to obtain the Failure, Mode, Effects, and Criticality Analysis (FMECA), with application of the Reliability Centered

Bom, eu penso que no contexto do livro ele traz muito do que é viver essa vida no sertão, e ele traz isso com muitos detalhes, que tanto as pessoas se juntam ao grupo para

Por fim, na terceira parte, o artigo se propõe a apresentar uma perspectiva para o ensino de agroecologia, com aporte no marco teórico e epistemológico da abordagem