Procedural generation: how to guarantee a set of buildings within biome?

Godot Version

Godot Voxel Tools 4.4.1 stable

Question

Hello! I am using Zylann’s voxel tools to generate a voxel terrain. I have gotten stuck on the part where I want to guarantee a set of buildings within a biome. For example I might want a Capital/Core structure, 2 villages and 3 dungeons.

What I do currently

How I generate terrain currently is looking at a very simple cellular fastnoiselite and letting the value of the noise determine the biome:

Currently I am able to generate biomes basically, image is from the 2D minimap I have:

What’s difficult is, the terrain generator only keeps track of a “little rectangle” around the player, reads the noise within that rectangle and generates the terrain. I don’t have a view of the entire biome “zone” so that I could map out my set of structures in the biome, at least I don’t see how I can accomplish that…

At first I thought I could use a second noise that has the same overarching noise structure but with dots for where structures should be, for example:

I would place the “Core” structure at the black dot, but then I realize I will have a problem with the imprecision of the “black” noise finding more than one coordinate in the black spot to place a “Core” in… Also I don’t have a solution for the rest of the buildings…

What I’m thinking about doing instead

I’m thinking of scrapping the terrain generation I have, and instead of using cellular noise to generate the biome, I instead generate the structures first, then determine the biome around the “Core” and its connected villages and dungeons.

Something like this image:

This might not work immediately either due to my “little rectangle”-problem, but…

I’m trying to figure out if something exists for this type of procedural generation? Is there a concept for this, like a “star chart” generation algorithm? I’m thinking it should be something that creates these “Core” parents with their child structures, without having the children overlap with other “Core” networks.

Maybe someone with experience in terrain generation can give me some pointers? Am I right in ditching the cellular noise and should instead generate structures first and biomes after? Or could the original method be expanded into the generation I want?

Generating the structures first and the biome around them sounds like a better plan to me, though you could mix it a bit. Maybe something like:

  • generate all your hubs as random points on the map
  • subdivide those into voronoi regions
  • place sub-buildings within those regions
2 Likes

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.