GODOT 4 Co-op for 2–8 players

Co-op multiplayer for Godot, without writing netcode.

Players, physics, game state and voice stay in sync for 2–8 friends, and still feel right at 200 ms. One build ships with Steam invites and room codes.

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

1

Add nodes

Player CharacterBody3D
Camera3D
NetPlayer+
NetGrabber+
Crate RigidBody3D
NetProp+
Scoreboard
NetState+

A player, a crate and a score are now networked. No sync code.

2

Host a room

Room code HDVTMU Share it, or send an invite on Steam

One player hosts from their own machine. No servers to run.

3

Friends join

SteamAlex invited you to playJoin
CodeHDVTMU✓
Linkdemo.roomcode.dev/?code=HDVTMU
ASJM4 / 8 in the room

From Steam, itch or a browser link. Same room, same build.

One build ships to Steam itch.io The browser LAN

What you get

Everything a co-op game needs.

Drop nodes into your scenes. A player becomes networked, a crate becomes grabbable, a score becomes shared.

Physics that feels right

Grab, throw and co-carry props with no lag in your own hands, or drive host-simulated bodies from player input.

Every store, one build

Steam invites on Steam. Six-letter room codes on itch and in the browser, with relay fallback for hard networks.

Voice, built in

Proximity chat that fades with distance, a radio channel, push-to-talk or open mic, noise suppression.

Shared game state

Scores, doors, timers and inventories stay in sync. Named events for everything else. Godot's own RPCs still work.

Lobbies that just work

Ready checks, kicking, spectating when you die, and reconnects that hand players back their score.

Tested like it matters

Thirteen multiplayer scenarios run real players under lag on every change. You get the same harness for your game.

Why it feels right

No lag in your own hands.

In most host-authoritative setups, a friend who isn't hosting waits for the host to answer before anything happens, so every grab and throw lands a beat late. With Roomcode, what you hold and throw reacts the moment you press.

An illustration. Measured in the test suite: at 300 ms of lag with packet loss, a thrown box comes to rest within 6 mm of the same spot on every screen.

How it connects

One player hosts. Everyone else types a code.

No game servers to run. One player hosts from their own machine, the way most co-op hits already work.

  • Most games connect directly. Traffic goes player to player, so it costs nothing to run.
  • Hard networks fall back to a relay. Campus and mobile players still get in, automatically.
  • Room codes are the only server. Use ours, or deploy your own copy in two commands.
Room code service HDVTMU Host P2 P3 direct direct relay P4 strict network — — introduces players once

The code

Hosting is four lines.

Pick a transport. Everything above it, from physics to voice, is the same.

# main.gd
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())                  # → room code "HDVTMU"
Roomcode.join(NetWebRTCTransport.new(), {"code": "HDVTMU"})

Pricing

Free until your game takes off.

The addon is free and complete. You only pay for hosted room codes, and only once people are playing. Steam and LAN games never touch the service.

Free

Building, testing, and small launches.

$0
  • 1,000 session-hours a month
  • 50 GB of relay
  • No player caps
When you launch

Indie

A game people are playing every day.

$19/ month
  • 10,000 session-hours a month
  • 500 GB of relay
  • $0.005 per extra session-hour

Volume

A hit. The price per hour keeps falling.

Usage
  • Down to $0.001 per session-hour
  • Relay at $0.08 per GB over the allowance
  • 200 players online around the clock: about $150 a month

What's a session-hour?

One room with two or more players connected, for an hour, prorated by the second. A small launch with a hundred sessions a day uses about 3,000. Most sessions connect directly and cost nothing to relay, which is why the price stays low as you grow.

Our promise

  • The addon is MIT, forever. Nothing is held back.
  • The room-code service is open source. Self-host it free, with no limits.
  • Pro features will be paid, and will never appear as locked stubs in the free addon.

FAQ

Questions.

Something else? alex@hugebrain.ai

Which Godot versions?

Godot 4.7 or newer. The addon is pure GDScript. Optional extensions for desktop WebRTC, Steam and voice are detected at runtime, and everything else works without them.

Does it work in a browser?

Yes. A web export joins the same rooms as desktop builds, so friends can play from a link. Voice and Steam are desktop only.

Is it server-authoritative?

Host-authoritative: one player's machine runs the world. While you hold or throw something, your view is the truth, so nothing lags in your own hands.

What happens if the host quits?

Everyone gets a clear reason and returns to the menu, and a reconnecting player gets their score and spot back. Host migration is on the roadmap as a Pro feature.

Can I run the room-code service myself?

Yes. It's the same Cloudflare Worker we run: npx wrangler deploy, then point one project setting at it. No limits, nothing owed.

Your friends are waiting. Make them something to play.