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 → SaveTest 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.gd and find: the await SpawnWeaver.start() call, the create_room()/join_room() calls, and where SpawnSync is 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 CharacterBody2D with 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}) + the event_received signal (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.