Geração Procedural de Dungeons

Robson Cruz

Introdução

Dungeon

  • Uma prisão subterrânea.

 

  • Uma configuração labiríntica composta de salas e corredores.

 

  • Muito comum em jogos roguelike.

Roguelike

  • Um tipo de gênero de jogos;

 

  • Possui, entre outras características:
    • Permadeath;
    • Resource Management;
    • Procedural Content Generation;

Geração Procedural

  • Consiste na geração aleatória de conteúdo;

 

  • Normalmente ocorre nos momentos de carregamento;
  • Fatores relacionados ao jogador podem ser utilizados para a geração;

Geração Procedural

Modelagem

Objetivos

  • Criação de um mapa completamente aleatório
  • Dada determinada densidade, obter uma dungeon com maior ou menor quantidade de corredores;

Vértices

  • São geradas m salas, contendo as informações necessárias (largura, altura, armadilhas, monstros, etc).

 

  • Cada sala é então, tratada como uma vértice;

Arestas

  • São gerados n corredores, conectando as salas de forma aleatória.

 

  • Assim como as salas, os corredores podem conter armadilhas, emboscadas, ou armadilhas.

 

  • Cada corredor é então tratada como uma aresta do grafo.

Montagem do Grafo

  • Um grafo então é montado, contendo as salas(vértices) e corredores(arestas).
  • As vértices brancas são "candidatas" a spawn-room;

Montagem da Dungeon

  • Escolhemos uma das candidatas a spawn-room, e inicializamos uma busca em largura a partir dela.
  • As arestas não selecionadas pela busca em largura são descartadas, e removidas do grafo;

Montagem da Dungeon

  • Salas que não possuem nenhum corredor ganham um corredor para o grafo se tornar conexo.
  • Algumas arestas extras são adicionadas para criar alguns ciclos no grafo;

Finalização

Considerações Finais

Links interessantes

Donjon Dungeon Generator https://donjon.bin.sh/d20/dungeon/

Rooms and Mazes: A Procedural Generator

http://journal.stuffwithstuff.com/2014/12/21/rooms-and-mazes/

Procedural Content Generation in Games

http://pcgbook.com/

TP2: Grafos

By Robson Cruz

TP2: Grafos

  • 57