Fungi
Frame-aware observation for riders
Read an actor's world position and position relative to its frame.
When an Agent observes a rider on a moving frame, the actor includes frame and
local as well as its current world-cell at. Use at to reason about where
the rider is in the world; use local to reason about where it sits on the
vehicle or platform. The frame ID names the supporting entity.
An Agent can inspect the observed actor without confusing those coordinates:
type RiderObservation = { id: string; at: { x: number; z: number }; frame?: string; local?: { x: number; y: number; z: number; facing: number };};
function riderReport(actor: RiderObservation): string { if (!actor.frame || !actor.local) return `${actor.id} is not riding a frame`; return `${actor.id} rides ${actor.frame} at local (${actor.local.x}, ${actor.local.z}); world cell (${actor.at.x}, ${actor.at.z})`;}For example, when a raft moves, at changes with it while frame and the
rider’s relative local position identify the same place aboard the raft. This
is observation data; game rules still own movement and boarding.
vishnu check && vishnu test && vishnu build