Skip to content

Worldgen: biome terrain modifiers and multi-parameter biome selection #646

@MichaelFisher1997

Description

@MichaelFisher1997

Goal

Make terrain shape respond to biome metadata and move biome selection from heat/humidity-only Voronoi toward a richer multi-parameter climate model.

Why

The worldgen pipeline already has useful biome metadata and Minecraft/Minetest-inspired climate inputs, but several fields are not yet used by terrain generation. This work should make biomes more structurally distinct, improve long-distance biome distribution, and keep LOD/worldgen behavior deterministic.

Scope

  • Apply BiomeDefinition.terrain modifiers to terrain shaping.
  • Extend biome selection beyond heat/humidity into continentalness, erosion/ruggedness, peaks/valleys, and elevation.
  • Preserve existing ocean, coast, river, transition, and LOD behavior unless intentionally retuned.
  • Add baseline reports/tests before tuning.

Phase 0: Baseline And Safety

These can run in parallel.

Phase 1: Terrain Modifier Integration

The integration issue is the serial dependency. The tuning issues can run in parallel after it lands.

Phase 2: Multi-Parameter Biome Selection

The selector data-model issue is the serial dependency. Migration, priority rules, and LOD consistency can run in parallel after the shape is in place.

Phase 3: Compatibility And Tuning

These can run mostly in parallel after Phase 2 starts producing stable outputs.

Phase 4: Polish

These happen after core implementation stabilizes. Documentation can start once the implementation shape is mostly final.

Acceptance Criteria

  • Seeded worldgen remains deterministic.
  • Existing unit tests pass with nix develop --command zig build test.
  • New tests cover modifier application and selector behavior.
  • LOD biome/height output remains consistent with LOD0 enough to avoid obvious seams.
  • The new pipeline is documented enough for future biome additions.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions