Beginner path: your first multiplayer game
A guided checklist from "never done multiplayer" to two players moving in a game you built. Each step links the doc that explains it and ends with a checkpoint — don't move on until the checkpoint is true. Stuck? Every step has a Copy AI prompt block: copy it into Claude/ChatGPT along with your error message for tailored help.
How multiplayer works here, in one paragraph: your game connects to SpawnWeaver's servers over the internet. Players meet in a room. Whatever a player does gets sent to the server, which relays it to everyone else in the room. The SDK hides the plumbing; your job is deciding what to share.
Step 1 — Get connected
- Create an account and a project (quickstart)
- Install the SDK and enable the plugin (installation)
- Paste your key into the SpawnWeaver dock → Save → Test connection
Checkpoint: the dock shows "✓ Connected — your key and server are good to go."
I'm following the SpawnWeaver beginner path, step 1 (connecting a Godot 4 project).
SpawnWeaver is a multiplayer service for Godot: an addon at addons/spawnweaver adds a
"SpawnWeaver" autoload; config lives in res://spawnweaver.cfg with my project key.
The dock's Test connection says: <PASTE THE MESSAGE>. What should I check?
Step 2 — See it work
- In the dock, press Generate starter scene and open
res://spawnweaver/StarterGame.tscn - Debug → Run Multiple Instances → Run 2 Instances, then press Play
- Window A: Create room. Window B: type the code → Join. Move both squares.
Checkpoint: each window shows the other's square moving.
Step 3 — Understand what you just ran
- Read core concepts (10 minutes)
- Open
StarterGame.gdand find: theawait SpawnWeaver.start()call, thecreate_room()/join_room()calls, and whereSpawnSyncis added to each square
Checkpoint: you can answer — what is a room code? which copy of the square sends, and which interpolates?
Step 4 — Make it yours
- New scene: your own player (any
CharacterBody2Dwith your art + movement) - Add a SpawnSync node inside it, and a PlayerSpawner in your level pointing at the scene (sync guide)
- Add two buttons + a code field wired to
create_room()/join_room(code)
Checkpoint: two instances of your game, two of your characters moving.
I'm on SpawnWeaver's beginner path step 4. My player scene is a CharacterBody2D with a
SpawnSync child; my level has a PlayerSpawner with player_scene assigned. The SDK API:
await SpawnWeaver.start(), await SpawnWeaver.create_room() -> result.room.code,
await SpawnWeaver.join_room(code). Signals: room_joined(room), player_joined(player).
Problem: <DESCRIBE — e.g. "the remote player doesn't move" + any errors>.
Step 5 — Talk to each other
- Add a chat box using
send_event("chat", {"text": t})+ theevent_receivedsignal (events guide) - Remember: events go to the others — print your own line locally
Checkpoint: messages typed in one window appear in the other.
Finish line
You've built connect → room → replicated movement → chat: the skeleton of most multiplayer games. Next: the intermediate path turns this into a complete online game.