feat(world): terrain base-Z — land baseline sits above the sea (#238) #241
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!241
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/terrain-base-z"
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
Base-Z per tipo di terreno (implementa il design #238, modello additivo):
GroundZAt = terrain.BaseZ + relief. La terra ha base 5, spiagge/oceano 0 — così la terra sta sopra il livello del mare e le coste hanno un dislivello, senza salvare un Z per cella (la base è derivata dal terreno; solo il relief autorato è memorizzato).TerrainDef.BaseZ(colonna opzionale intiledata.txt, default 0), parse/write inTextMapFormat.GroundZAt = BaseZ + reliefinTileMapeCompactWorldMap.LegacyMapImportermemorizza il relief (GroundZAt − BaseZ), così un mondo piatto con terra rialzata importa zero elevazione (la base si riaggiunge in lettura).ProtocolVersion(Z derivato da mappa+tiledata su entrambi i lati).Screenshots / recording
La costa di asterra con la terra a Z5 sopra il mare (spawn 5183,4378). Il gradino esiste geometricamente ma il blend SDF non lo ombreggia → si vede solo come un gradiente verde→blu più largo, non come uno scalino. Reso visibile dall'hillshade (issue collegata).
Vetta vulcanica raggiunta via /tp: Z49 = relief 48 + base 1 — la base-Z è viva sul mondo caricato e il rilievo autorato è preservato (nessun re-bake).
Nota onesta: il gradino di costa non si vede ancora — il renderer sposta il terreno in altezza (
ZScale=4) ma non lo ombreggia, e il blend SDF spalma il dislivello. Alzare il baseline (provato fino a Z5) non basta: è un limite di rendering. Reso visibile dall'hillshade → issue #239. (Lag nelle zone di rilievo → issue #240, pre-esistente e separato.)How it was tested
TerrainBaseZTests):GroundZAt = BaseZ + relief; paritàCompactWorldMapcella-per-cella; passo costa spiaggia→terra ΔZ ok; round-triptiledata.GroundZAt ≥ 1)./tpalla vetta Z49 (=48+1) → base-Z viva sul mondo caricato; passi nell'oceano rifiutati dal server (walkability ok).Checklist
just lintpasses (CSharpier + analyzers, zero warnings)just testis greenDesign: #238 · Follow-up: #239 (hillshade), #240 (perf).