A downloadable project

Geração procedural de terrenos para jogos digitais 2D através do Perlin noise

Ismael Henrrique Henke Flórez

Escola Politécnica – Universidade Do Vale Do Itajaí (UNIVALI)

Florianópolis – SC – Brasil

ism4elflorez@edu.univali.br

Abstract. This article discusses how a system with minimal parameters for generating 2D scenes using Perlin noise can be created. Throughout the text, the introduction, problem, general and specific objectives, research classification and bibliographic references will be presented. Finally, it will be showcased how the experiment's evaluation of the parameters found for the terrain manipulation will be made.

Resumo. Neste artigo é abordado sobre como pode-se criar um sistema com parâmetros mínimos para a geração de cenários 2D através do Perlin noise. Ao decorrer do texto serão apresentados a introdução, problema, objetivos gerais e específicos, classificação da pesquisa e referências bibliográficas. Por fim será mostrado como será feito a avaliação dos experimentos dos parâmetros encontrados para manipulação dos terrenos.

1. Introdução

Nos jogos digitais contemporâneos, cenários, mapas e terrenos são utilizados para possibilitar uma imersão da narrativa e da jogabilidade. Comumente esses cenários são elaborados pelos artistas e/ou designers pré-definidamente de forma com que os mapas e terrenos serão sempre gerados igualmente para todo jogador. Porém, criar muitos assets manualmente para implementar variedade, pode consumir muito tempo, o que leva a possibilidade de uma abordagem que pode ser mais eficiente em alguns casos, a geração de conteúdo procedural. [Short e Adams, 2017] 

Durante os anos 80, os consoles e computadores possuíam pouca memória, de forma com que isso poderia se tornar um problema se feitos jogos maiores ou mais complexos. Sendo assim, ao invés dos assets serem salvos na memória do hardware, alguns jogos acabaram fazendo a utilização de conteúdo gerado proceduralmente, de forma a economizar memória. [Melnychuk, 2020]

De acordo com Dahlskog e Togelius (2012), na indústria de jogos digitais, a geração de conteúdo procedural foi utilizada para criação variada de conteúdos para permitir a rejogabilidade de um jogo digital. Os tipos de conteúdo de jogos que foram gerados variam de mundos de jogos, níveis e itens para decoração (Figura 1).

Figura 1. Geração procedural de terreno no jogo Spelunky.

Para a geração procedural de conteúdo, pode ser utilizada uma ferramenta chamada noise ou ruído, que é aplicada para geração de texturas, nuvens e efeitos visuais, mas também é uma boa técnica para geração de terreno. O Perlin noise, também chamado de ruído gradiente, desenvolvido em 1983 por Ken Perlin, é um tipo de ruído que utiliza de gradientes e pseudo geração de números para criar um ruído mais suave e realista. [Melnychuk, 2020] (Figura 2).

Figura 2. Exemplo de ruído de Perlin.

Mapas topográficos, o formato de um lago ou o layout de continentes são tipos de mapas que são comumente gerados proceduralmente, com isso, eles requerem a geração de um grid de valores bidimensionais que variam em graus de suavização de célula para célula, esses tipos de grids são chamados de heightmaps, podendo ser gerados com o Perlin noise, onde os pixels brancos têm valores mais altos que os pixels pretos, como descrito por Short e Adams (2017), Isto pode ser utilizado para criar terrenos de montanhas por exemplo.

2. Problema

Como construir um sistema que utiliza parâmetros para a geração de terrenos 2D através do Perlin noise? O questionamento está voltado para o entendimento de como é possível parametrizar a geração de mapas procedurais de maneira eficiente, e assim conseguir controlar estes cenários que serão gerados (Figura 3). Dentro do contexto de jogos digitais o Core Loop, ciclo de repetição principal do jogo, é fundamental para conseguir uma boa jogabilidade, sobre isso tem-se que a geração procedural de terrenos afeta diretamente o ciclo de jogo fazendo com que seja menos previsível porém aumentando a rejogabilidade do jogo. [Sicart, 2015]

Figura 3. Exemplo de configuração de parâmetros utilizados nos terrenos do jogo Minecraft 1.16.

