Rivers across the plains preset #167

Open
opened 2026-10-11 20:23:52 +01:00 by liamjd · 0 comments
Owner

Milestone 2, terrain goal: "Plains map could have rivers running through it".

Proposal

Unlike the canyon (#165), plains have no predefined channel, so the river's path has to be derived:

  • Choose a source on one map edge and a mouth on another, deterministically from the seed.
  • Trace the path downhill: a cheapest-path search where climbing costs a lot, rather than straight lines. Rivers that run uphill read wrong instantly, even on a stylised map.
  • Carve it with #165's shared river step (path + width → lowered, water-masked tiles with stepped falls).
  • river_count and a width on the plains preset.

The island and crater could use the same step later (a river to the sea, a stream into the lake). Keep the tracing independent of the plains shape so that stays possible.

Decisions needed

  • Crossing: the same as #165. A plains river splits the map in two, and bridges are out of scope. Fords again are the recommendation, for consistency.
  • Count and width: one river or several, and whether rivers may merge. Start with one, and don't build merging until it is wanted.

Acceptance criteria

  • With river_count = 1, a continuous channel runs edge to edge, and its surface never steps up along its course.
  • Same seed, same river.
  • #162's reachability and #163's landing guarantee both hold with the river on.
  • Unit tests for the monotonic-descent property and for continuity (every channel tile is 8-adjacent to the next).
  • Headed screenshot.

Depends on

#164, and #165 for the shared carving step.

Milestone 2, terrain goal: "Plains map could have rivers running through it". ## Proposal Unlike the canyon (#165), plains have no predefined channel, so the river's path has to be derived: - Choose a source on one map edge and a mouth on another, deterministically from the seed. - Trace the path **downhill**: a cheapest-path search where climbing costs a lot, rather than straight lines. Rivers that run uphill read wrong instantly, even on a stylised map. - Carve it with #165's shared river step (path + width → lowered, water-masked tiles with stepped falls). - `river_count` and a width on the plains preset. The island and crater could use the same step later (a river to the sea, a stream into the lake). Keep the tracing independent of the plains shape so that stays possible. ### Decisions needed - **Crossing:** the same as #165. A plains river splits the map in two, and bridges are out of scope. Fords again are the recommendation, for consistency. - **Count and width:** one river or several, and whether rivers may merge. Start with one, and don't build merging until it is wanted. ## Acceptance criteria - [ ] With `river_count = 1`, a continuous channel runs edge to edge, and its surface never steps **up** along its course. - [ ] Same seed, same river. - [ ] #162's reachability and #163's landing guarantee both hold with the river on. - [ ] Unit tests for the monotonic-descent property and for continuity (every channel tile is 8-adjacent to the next). - [ ] Headed screenshot. ## Depends on #164, and #165 for the shared carving step.
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
liamjd/UntitledColonyBuilder#167
No description provided.