ludic/changes/zones.md
Orkuncakilkaya 8b85282502 ludic.zones: a disc per player from their fog, merged into clusters; the simulating packages ask whether a place is simulated
zones_set / zones_clear / zones_merge, zones_contains / zones_nearest and the clusters' bounding circles,
over fixed arrays of ZONES_MAX (16). WildlifeWorld.active freezes an animal outside (no state change, no
dice), NpcWorld.active a walker (and no birth outside), VehicleWorld.active a moored boat, and
ThingsWorld.restocks keeps a morning's restock inside; every default is "everywhere", so an unbound game
is unchanged. Tests: the merge (near players one cluster, far two, a player leaving splits a chain),
contains, nearest, the radius; wildlife, npc, vehicles and things pass as before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 15:53:23 +03:00

770 B

bump: minor type: feature ludic.zones: where a world is simulated. A disc per player, (x, z, r) with r = zones_radius(fog) (the fog distance plus 40 m, never under 150 m, 900 m with no fog), overlapping discs merged into clusters with a bounding circle, and zones_contains / zones_nearest for everything that asks; fixed arrays, nothing made per frame. The packages that simulate now ask their world port whether a place is simulated, with a default of everywhere: WildlifeWorld.active (an animal outside is frozen - its state kept, no dice drawn), NpcWorld.active (a walker outside is frozen, and nobody is born outside), VehicleWorld.active (a moored boat outside is left where it lies) and ThingsWorld.restocks (a morning restocks only inside).