Touch the network
Seven small lessons, each running Twinwire itself. Change one thing and see why a networking decision matters.
The teaching demos run both endpoints inside this browser. They use the library's session, framing, interpolation and lobby code over a simulated network. They do not open a real remote WebRTC connection, measure your internet connection, or certify a device. Run the starter for a real browser-to-server game.
| Try this | What to watch | Code |
|---|---|---|
| Drop and resume a session | Same ID and seat; pending events arrive once. An expired session needs an explicit new start. | Session demo |
| Block the datagram path | Two-way probe proof expires; states fall back to the WebSocket. | Wires demo |
| Add jitter and packet loss | Raw snapshots jump; buffered playback trades a little latency for smooth motion. | Interpolation demo |
| Predict your movement | Local input moves now; authoritative corrections settle disagreement. | Prediction demo |
| Lose a delta base | A delta is usable only when its acknowledged base exists; a full snapshot restores it. | Delta demo |
| Move through an interest area | Only nearby entities are selected; the game defines visibility and authority. | Interest demo |
| Create a room and ready up | Stable seats, a server-clock countdown and host handoff. | Lobby demo |
Play the real starter
Open a live arena, then copy its invite URL into another tab. Movement and the ping score come from a real authoritative server. Disconnect and reload to check the same ID and score. It uses WebSocket in a Durable Object; it does not simulate WebRTC or claim durable transport storage.
Run the Node version with optional native WebRTC · Read the Worker source
Open State timing in either starter to record at most 512 metadata samples. It shows state age at receipt and canvas draw submission, with clock uncertainty. Enabling or disabling it resumes the same player and invite; recording is off by default. Understand those boundaries.
A real multiplayer game
The standalone starter has actual sockets, authoritative movement, a touch/keyboard arena, reliable actions and a reconnect button. No art assets, account or build tool are required.
The party example adds quick play, room codes, ready-up, prediction, interpolation and chat. Both include their source. Keep the server and browser on the same Twinwire release.
Live game integrations
These eleven games run Twinwire 3.0.0, wire generation 5. Their deployed clients were checked with independent browsers, actual gameplay and a dropped connection. The games own their simulation, accounts, assets and persistence.
| Game | Try it | Recovery exercised |
|---|---|---|
| Nocturne Keep | Co-op platforming | Same players and private room, current combat world |
| kimu.nyc | Shared city | Same players, nearby world snapshots and playback after reconnect |
| CS2 browser prototype | Authoritative shooter | Movement, fire events, same session and fresh world |
| Superfighters | Two-player arena | Same round, released held controls and current host world |
| Emoji Mahjong | Private tile hands | Original seats and hands after disconnect and reload |
| Gallax | Shared map world | Movement, same position and one delivery of queued chat |
| Webstrike | Multiplayer shooter | Movement, fire, retained player and cleanup on leaving |
| Sipoga / NT Web | Multiplayer FPS | Movement, damage, respawn and retained player after an 8.5-second drop |
| Wollosseum prototype | Command arena | Commands and the same seat and world after reconnect |
| TDBR prototype | Top-down arena | Movement, firing and the same player, inventory and world |
| Oak0 | Team shooter | Both teams deploy and move, RTC fallback, same identity after interruption and reload |
The Node games were checked on both native WebRTC and forced WebSocket. Emoji Mahjong uses the Worker WebSocket host; its private-hand recovery was also checked in phone-sized WebKit. The two arena prototypes use small public capacity profiles. These checks cover the listed scenarios; the verification record explains their limits.