feat/world-terrain #121
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!121
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/world-terrain"
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
Adds terrain types to the world map.
TileMapnow stores aTerrainTypeper cell (Grass / Marsh / Tree) instead of a plain walkable flag:~) — impassable but transparent to line of sight (can't stand on it, can see/target across it).#) — impassable and opaque (blocks movement and LoS), drawn as a tall obstacle.Walkability and LoS stay server-authoritative (
TileMap.IsWalkable/HasLineOfSight, shared by server and client). The world map gains a marsh region. No protocol change (the map is a content file, not sent over the wire).Rendering
Land uses the documented UO model — 44×44 iso-diamond tiles drawn 1:1, a few variants per terrain (
grass_0..3,marsh_0..3) picked deterministically per cell so it tessellates edge-to-edge without repeating. The diamonds are derived from a uniform seamless grass/marsh texture (flips for subtle variety) with a gapless diamond mask, so the ground reads as continuous — no dark seams, no light/dark checkerboard. Marsh keeps decorative scatter (reeds / lily / sedge) folded into the depth-sorted pass.How it was tested
TileMapTests: marsh is impassable but open to sight;TerrainAtclassifies each char; off-map reads as a tree edge.just lintclean (0 warnings),dotnet testgreen, CI green.just dev) and eyeballed grass + marsh + scatter.Notes for review
docs/asset-authoring.md(44×44 diamonds, transparent corners, 1:1, variants). Earlier revisions of this branch shipped 256×256 blocks + a scaled 128×128 seamless tile + a grass bush scatter (which caused a harsh checkerboard) — all removed.Checklist
just lintpasses (CSharpier + analyzers, zero warnings)just testis greenTileMapTests)