Para desenvolver o problema, será feito um estudo aprofundado sobre o Perlin noise para compreender melhor suas funcionalidades e aplicações do cálculo dentro do cenário de jogos digitais. Sequencialmente deverá ser feita a identificação de referências que utilizam o mesmo método para geração procedural de mapas, analisá-los e levantar quais as semelhanças e diferenças entre os métodos de aplicação. Por último é realizado o entendimento e esclarecimento geral para dar início na criação do sistema de cenários 2D com Perlin noise.

3. Objetivos

Neste tópico é abordado o objetivo geral e os objetivos específicos do artigo.

3.1. Objetivo Geral

O presente artigo tem como objetivo a criação de um sistema para geração de cenários 2D procedurais através da utilização do Perlin noise.

3.2 Objetivos Específicos

  • Entender a funcionalidade e aplicação do Perlin noise;
  • Identificar referências que utilizam o Perlin noise para geração procedural;
  • Analisar os métodos para a utilização eficiente do Perlin noise;
  • Explicar como será feito a aplicação do Perlin noise no sistema de geração de cenários 2D procedurais;
  • Prototipar sistema para geração de cenários 2D procedurais;
  • Analisar quais parâmetros são eficientes para avaliar os diferentes tipos de cenários gerados;
  • Organizar e mostrar os resultados coletados.

4. Classificação

Neste tópico é abordado a classificação da pesquisa baseada em objetivos e procedimentos metodológicos.

4.1 Objetivos

Dado que a abordagem é voltada para o lado experimental, a pesquisa se enquadra tanto como exploratória quanto explicativa, está entendido que precisa-se de referencial teórico para abordar adequadamente sobre o Perlin noise e suas aplicações, levando em consideração que é necessário experimentar e avaliar, de maneira científica, para encontrar os parâmetros mínimos necessários na geração procedural.

4.2 Procedimentos Metodológicos

Como procedimento metodológico será utilizado o levantamento bibliográfico a fim de conseguir esclarecer e entender o Perlin noise, já para obter com precisão quais são os parâmetros mínimos necessários é preciso coletar dados científicos utilizando a pesquisa experimental, no mais será necessário efetuar diversos testes em diferentes combinações para chegar a uma combinação satisfatória de parâmetros.

Com isso, teve-se como objetivo encontrar referências e informações relevantes para contextualizar o tópico de Perlin noise e apresentar suas técnicas de utilização, para assim poder realizar sua aplicação no contexto do projeto e prototipar um sistema que gere cenários 2D proceduralmente.

Tendo os objetivos definidos, foram organizadas reuniões para definir as atividades a serem realizadas pelos membros da equipe, como a busca de referências bibliográficas, e para acompanhar o andamento do projeto.

Finalmente, a utilização de referências se baseou em obras que demonstram o motivo da utilização do Perlin noise e que explicam suas técnicas de utilização, para que assim a equipe tenha informações sólidas para a aplicação destas no projeto.  

5. Pesquisa Bibliográfica

Como metas dos objetivos da pesquisa, estão a busca e análise das referências bibliográficas com base na sua utilidade para contextualização do assunto e capacidade de replicar as técnicas encontradas em artigos e livros para a testagem e avaliação das suas eficiências no contexto de geração de terreno procedural através do Perlin noise.

No processo de coleta de referências bibliográficas para a fundamentação do projeto, foram encontradas obras que atendem de forma satisfatória os objetivos do estudo. Sendo assim, obras como livros que contextualizam o assunto foram utilizados, de forma a explicar o surgimento da geração procedural e os motivos de sua utilização, que pode ser associada ao Perlin noise, visto que este é uma ferramenta útil para a geração procedural. Além disso, também são fundamentais para o tópico referências que explicam a utilização do Perlin noise, como o ruído funciona, e quais suas técnicas de aplicação, como demonstrado por Short e Adams (2017).

6. Experimentação e Avaliação

Para realizar os experimentos durante o processo de pesquisa é necessário dividir os primeiros parâmetros de controle para a geração, e assim conseguir obter diferentes configurações de valores. Com essas características aplicadas de diversas maneiras será coletado um conjunto de valores e resultados de terrenos para analisar a eficácia e viabilidade. Encontrando diferentes padrões de gerações a partir dos valores, será organizado entre grupos de biomas, cada um com sua particularidade.

