top of page

Terrain Generation

University Postgraduate

Procedural Generation Assignment

This terrain generation was created for my postgraduate degree to demonstrate Procedural Content Generation.

My Work

I created a terrain mesh generator along with object spawning to create an environment a player can explore

Terrain Mesh

Using Perlin Noise algorithm with added complexity of layering similar Perlin Noises as Fractal Noise, a terrain created through a mesh is generated out of the Perlin Noise.

Chunk system added to allow player to traverse larger area without have all world rendered at all times, one values around player.

65a8162cfa38a95d6e24971ae3c56157.gif
7c31668bc13be1ea672048bc2dabf20e.gif

Tree Population

Using Poisson Disc Sampling algorithm, positions for objects are randomly chosen then evaluated as to whether they are usable by seeing minimum distance points are to each other.

Perlin Noise Demo

I created a demo level to show the Perlin Noise work with only one chunk and no other algorithms required.

In this level, the user can customise the look of the terrain by altering sliders in the UI and the mesh will update in real time. Options that can be altered are:

  • Size of Perlin Noise

  • Where the Perlin Noise is (Offset)

  • Amount of Fractal Noise

  • Colours of different regions

Link to Demo

964dd52760cb418f1b19ae85b34910cb.gif
3d221cf3726c6ff89ef47256a23ceaa9.gif

Poisson Disc Demo

I created  a demo level to illustrate how Poisson disc sampling can help improve spawning objects by generating random points prior to spawning them and checking if they are allowed.

User can alter values to change how close points can be to each other and how many attempts can be made to see how these impact the algorithm. The user can also turn off the algorithm to see how random spawning would work in comparison.

World Customisation

Before joining a play session, a player can visit a customise world page where they can change the colour of different regions of the terrain and allow them to add a seed, allow the same Perlin Noise to be used.

4d085c02d842f038456f09695f41ab43.gif
Blog Posts
bottom of page