Per-preset height curve for terracing and flatter land #160
Labels
No labels
assets
bug
duplicate
enhancement
help wanted
invalid
question
testing
ui
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
liamjd/UntitledColonyBuilder#160
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Milestone 2, items 3 (second half: height distribution) and 2 (first half: more flat land generally).
Problem
Height is linear in the noise:
h = n * height_scale + datum_level, then floored into levels. Noise is smooth, so a linear map gives evenly spread levels, and the terrain is a staircase of narrow one-tile terraces everywhere. Buildings need a footprint with no level spread (placement_controller.max_level_spread = 0), so a narrow terrace is unbuildable even when it is gently sloped.Proposal
A per-preset curve between the shaped noise and the height scale:
@export var height_curve: CurveonTerrainPreset, null meaning linear. That keeps existing.tresfiles unchanged, and the Curve editor in the inspector makes it tunable without code._apply_shape(), so a crater's profile is shaped too. Or before; decide which reads better and note why.terrace_steps: intshorthand that builds a stepped curve in code, if hand-authoring curves proves fiddly. Not required.Each of the four presets gets a tuned curve as part of this ticket.
Acceptance criteria
TerrainPreset.height_curveexists, and null reproduces today's maps exactly. Pin that with a unit test against a fixed seed.tools/probe_terrain_stats.gd(#159) goes in the PR.Depends on
#159, so the curve is tuned against a size-independent range rather than retuned after it.