Parâmetro

Descrição

Frequência 

Controla a densidade dos detalhes na textura

Amplitude 

Determina a amplitude das oscilações na textura

Número de Octaves

Define o número de camadas ou iterações de ruído a serem sobrepostas para criar a textura final

Persistência

Controla a influência relativa de cada oitava sobre a textura final

Lacunaridade

Define a escala ou frequência de variação entre as oitavas sucessivas

Seed

Uma sequência numérica que determina a sequência de valores pseudo aleatórios gerados

Tabela 1. Nome dos parâmetros iniciais e sua descrição.

Quando feita a avaliação dos resultados deve-se criar diferentes categorias para encontrar as semelhanças de cada terreno, e seguir classificando de acordo com os padrões estabelecidos, serão levadas em consideração especialmente as características dos biomas, como oceanos, praias, lagos, ilhas, continentes, entre outros. Tendo os dados recolhidos, é possível analisar e discutir quais são efetivamente os melhores parâmetros para conseguir acompanhar e manipular a geração de mapas procedurais.

7. Atividades

Para o cronograma de atividades a serem executadas de forma a desenvolver o projeto, determina-se necessária a realização de reuniões casuais com o intuito de discutir os padrões a serem encontrados para a aplicação dos objetivos do projeto. Além disso, exercer frequentemente a construção do sistema através da codificação das técnicas observadas nas referências. 

8. Resultados Esperados

Depois de analisadas as diferentes técnicas para geração de terrenos procedurais através do uso do Perlin noise apresentadas nas referências coletadas, estas metodologias serão aplicadas com o intuito de atingir os resultados esperados.

Com isso, os resultados esperados são uma coletânea de diversos terrenos 2D gerados com a utilização do ruído de Perlin, de forma com que cada terreno gerado tenha variações nos seus parâmetros para a obtenção de terrenos diversificados. Além disto, atingindo estes resultados, consegue-se também entender quais são os parâmetros mínimos necessários para a geração destes terrenos e analisar quais são as combinações de parâmetros possíveis para diferentes tipos de cenários, e finalmente, determinar dentre este parâmetros, quais tiveram os resultados mais satisfatórios, baseando-se na sua versatilidade de uso e na capacidade de movimentação do jogador pelo terreno gerado.

9. Conclusão

Com a finalização do projeto para a M3, pode-se tirar conclusões sobre os resultados esperados e complicações, com isso, houveram complicações a respeito da finalização do projeto de forma prática, onde os resultados esperados não foram atingidos pela equipe do projeto devido a problemas na equipe do presente trabalho. Contudo, as pesquisas realizadas para a realização do projeto possibilitaram um entendimento mais aprofundado sobre o assunto abordado, então, apesar das complicações presentes e do protótipo esperado não ter sido finalizado em sua completude, a pesquisa proporcionou um entendimento considerável sobre o Perlin noise e sua aplicação na geração procedural de terrenos bidimensionais, cumprindo a função esperada de explicar e explorar o tema do projeto.

10. Referências

Melnychuk, V. (2020) “Landscape generation using procedural generation techniques”.

Sicart, M. (2015) “Loops and Metagames: Understanding Game Design Structures”.

Short, T. e Adams, T. (2017) “Procedural Generation in Game Design”.

Dahlskog, S e Togelius, J. (2012) “Patterns and Procedural Content Generation”.

-‌---

Ficha completa da equipe:

Ismael Henrrique Henke Flórez - Autor -  https://ismaelfz.itch.io

Nicolas Schussler - Autor - https://nicksmy.itch.io

-‌---

Marcelo Dornbusch Lopes - Professor - https://m4rc3lo.itch.io/

Universidade do Vale do Itajaí - UNIVALI

Cesar Albenes Zeferino | Diretor da Escola Politécnica

Giorgio Gilwan | Coordenador do Curso de Design de Jogos

Rafael Kojiio | Coordenador Gamelab UNIVALI

-‌---

Artigo desenvolvido como requisito parcial para obtenção de aprovação na disciplinas: Programação Aplicada Avançada - Professor - Marcelo Dornbusch Lopes.


Leave a comment

Log in with itch.io to leave a comment.