packages/shared
The small things every workspace needs: the tick constants (TICK_RATE, DT, SNAPSHOT_EVERY_TICKS, PROTOCOL_VERSION), the seeded PRNG that replaces Math.random in the simulation, the FNV-1a hash behind the determinism fingerprint, yaw/quaternion helpers, the room clock (clock.ts: the game minutes since the room's first midnight at a tick and a pace, gameMinutesAt, clockAt, setClockTime and skipTime, which only go forward, setClockPace, parseTime, formatTime, withinHours), and its weather (weather.ts: fronts every half hour by a climate's odds from a seed, a script over them, the roads' wetness and the snow lying, weatherAt, scriptWeather; the day's light, daylightAt), the same time and the same rain on the server and every client with no ticking state. Isomorphic: no Node, no DOM. The release (RELEASE_VERSION, ordered by compareReleases) and the documents' formats across releases (schema-versions.ts: migrate a step at a time, SchemaTooNewError for a newer one).