Quickstart

Quickstart: two players online

From a fresh account to two players moving together in your Godot game — about 10 minutes, copy-paste friendly. This assumes your SpawnWeaver backend is already running at a domain.

1. Create your account

Sign up for a free account — you get a personal workspace that owns your projects.

Check your email and click the confirmation link. On a hosted server you must verify your email before you can sign in. (No email arriving? Open verify-pending to resend it.)

2. Create a project

Open Create a project. The guided setup asks a couple of questions about your game and hands you two keys:

  • Public key (pk_…) — safe to ship inside your game client. This is what connects players.
  • Secret key (sk_…) — server-side only and shown once. Used for player data. Keep it out of your game.

3. Install the Godot SDK (one line)

From the root of your Godot project, run the installer your server hosts. It downloads just the addon into res://addons/multiplayer_service — no repo clone:

# Windows (PowerShell)
iwr https://spawnweaver.dev/install.ps1 -UseBasicParsing | iex

# macOS / Linux
curl -fsSL https://spawnweaver.dev/install.sh | bash

Then open your project in Godot and enable SpawnWeaver Multiplayer Service in Project → Project Settings → Plugins. That registers the MultiplayerService autoload and adds the SpawnWeaver editor dock.

Prefer manual install? Copy the addons/multiplayer_service folder into your project's addons/ and enable the plugin.

4. Point the SDK at your server

Open the SpawnWeaver dock (right-hand panel in the editor). Paste your public key and the secure WebSocket URL, then click Save:

  • Public key: pk_… (from step 2)
  • Server URL: wss://spawnweaver.dev/connect (note wss:// — secure — for a hosted domain)

Now your scenes can connect with no hard-coded keys using MultiplayerService.connect_using_config().

5. Connect and send your first event

Guest sign-in is automatic — connecting mints a stable player identity. Add this to a script:

func _ready() -> void:
    MultiplayerService.connected.connect(func():
        print("connected as ", MultiplayerService.player_id)
        MultiplayerService.create_room("Alice"))      # host makes a room

    MultiplayerService.room_created.connect(func(id, code, players):
        print("Share this room code: ", code))        # the other player joins with it

    MultiplayerService.event_received.connect(func(event, data, from_id):
        print(event, " -> ", data))                   # incoming events from others

    MultiplayerService.connect_using_config()          # uses the dock's key + URL

# Call this from gameplay to broadcast to everyone in the room:
func move_to(x: int, y: int) -> void:
    MultiplayerService.send_event("player_moved", { "x": x, "y": y })

The other player joins the shared code with MultiplayerService.join_room("ABC123", "Bob"). The relay delivers each send_event to everyone else in the room (not the sender), so draw your own moves locally and react to event_received for the others.

6. See two players

In Godot, choose Debug → Run Multiple Instances and set 2, then run your scene. One window hosts (prints a code), the other joins by that code. Watch the live connections on the Debugger.