Authoritative multiplayer rooms + realtime chat for Dart & Flutter.

Self-host the room engine or use the hosted rooms node. Fixed-step server simulation, seamless resume, baseline/delta replication — you write the game, the rooms do the networking.

Get started Read the docs GitHub

Three steps to a room

  1. 1

    Implement a RoomAuthority

    Validation, simulation, snapshots — your whole game logic. The networking never imports your types, and vice versa.

  2. 2

    Host it

    A RoomServer on a real WebSocket, an in-process MemoryTransportPair, or your own GameConnection adapter — same engine, your shape.

  3. 3

    Connect a typed client

    Subclass RoomClient, get join/resume, acks, chat and interpolated snapshots for free — native and web.

Complete runnable version: cd examples/counter && dart run — two clients, real WebSockets, chat and a shared counter. See Getting started.

What’s in the box

Fixed-step authoritative sim

Your RoomAuthority ticks at up to 240 Hz on a clock that never dilates simulated time — wall-clock lag is clamped, not accumulated.

Seamless resume

One-time resume tokens, a 15 s grace window, roster/chat replay and a playback clock for interpolated rendering.

Baseline/delta replication

Reliable 1 s baselines, disposable deltas on a loss-tolerant lane, 4-decimal quantization and display-only recovery. A lost delta can never corrupt the next one.

Chat & moderation built in

280-char single-line chat with bidi hardening, pings, roster, lock/kick/ban — quota- and rate-limited on the reliable lane.

Web + native client

One pure-Dart RoomClient for Flutter, native and browser (binary frames included); the engine itself compiles for the web.

Relay & physics templates

No Dart needed: quota-enforced relay rooms, or server-simulated movement over configured colliders with anti-cheat by construction.

Packages

protocol the room engine

RoomHub, the RoomAuthority contract, snapshot/wire codecs, transports, in-memory pipes, room social. No dart:io — compiles for the web.

client typed game client

RoomClient subclassed per game: resumable reconnects, playback clock, WebSocket adapters for native and web.

server_sdk dedicated server + node

RoomServer behind real WebSockets; RoomSupervisor, rooms listener, control-plane API, SQLite store; RelayAuthority and the engine-free movement template.

physics_react3d movement backend

The reactphysics3d PhysicsBackend for movement rooms — thin native FFI binding; all game logic stays in server_sdk.

Consumed as git path dependencies — the yaml snippet.

Built for agents too

Stable, machine-readable endpoints on this site: llms.txt, llms-full.txt, rooms-protocol.json (wire spec, cross-checked against the implementation at build time) and room-authority.md (the exact authority contract).