Procedural Terrain Generation
A project looking into the various approach to generate terrain in Unity
Last updated
Was this helpful?
A project looking into the various approach to generate terrain in Unity
Last updated
Was this helpful?
This is a project that originally started as my final year dissertation project for university where I wanted to try and find the best approaches for procedural terrain generation in games using Unity.
For the scope of the dissertation, I looked into three different approaches to rendering the terrain; namely the built-in Unity Terrain, a cubic Voxel Engine and the Marching Cubes algorithm. Additionally, the project saw me explore two different data generation algorithms the first of which was midpoint displacement, or as it is also known the Diamond-Square algorithm, and the second algorithm focused on using noise to generate data.
In its current state, the project is comprised of two parts. The first part is a benchmarking system which is designed to sequentially generate a series of terrains using the different rendering algorithms and data generation techniques mentioned above utilising either the CPU or GPU for computation interchangeably. Whilst running, the benchmarking system will track several key values for each terrain generated, some of which include the memory usage, the geometry data of the produced terrain as well as total computation time from initial data generation to final render of the terrain.
The second part of the project provides users with an interface to allow them to directly modify some of the variables used to generate the terrain thus allowing them to generate their own terrains.
Since leaving university, I have further experimented with the project by optimising existing systems and further researching alternative methodologies to generate terrains procedurally. I've begun experimenting with Unity's new Entity Component System and Jobs systems as an alternative approach to the entire project; however, this is still in the very early stages but is something I am keen to act on further.