World Builder Biomes Explained?


#1

New to the forums. I’m using World Builder and am fascinated by the use of programmatic noise and the procedural aspect of building worlds. Great stuff. I’ve search the forums a bit and read some stuff but haven’t found an answer to the following. Forgive me if there’s a thread out there that I missed.

I don’t completely understand the concept of a biome. I mean, I know what a biome is, but I’m not understanding how it’s used in the World Builder. Are biomes altitude-based (height-based). Do they describe 2D or 3D areas in the world which are affected by specific temperature and humidity values? Both?

I think I understand why one would provide a 2D noise pattern for vegetation, humidity and temperature biomes. Different objects (vegetation, etc.) can be populated in the world based on constraints in those various biomes. For example, only render this specific type of bush where the humidity biome has a certain value, or is within a certain range, etc.

But can someone explain why we would provide a 2D noise pattern (translated to 3D) for Altitude?


#2

There are four (noise) inputs to biome selection: altitude, humidity, vegetation, temperature. Each biome can specify desired ranges of each (which factors into which biome is chosen).

In reality, those four inputs are largely arbitrary (just common values to restrict on) Altitude does not effect the generated world’s altitude, etc. They only factor into biome choice


#3

Thanks for the explanation, Nevir.

So, as I understand it… each block in the world I am creating needs arbitrary values for the attributes: altitude, temperature, humidity and vegetation. For each attribute, values are provided by a 2-dimensional graphical noise map, each color on these maps representing a different numeric value between 0 and 1. When adding a Biome, I can set where that biome will be active by setting minimum and maximum values for each of the above four attributes. For example, if a particular biome has a minimum value for humidity set to “0” and a maximum value for humidity set to ".33, that biome will only be active in areas of the world (blocks) having a humidity value between 0 and .33 (inclusive).

So, in theory, I could provide a “noise” map for the world’s “Humidity” attribute for which the entire left half is white (1) and the entire right half is black (0). If I add a new biome to the world and set it’s minimum humidity to “0” and max humidity to “0”, that biome will be the entire right side of the world. Is this correct?


#4

This is exactly right - and a good explanation.

However, I would add that whilst the four inputs are arbitrary, I think it’s best to “set them correctly” in keeping with the theoretical biome properties. These inputs allow you to control the transitions between biomes, and limit which biomes can appear next to each other. As an example, if you have a desert biome (and set the temperature to range to high) and an arctic biome (and set the temperature range to low), then you can make sure that they never appear unnaturally next to each other by including a buffer biome with the temperature range set in the middle.

So @nevir is correct that they’re arbitrary, but if used correctly they will help you control the layout of biomes within the world in a natural and realistic way.

(This makes the assumption that the noise function applied to the temperature selection is smooth, ie. isn’t discontinuous between high and low, and transitions between medium. If that makes sense.)


#5

Thanks @james! However, applying this explanation to the Altitude attribute is a bit confusing. I would expect the altitude for each block in the world to be defined by the combination of height maps across the active biomes instead of the result of a noise map applied. I understand temperature, humidity and vegetation derived this way as these attributes need to be provided by the world designer in some way.

I guess the world’s Altitude noise map still eludes me. Still playing…


#6

The vegetation, humidity, temperature and altitude noise functions on the generator are specifically (and only) for biome selection. They have no effect on the height of the actual resultant generated landscape height in the world. The generator will actually select the 4 most suitable biomes (based on the noise functions and the ranges set on the biomes) and blend between these biomes. This achieves a smooth and hopefully natural transition between the different biomes as they meet.

To clarify:

  1. the generator altitude noise function is only used for biome selection.
  2. the biomes height map defines the actual height of the landscape. (Ignoring the blending between biomes.)

If this doesn’t explain it - then we’ve reach the limit of my understanding - and we’ll need to call in the A-Team (@lucadeltodecso).


Additional: Btw - this isn’t obvious and it takes people a moment to wrap their heads around it. (I’m super impressed with all the players who’ve managed to work it out themselves.) There are plenty of people in the dev team who still don’t understand it!!


#7

Explanation makes sense, thanks! I will continue to experiment with the four biome selection noise maps at the world level and their respective biome range values. @lucadeltodecso, anything to add would be greatly appreciated to help demystify the altitude noise map specifically.

Thanks all!


#8

The generator’s altitude noise function is identical to the other 3. If you understand the usage of vegetation, humidity and temperature - then you also understand altitude. The is no additional special association.


#9

I think I got it…

  1. Provide an arbitrary value between 0 and 1 for each of four attributes at the world level (an easy way to randomly do this is to use graphical noise maps based on vaious noise algorithms; Perlin, Simplex, Worley, Gabor, etc.).

  2. Set a range of acceptable values for each of the four world attributes at each biome level.

  3. When the OO Generator is creating the final world (selecting biomes to render for each specific block), each biome is evaluated against the current block’s attribute values and any biome with valid ranges set for all four attributes becomes a candidate for rendering in that block. Is it true that all four ranges should be valid?

  4. A biome’s “Weight”, “Exponent” and “Bias” are then used to break ties, etc.

Is it true that the four world-level attributes themsleves can be called anything? I think the fact that one was called ‘Altitude’ was throwing me a little (a lot).


#10

You only need set 1 generator noise function to select biomes for simple worlds. But once you start creating worlds with 20+ biomes you can generate more interesting variety with more dimensions to the selection. (Ultimately we want players to select from (and contribute to) a biome library.)

Yes (assuming my understanding is correct) they’re just labels. But they are named to match variables in real world biome identification. Which I think is important once we start building a library of biomes - assuming we want them to transition in a natural order. (Rather than desert -> arctic -> jungle -> moon surface -> ocean.) If the label were arbitrary then we wouldn’t be able to achieve this natural transition configuration.


#11

I have absolutely nothing to add here :slight_smile:


#12

That means @james nailed it! Thanks.


#13

@jiivita Have you done a video on this yet? I’ve not played with the world builder or biomes yet. I actually would love to tinker with it.

Would be awesome if there was a video to follow along to maybe see some do’s and don’ts.

If there is video’s made by anyone, could I get a link to them please.

Thank you


#14

@Zina

Chimera Gaming did one not too long ago…

Also @Squidgy has a playlist on YouTube on it:

however it’s quite old now =/ the basic concepts might still be helpful :thinking:

I’ve considered making some videos on it, and a part of me wants to learn to use it… but yeah I’m completely lost on how to use it :rofl:


#15

Thank you kind sir