Ecology: make natural nodes physical (enforce BlocksWalk/BlocksSight in movement + LoS) — before F5 #255
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#255
Loading…
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?
Gap surfaced by the F4 whole-branch review (ecology AoI slice, #251 / epic #250).
Natural nodes now travel to clients over AoI (F4) carrying each node's
BlocksWalk/BlocksSight, and the client stores them — but the authoritative server never enforces those flags.MovementSystemwalkability and line-of-sight consult only the tile map (IsWalkable/HasLineOfSight/ tiledata), never theNaturalNodeRegistry. So a mature pine or a rock outcrop (bothBlocksWalk = true) is walk-through and see-through on the server.Harmless while nodes are invisible, but the moment the client renders them (F5) a solid-looking tree the player walks through is a visible authority desync — so this is due before F5.
Scope
BlocksWalkis rejected (like an obstacle static).BlocksSightalong the ray.NaturalNode.CurrentStageDef).Definition of Done
BlocksWalknode (rejected server-side, like a blocking static); a walkable-stage node (e.g. pineuprooted, rockdepleted) is passable.BlocksSightnode between two cells.Worldfor both (blocked + passable stage); base DoD (tests green, 0 warnings).docs/architecture.mdonce enforced.Movement half done in the PR above: players + creatures can't walk through a BlocksWalk node (MovementSystem/CreatureSystem consult NaturalNodeRegistry.BlocksWalkAt). Remaining for #255: (1) node-blocked line-of-sight (HasLineOfSight is in Shared/TileMapRules, can't see the GameServer registry); (2) cosmetic — GM/scripted placement (ResolveStart/Teleport) doesn't node-check, so a scripted spawn could visually overlap a tree (not a correctness bug).