Repository navigation
v3.0.0
- Wire generation 5 adds optional authenticated WebTransport datagrams. Bind each physical HTTP/3 path to the live
WebSocket session using a short-lived, one-use ticket and epoch; prove both directions before selecting it. Keep
independently proven RTC and WS fallback, path-size limits and hysteresis. Reliable session/events remain on WS.
Respect changing datagram limits and provider-owned stream teardown; standby proof clears retry debt too.
This protocol change requires paired client/server deployment; 2.x clients cannot connect to 3.0 hosts. - Add optional bounded metadata tracing for state enqueue, send, receipt, accepted application, playback and explicit
render submission. Report clock uncertainty and separate queue time from playback age; never retain payloads/secrets. - Add bounded cancellable HTTP bulk resources with browser admission/memory limits, optional SHA-256 integrity and a
Node handler with authorization, origin checks, ETags and backpressure. Bulk bytes stay outside ordered game events.
Stalled downloads time out, older AbortSignals work, malformed targets return400 and source buffers are snapshotted. - Protect state and reliable-event bandwidth under mixed load while lending surplus positive credit. Refund failed
writes and allow useful smaller states past unsendable large candidates. Preserve ordered event delivery. - Add regressions, deterministic comparison with published 2.3.0 and hosted real QUIC/browser and alternating-process
localhost benchmark gates. Candidate/release evidence is recorded in validation/STATUS.md; no universal speedup claim. - Fix mutable Node Buffer views at state/frame/replica ownership boundaries: later caller mutations cannot change
an already queued or decoded snapshot. Require patched ws8.22+ and patch the pinned local Worker tool's dependencies.
Verified rollout
Matching clients and servers are deployed in CS2, Nocturne Keep, kimu.nyc, Superfighters, Emoji Mahjong, Gallax, Webstrike, Sipoga, Wollosseum, TDBR and Oak0. Public gameplay and reconnect checks pass for all eleven, including private Mahjong hands and seats in phone-sized WebKit.
All four one-hour SDK lifecycle soaks passed. The additional hour-long CS2, Nocturne and kimu game checks passed: CS2 recovered 57 times on each path; Nocturne handled 60 drops and 60 pauses; kimu accounted for all 709,168 online frames with no missing group members. Scheduling stalls and nonzero playback errors remain visible in the game evidence; kimu's raster-suppressed update cadence is not render FPS.
The website passes all 24 pages at desktop and phone widths in light and dark modes, plus all 37 interactive checks. Play the live starter, or download the Node starter: both use 3.0.0 and include an optional bounded timing recorder. A clean public-download install passes native RTC and forced WebSocket movement, reconnect, one queued ping, checkpoint reload and timing-toggle checks. Website and starter verification.
Rendered browser comparison
Protocol and reproduction · Raw evidence · Completed workflow
Five alternating paired trials per workload compare identical scene code on 2.3.0 and 3.0.0: 100 valid trials, 50 pairs. Pixel captures are outside aligned measurement windows. Native RTC requires actual measured RTC application states. The original failed capture attempt is retained separately in the evidence.
| Browser / path | Workload | v2.3 median p95 age | v3 median p95 age | Median paired age change | Median scene cadence change | Repeated age benefit |
|---|---|---|---|---|---|---|
| chromium / ws | normal | 58.7 ms | 59.3 ms | 0.6% | -0.0% | no |
| chromium / ws | mixed-budget | 168.5 ms | 56.8 ms | -66.3% | 0.0% | yes |
| chromium / ws | render-load | 61.3 ms | 61.7 ms | -1.1% | -0.4% | no |
| chromium / rtc | normal | 59.8 ms | 60.0 ms | -0.0% | -0.1% | no |
| chromium / rtc | mixed-budget | 169.0 ms | 58.1 ms | -65.6% | -0.0% | yes |
| firefox / ws | normal | 60.4 ms | 59.5 ms | -1.1% | 0.0% | no |
| firefox / ws | mixed-budget | 170.0 ms | 57.2 ms | -66.1% | 0.0% | yes |
| firefox / ws | render-load | 64.2 ms | 63.7 ms | -0.8% | 0.0% | no |
| firefox / rtc | normal | 59.4 ms | 59.6 ms | 0.4% | 0.0% | no |
| firefox / rtc | mixed-budget | 167.9 ms | 57.6 ms | -65.9% | 0.0% | yes |
Before/after values are separate medians; the paired-change column summarizes within-pair ratios and can differ from the ratio of those medians.
Age means state generation to JavaScript Canvas draw submission, including application scheduling; it is not packet transit or physical presentation. A repeated benefit requires every pair to improve p95 age by at least 10% beyond the reported clock estimates. No workload demonstrated a consistent scene-cadence gain of at least 5% in every pair.
The mixed-budget case deliberately overloads a 4,000 B/s application budget with reliable events. Median reliable events received during each 12-second window changed from 65 to 60 in all four browser/path combinations. Bounded outboxes rejected hundreds of excess attempts in both versions. Every received/rejected event count and event-age percentile is retained. The 12,000-rectangle workload preserves renderer stalls and is compared over forced WebSocket. These findings support workload-specific improvements, not universally lower latency or higher game FPS.