Real-time multiplayer · on Cloudflare

Multiplayer,
reduced to its
elements.

A point is a player. A line is a message. A plane is a room. Three primitives, one small SDK — and the real-time backend underneath is ours to run, not yours.

Read the docs →Open the dashboard
ROOM · lobby-10 / 8POINT · LINE · PLANE
Free for game jams$19/mo when you shipp99 < 50ms in-regionMIT-licensed SDKJavaScript-first · Unity · Godot 2026
01 — The elements
after Kandinsky · point and line to plane, 1926

Three things compose every multiplayer game. Plot gives you exactly those three.

AaPOINT

Every player is a point.

Anonymous or named, a player joins with one call and gets a stable identity — and a colour — the instant they arrive. No auth server to stand up first.

const me = await plot.join()
BbLINE

Every message is a line.

Send state between points at up to 30 Hz. Plot draws the line; you decide what travels along it — a position, a score, a chat string, an entire game state.

room.send({ x, y })
CcPLANE

Every room is a plane.

A room is one Durable Object at the edge nearest its players. It holds the shared truth, stays consistent, and vanishes when the last point leaves.

await plot.open('lobby-1')
02 — Composition

Put the three together and you have a game.

This is the whole client. Points join the plane, lines carry their state, every other point sees it within a frame. Eleven lines, no backend of your own.

game.ts
import { Plot } from '@plot/client'

const plot = new Plot({ appKey })
const room = await plot.open('lobby-1')

const me = room.join()

room.on('point', drawPlayer)
room.on('leave', removePlayer)

onMouseMove(({ x, y }) => {
  room.send({ x, y }) // a line
})
PLANE · live4 points
03 — The plane is everywhere

Sub-second, wherever the points are.

Every room runs on Cloudflare's edge, within roughly 50 ms of the people in it. You never choose a region or plan capacity. The plane forms where the points are and follows them.

<50ms
p99 in-region broadcast
330+
edge cities, no config
1
Durable Object per room
30 Hz
max tick rate
ROOMS FORMING AT THE EDGE
04 — Proportion
priced by the point

You pay for concurrent points. Nothing else.

Jam
$0

Free forever for jam projects

50 concurrent points5 Hz tick · all SDKsno card required
Ship
$19/mo

When the prototype goes live

1,000 concurrent points20 Hz tick · email supportpredictable, flat billing
Scale
$149/mo

When the game finds its players

10,000 concurrent points30 Hz tick · priority support99.9% uptime SLA
Studio
$149+pay-as-you-go

When the game is the business

Up to 50,000 points, self-serve$9 / 1,000 points · meteredpriority support · DPA

Start with a single point.

Free tier, no credit card, five-minute integration. Add the line and the plane when you're ready. We run the backend the whole way up.

Start freeRead the docs first