TESSERA
What it is
Up to 16 pilgrims glide across a floating terrace, painting every tile they cross in soft Monument-Valley pastels. Step on a white bloom and a whole patch blossoms in your colour. When the sun sets — 45 seconds — the largest mosaic takes the round; first to 3 rounds keeps the terrace. The edges fold back on themselves: walk off one side, appear on the other.
There is no game server. Your browser and your friends' browsers form an encrypted WebRTC mesh; a blind relay only introduces peers. The invite link carries the room key in the URL fragment, which never leaves your browser. One peer referees the round; if it disappears, the terrace quietly elects a new referee and starts the next sunrise.
This page is also the repository
The site you're reading is a static IPFS snapshot that doubles as a git remote (dumb-HTTP protocol, loose objects):
git clone https://git-game3.ardegazu.ro/tessera.git
Run it yourself
cd tessera/client
npm install
npm run dev # http://localhost:5173 — open two tabs on the same #room URL
Honest guarantees & limits
- End-to-end encrypted: every frame is AES-GCM sealed per sender; the relay sees only a one-way hash of the room secret.
- No accounts, no database, no telemetry. Static files + WebRTC.
- Host-authoritative: the referee peer could cheat in its own favour — play with people you like.
- Full mesh: rooms allow 16, but a practical ceiling is ~12 simultaneous players (O(n²) connections).
- No history: close the last tab and the terrace is gone; the room key in the link is the only state.
- If direct connection fails, traffic falls back to an encrypted TURN relay (still unreadable to it).
Anatomy
client/src/lib/— sueta's p2p core (mesh, crypto, signaling, TURN), vendored unchangedclient/src/game/— the game: typed wire protocol, seat-indexed host simulation, isometric canvas renderer, pentatonic chimesdeploy/publish-repo.sh— builds this very page + bare mirror