What needed solving.
Fast vehicle control needs immediate feedback even when the authoritative simulation is running across a network.
- 01Tick-stamped inputs
- 02Authoritative sim + local prediction
- 03Reconciled frames + replay
Simplified from the implementation and project notes.
How it fits together.
Step the same simulation locally and in rooms
A 120 Hz RocketSim WebAssembly wrapper owns physics state. The browser runs the match and bots; online rooms use Cloudflare Durable Objects and send compact inputs and periodic delta snapshots, with server-authoritative state and client prediction/interpolation.
Trade bandwidth for correction
Inputs are quantized into compact integer controls; snapshots arrive every two simulation ticks and are delta-coded against the previous state. The client tracks lead, ping and corrections, predicts between snapshots, and rewinds/replays when the authoritative state differs.
Exercise determinism and network behavior
Headless checks run restored physics states, bot matches, and three real netcode clients with configurable delay and jitter; they report drift, late inputs and corrections. Collision contacts can diverge slightly after restore because cached solver contact points are not in saved state, so rollback absorbs bounded drift rather than promising bit-exact simulation.
Building and checking it.
The project separates tests for physical behavior, bot behavior, state rollback, and network synchronization. This makes a handling problem distinguishable from a rendering or latency problem.
The central method is to keep one authoritative match while allowing speculative local movement. Smoothing changes presentation, not the server’s authority over outcomes.
This is an independent browser experiment, not the original Rocket League engine or an official product. The presence of network tests does not establish performance across every device or network.
Source notes
Based on repository code and project records reviewed on October 30, 2026. Historical checks are described as recorded, not rerun for this article. Screenshots, renders, and mockups are labeled individually.
rl-web/package.jsonrl-web/src/net/client.tsrl-web/src/sim/sim.tsrl-web/src/net/protocol.tsrl-web/server/room.tsrl-web/scripts/rollback-check.tsrl-web/scripts/net-check.tsrl-web/scripts/bot-sim.ts
