M3 — Area of Interest (spatial partitioning + local chat) #5
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#5
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?
Players should only see and receive updates for nearby entities. Also makes
saylocal, closing the global-chat tech debt.Scope
saybecomes local (interest-scoped).Definition of Done
Base DoD applies on top (tests green, whole solution builds, zero warnings, multi-platform preserved); the criteria below are the issue-specific delta.
sayreaches only nearby players; the global-chat tech debt is closed and the range is documented.Done and merged to
main(commit7c60def).Players now only receive join/leave/move/say for entities within a Chebyshev radius (
GameOptions.AoiRadius, default 12). Each tick reconciles every observer's visible set (InterestManager+ pure, unit-testedInterestDiff); entering view sendsPlayerJoined, leaving sendsPlayerLeft, and chat is scoped to the speaker's area of interest. The world map was enlarged (48x36) so AoI is observable.Closes the "chat say is global" tech debt. Verified: unit tests (visibility diff, Chebyshev range) + integration tests (a far player is absent from Welcome and never seen; chat reaches nearby but not far listeners), with per-test server isolation. 128 tests green, zero warnings. No change to the
IsoMmo.Shared/Protocolwire contract and the client is unchanged — join/leave-on-AoI reuse the existing messages.