feat(shared): terrain as a column of solid intervals, and movement onto a surface #283
No reviewers
Labels
No labels
alpha:wave-0
alpha:wave-1
alpha:wave-2
alpha:wave-3
area:assets
area:combat
area:ecology
area:infra
area:render
area:scripting
area:ui
area:world
enhancement
epic
migration
post-alpha
roadmap
tech-debt
type:bug
type:chore
type:design
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
marco/IsoMmo!283
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/volume-world-f1"
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?
Summary
The world stops being a heightfield and becomes a volume: every cell is an ordered column of
half-open solid intervals
[bottomZ, topZ), of which today's single-surface terrain is just the case"one interval, from the world floor, in the default rock". This is the format and the read model — the
groundwork tunnels, caves and mining need (#268), landed before anything is authored on top of it.
Two consequences reach gameplay in this branch, both deliberate:
arrive on, and the server picks it — the client never says where it landed.
maxSlopeZintiledata and is then walkable only where its height differs from its neighbours by no more than that.
It closes the hole no step-height gate can: every single step up a massif is legal, and their sum is a
wall you strolled up. A new unscalable ground is one row of content, zero code.
The design decisions, the rejected alternatives and the reasoning are in
docs/superpowers/specs/2026-08-07-volume-world-model-design.md; the durable rules went intoCLAUDE.md(occupancy conservatively CONTAINS rendered solid; logical cells are never drawn; half-open everywhere,
so no
+1/-1at call sites).Screenshots / recording
The one visible change here —
feat(client): nothing above the player is drawn— is the first, bluntversion of the terrain cutaway, and it is superseded in the next PR of this stack
(
feat/terrain-cutaway), where the behaviour is made structural and gets its screenshots. Capturing themagainst this intermediate state would document something we deliberately replaced. Everything else in
this branch is format, read model and server-side rules, with no visible surface.
How it was tested
IsoMmo.Shared.Testsfor the column/interval contracts: canonical ordering,half-open boundaries, validated-on-read with no repair (an unrecognised section is refused, never
silently fixed), and the packed-storage accessors.
dotnet testgreen (10 test projects),whole solution builds with zero warnings.
IsoMmo.MapBenchgained a warm-load RAM + timing phase to baseline the format before the change.Checklist
just lintpasses (CSharpier + analyzers, zero warnings)just testis greenclose it.
Stack: this is 1 of 3.
feat/terrain-cutawaysits on top of it, andfeat/map-editor-redesignontop of that. Merge in order.