Roomcode

Co-op netcode for Godot that makes throwing things at your friends feel right.

Ship a 2–8 player co-op game without writing netcode. Grabbing, throwing and carrying that hold up at 200 ms, Steam invites and room codes from one build, voice built in.

The addon is free. Hosted rooms are free until your game takes off.

Browser host, Godot client.room code: HDVTMU

What you get

Everything a 2–8 player co-op game needs, as nodes you drop into your scenes.

Props that feel right

Instant grabs. Throws land where you saw them. Two players carry one heavy box. Tested at 300 ms with packet loss.

Every store, one build

Steam invites on Steam. Room codes on itch and in the browser, with relay fallback for hard NATs. LAN for testing.

The rest of the game

Replicated state and events, animation sync, death and spectating, a lobby with ready and kick, proximity voice with a radio, reconnects that keep your score.

Hosting is four lines

The host is one of the players. LAN and Steam need no servers. Room codes need one Cloudflare Worker: self-host it, or use ours.

Every feature has a headless multi-process test, from throws under lag to host quits and reconnects, plus a run across a real second network.

# your main scene
Roomcode.level_root = $Level
Roomcode.spawnable_scenes = [PLAYER]
Roomcode.peer_joined.connect(func(id):
    if Roomcode.is_host: Roomcode.spawn(0, id, spawn_point(id)))

Roomcode.host(NetWebRTCTransport.new())        # prints a room code
Roomcode.join(NetWebRTCTransport.new(), {"code": "HDVTMU"})

# or, on Steam
Roomcode.host(NetSteamTransport.new())
Roomcode.transport.invite_overlay()

Pricing

The addon is free and complete. Roomcode Cloud, the hosted room-code service, is the only thing that costs money, and only once people are playing. A session-hour is one room with two or more players for an hour.

FreeIndieVolume
$0$19 / monthusage
1,000 session-hours a month10,000 session-hours a month$0.005 per session-hour, falling to $0.002 and then $0.001 with volume
50 GB relayed traffic500 GB relayed traffic0.05 GB per session-hour, then $0.08 / GB
No player caps. 64 per room. ENet and Steam sessions are never counted. Self-hosting is free and unlimited.

A small launch, a hundred sessions a day, is about 3,000 session-hours: $19. Two hundred players online around the clock: about $150. Most sessions connect directly and cost nothing to relay, so it stays cheap as you grow.

The promise
  • The addon is MIT, forever. Nothing is held back.
  • The Worker is open source. Two commands deploy it to your own Cloudflare account. No limits, nothing owed.
  • Pro features (host migration, consoles, the lobby kit, priority support) will be paid, and will never show up in the free repo as paywalled stubs.

Questions

Which Godot?
4.7 or newer. Pure GDScript. Optional extensions (webrtc-native, GodotSteam, TwoVoIP) are detected at runtime; the addon runs without them.
Does it work in a browser?
Yes. The web export uses the browser's WebRTC and joins the same rooms as desktop builds. Voice and Steam are desktop only.
Is it server-authoritative?
Host-authoritative, like Lethal Company and R.E.P.O.: one player's machine is the host. Props are simulated there except while held or just thrown, when the holder's view is the truth, so nothing lags in your own hands.
Can I self-host the room-code service?
Yes, it's the same Worker we run. npx wrangler deploy, then point one project setting at it.
Where is the code?
github.com/alexmeckes/roomcode. Issues and pull requests welcome.