Subscribe to our subreddit to get all the updates from the team!
I have integrated the zone separation with my implementation of the Marching Cubes algorithm. Now I have been working on zone generation.
A level is separated in the following way :
- Shrink the zone map to exactly fit an integer number of Chunk2Ds, which are of 32² m².
- For each Chunk2D, analyse all zones inside its boundaries and determine all possible heights for Chunk3Ds, which are of 32³ m³. Imagine this as a three dimensional array as an hash map : we are trying to figure out all keys for Chunk3Ds for a given Chunk2D.
- Create and generate a Chunk3D for each height found.
- Execute the Marching Cubes algorithm to assemble the geometry for each Chunk3D.
In our game, we want levels to look like and feel like a certain world. The first world we are creating is the savanna. Even though each Chunk3D is generated using 3D noise, I made a noise module to map 3D noises into the 2D to able to apply 2D perturbation to the terrain.
I also tried some funkier procedural noises :
The important thing with procedural generation, it's to have a certain level of control over it. With the new zone division system, I have achieved a minimum on that path for my game.