top of page

Procedural Level Generator

 

Time Estimate: 4 Months (~270 hours)

[Click for GitHub Repository]

 

Showcase Video

My Aims

First off, I would like to refer you to this video which was a great guide for creating a procedural 3D level generator, it pointed out some great algorithms that can help with every step of the level generation.

My main goals for the procedural level generator were the following:

  1. The generator should be able to build both 2D and 3D levels.

  2. The randomisation in the generator is determined by a level seed.

  3. There should be three room types: Key, Special and Basic; and rooms should be able to have both simple and complex structures.

I was aiming to create a procedural level generator that could generate interesting levels that you see in games like Enter the Gungeon, but in 3D instead of 2D (with 2D levels still being an option). This goal turned out to be quite the most difficult of my goals to achieve as the algorithms I used in the procedural level generator were not designed with three dimensions in mind (looking at you Delaunay Triangulation).

I wanted to use levels seeds (Level Streams in Unreal Engine) when handling the randomisation of the level generator because A) it allows multiple people to play the same level if they use the same seed and B) it makes it easier to debug and troubleshoot levels that have not generated correctly.

Each room type has a different purpose in the level generator:

Key: These are rooms that are required to be generated in order for the level to function correctly, e.g. Player's spawn room, boss room, shop.
 

Special: Rooms that are not necessary for the level to function but could provide additional objectives for the player to complete or could contain puzzles that reward the player with powerful gear.

Basic: These are the main building blocks of the level which will fill the level after all the key rooms and special rooms have been generated. The player will spend most of their time exploring these rooms so there should be a good variety of these rooms for the levels to not feel monotonous and repetitive.

Rooms should also be any size and shape I want them to be, I don't want this to be restricted as this can also lead to levels feeling monotonous and repetitive if all the rooms are a square/rectangular shape.

As an addition to the procedural level generator, I also wanted to make a minimap so that it would be difficult for the player fell lost when exploring.

Improvements

While I am happy with the current state of my procedural level generator there are some improvements I would like to make in the future:

  • Micro-biomes, these will occupy sections of a level and completely change their appearance and feel in the game. For example, the level's biome is a laboratory, and the microbiome would be an alien containment facility that has been broken, releasing powerful enemies into the level that make it more dangerous to explore.

  • Secret passages that can act as shortcuts in the level or lead the player to hidden treasure.

Software Used

  • Unreal Engine 5

 

Asset References

The models for the room kit were made by our 3D modeller Ryan, and the rooms were contructed by our game designer Pandelis Kyropoulos.

 

Music

"Weirder Dreams" & "The Tech Show" by Andrea Baroni (www.andreabaroni.com)

​Unreal Marketplace
  • Runtime Vertex Color Paint & Detection Plugin by Alex River

 
 
 
 

Game Programming Portfolio - Ross Reynolds

  • Github
  • LinkedIn
bottom of page