PolyhedralDev / TerraOverworldConfig

Overworld config pack for Terra
Creative Commons Attribution 4.0 International
37 stars 37 forks source link

Add information for biome-providers/extrusions directory #133

Closed Browsit closed 8 months ago

Browsit commented 2 years ago

About https://github.com/PolyhedralDev/TerraOverworldConfig#customization

How do I make biomes larger / smaller?

It's said that meta.yml can be used, but the file itself doesn't specify units. For example:

mushroom-island-radius: 4
  # How large any given mushroom island will be.
  # Default: 4

What is that, 4 blocks? Meters? Yards? For anything -scale what does 1 unit represent - global-scale says 300:1 in blocks but is that the same for the rest?

How do I remove all oceans / all land / all hot biomes / etc?

Notice the "etc" ... let's say we want to remove all Mountain biomes. We're led to biome-providers/presets/default.yml so is there something to do here or would it be at the source (and if so, how?). Also, biome-providers/README.md doesn't explain what the Extrusions subdirectory is for.

Please update with clarification.

astrsh commented 2 years ago

Meta Scales

Noise distributing biomes for the most part is arbitrarily scaled. There's no absolute reference that says 'with this list of noise functions at x frequency, with a biome generating within ranges y of the each noise output, within area z there will be a biome on average n blocks wide'. This arbitrary noise scale is what each 'meta scale' modifies, so a scale of 1 means well.. a scaling of 1 i.e no scaling of that noise function (which could produce biomes of any size). A scale of 2 would increase the 'sizes' of applicable noise samplers by 2. (See https://terra.polydev.org/config/development/samplers/index.html#frequency)

To know the exact average block radius that something like 'mushroom-island-radius: 4' produces, you would need to go through and figure out how whatever particular noise algorithm is being used produces noise, determine some kind of 'unit length' between noise 'details' (e.g the size of the simplex grid used for simplex noise), and factor in everything that could possibly a affect that absolute reference size (which would probably require knowing how every step of the biome distribution process works for that particular biome provider).

Figuring out how things translate to exact block sizes is kinda an ass process and not really practical for anybody to do, it's way easier to just eyeball how big things are and adjust accordingly rather than being super scientific with exact block sizes. These meta scales simply provide an easy method to modify the arbitrary size of things by a factor.

Presets

Picking and choosing from presets only provides macro changes to biome distribution, for more specific things that we don't already have an easy way of changing (e.g removing all mountain biomes) would require modifications to the stage(s) that generate them. Making guides for specific modifications like this not really a priority and for such modifications it would be easier to just ask how to in Discord for the meantime.

Extrusion Dir

This should be documented, just hasn't been done :P

Browsit commented 2 years ago

Thanks for the clarification. It would great if meta.yml could have a header comment stating that all values are arbitrary and to use a "try it and see" approach.

Not expecting specific guides, but how would one generally determine which stage needs to be modified? Looking at default.yml there's a cacophony of stages with no clear indication of which one generates biomes (basic_continents jumps out but as you say there's only a macro-level pool). Is there some rule of thumb to go by?

astrsh commented 2 years ago

Something like that can be added

The current pipeline is setup such that the base ocean/land zones are distributed via the source, then slowly subdivided into more specific areas according to different noise maps.

The process is Continental (ocean/coast/land) -> Elevation (group biomes into zones based on terrain height) -> Temperature -> Precipitation -> Biome specific variants

Between those stages misc stuff like volcanoes, mushroom islands, etc are added.

This ordering should probably be documented somewhere, however is going to be slightly changed with 2.0 as elevation zones within the pipeline will be replaced by a global terrain height map.

Browsit commented 2 years ago

What I'm understanding is that the file equivalent of that process is:

biome-providers/sources/basic_continents.yml -> biome-providers/stages/distribute_elevation_zones.yml -> biome-providers/stages/distribute_temperature_zones.yml -> providers/stages/distribute_precipitation_zones.yml -> biomes/{NESTED_FOLDERS}/{BIOME_FILE}.yml

So deleting a biome file requires working backwards through the pipeline and removing any trace of that biome, which might be feasible for one biome but complex for many. If you don't mind we'll submit a PR to share that information.

astrsh commented 2 years ago

Yeah, after precipitation zones it'll either split off into actual biomes or into the variants stage - PRs are welcomed. The headers of the main stages should have most of that information already but if you think it should be somewhere else feel free to PR that

astrsh commented 2 years ago

Also I should note that there will be a wiki for the overworld some time in the future:tm: where stuff like this will be explained - if you want to make markdown pages for that add them to the .wiki subdirectory which will be set up to sync with https://github.com/PolyhedralDev/TerraOverworldConfig/wiki