3
\$\begingroup\$

I'm looking for ways to generate random biome borders (like what Minecraft has).

One technique involves choosing specific biomes based on (eg) a rainfall map and a temperature map. But that just determines which biome to place, not where the borders between biomes are.

I don't want to use quantized Perlin noise directly; that would generate certain quantized values strictly within other zones, whereas I'd like finer control over which biomes can abut others. For example, in Minecraft one can see mountainous terrain, forests, plains, or deserts right next to the ocean.

Many of the solutions to "the biome problem" propose computing the whole universe in a heuristic manner. I want to generate infinite terrain, and to me that suggests the algorithm be strictly functional: given an X,Y value (and a world seed) the algorithm can easily spit out a biome value.

So, my question: what are some techniques for identifying random, non-trivial-sized, contiguous chunks of terrain to be of a given biome?

\$\endgroup\$
  • \$\begingroup\$ Questions about how a specific game accomplishes some task are off-topic here (they are trivia); questions about how to accomplish something similar to how another game does it are fine. I'm going to edit your question to the latter. \$\endgroup\$ – Josh Jul 16 '14 at 20:32
2
\$\begingroup\$

One possibility is to sample the rainfall/temperature maps at the center of each Voronoi cell, and then assigning that biome to each point within the cell. The biome edges can then be made more interesting by distorting the map, so that they aren't straight lines.

This can be made "functional", because you can compute which Voronoi cell you are in after the distortion in a functional way. The rainfall and temperature maps themselves might use Perlin noise or other functions to make them interesting, rather than depending on terrain.

Most systems generate the terrain all at once because it is much easier to make the terrain or presence of water affect the biomes in a non-local way. You will note that in Minecraft the biomes are not very physically plausible: there is no rain shadow effect, for example, which requires knowing what mountain ranges are nearby, and the wind patterns.

EDIT: Voronoi cells are an alternative to perlin noise for making things which have structure. In this case you don't want the biomes to vary too quickly or be contained within one another. Voronoi cells are the region of the plane which is closest to a set of points. So rather than sampling the rain/temp map at each point to determine the biome, all points in an area sample the same center, and thus have the same value. Here is a reference on implementing this. You will need a to modify it so that the noise returns the location of the closest point, not just the distance(s).

\$\endgroup\$
  • \$\begingroup\$ You should specify what Voronoi cells are. I suspect the real answer to the OP's question is that Voronoi cells are a thing and they are unaware of them and how they apply. You've got the part about how they apply, but not the part about what they are. \$\endgroup\$ – DampeS8N Jul 17 '14 at 15:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.