Takes a peer from any state to a known playing one: play mode, unpaused, scene and stage loaded, mode set, race entered — waiting on and checking each step.
Use this to start a peer. Driving the engine directly instead is how two peers end up in states no player could produce, and every reading taken across them is void.
The reported `profile` matters more than anything else here: an editor peer and a runtime peer are placed in different relay rooms on purpose and can never see each other, and a runtime peer runs the last pushed commit rather than the working copy. Never pair one of each in a test.
# codeVersion
<!-- zero:scaffolded-readme -->
<!-- Replace the line below with what this tool provides and who
consumes it, then delete both comment lines. -->
TODO: describe this tool.
# humans
<!-- zero:scaffolded-readme -->
<!-- Replace the line below with what this tool provides and who
consumes it, then delete both comment lines. -->
TODO: describe this tool.
# place
<!-- zero:scaffolded-readme -->
<!-- Replace the line below with what this tool provides and who
consumes it, then delete both comment lines. -->
TODO: describe this tool.
# positions
<!-- zero:scaffolded-readme -->
<!-- Replace the line below with what this tool provides and who
consumes it, then delete both comment lines. -->
TODO: describe this tool.
Presses a real menu button by its callback id, so a test walks the path a player walks instead of setting the flags the menu would have set.
# reloadScene
<!-- zero:scaffolded-readme -->
<!-- Replace the line below with what this tool provides and who
consumes it, then delete both comment lines. -->
TODO: describe this tool.
Watches every entity this peer does not own and reports which of them changed during the window. A car that is present but never changes is not being replicated, which is a different fault from a car that is replicated and parked.
Clears the leftovers a session accumulates — duplicate race entities and cars belonging to no roster — so a reading is taken on a known scene rather than on the residue of earlier runs.
# restartRace
<!-- zero:scaffolded-readme -->
<!-- Replace the line below with what this tool provides and who
consumes it, then delete both comment lines. -->
TODO: describe this tool.
# rooms
<!-- zero:scaffolded-readme -->
<!-- Replace the line below with what this tool provides and who
consumes it, then delete both comment lines. -->
TODO: describe this tool.
Puts this peer into solo or multiplayer and proves it landed there. The menu can only be reached during the opening, so a test that depended on pressing its button could not put a peer back once a race had started.
Result envelopes and the scene readers that snapshot and remoteActivity both use.
This peer's honest multiplayer state: its peer id, every Race component with its clock and roster, and every car with its owner, driver and visual. Run it on each peer and compare: different race ids, or clocks that do not agree, mean the peers are not in one race.
# syncProbe
<!-- zero:scaffolded-readme -->
<!-- Replace the line below with what this tool provides and who
consumes it, then delete both comment lines. -->
TODO: describe this tool.
# throttle
<!-- zero:scaffolded-readme -->
<!-- Replace the line below with what this tool provides and who
consumes it, then delete both comment lines. -->
TODO: describe this tool.
# verdict
<!-- zero:scaffolded-readme -->
<!-- Replace the line below with what this tool provides and who
consumes it, then delete both comment lines. -->
TODO: describe this tool.
# vote
<!-- zero:scaffolded-readme -->
<!-- Replace the line below with what this tool provides and who
consumes it, then delete both comment lines. -->
TODO: describe this tool.
# shared
One-paragraph description of what this module provides and who consumes
it.
## Exports
- `M.exampleFn(arg) -> result` — what it does and when to call it.
- `M.exampleValue: type` — what value it carries.
## Usage
Replace `<identity>` with the string `asset.create` returned — this
module's source path with `/` written as `.` and each segment's type
suffix dropped, the way a module at `/source/lib/thing.module` is
`lib.thing` and one at `/source/kit.package/thing.module` is
`kit.thing`.
```luau
local M = require("<identity>")
M.exampleFn("foo")
```
## Notes
- Anything callers need to know about THIS module: required runtime
ordering, state ownership, side effects.
# Car
First Light owner-driven arcade car. Space drifts recharge the shared battery; Shift boost and focused headlights consume it. Narrow forward light exposure drains rivals' battery and hull, with road/car occlusion. Hosts run bots with delayed aiming and limited attack bursts. Wrecks launch, tumble, bounce and recover. Motion, battery, focus, damage, crash angles and grid state are Sync fields. Keyboard, gamepad and touch use the native drive input map. The native player avatar owns human motion; prototype-only bodies are excluded from gameplay registration.
# RAINLINE car visual
Attach to gameplay car body at tire contact y0. Generates one temporary child with the real image-derived endurance car mesh and PBR material. Nose points +Z; normalized length4.8m, width1.976m, height1.033m. variant0 ivory/citron hero,1 blue,2 red,3 graphite. Cleanup re-derives owned child on hot reload. Gameplay owns motion, guns, authority and input.
Host-only three-rival race lifecycle. Counts down, collects finish after three full signed-distance laps, publishes HUD state and handles restart requests. Mount on the world root; never on the player prototype.