Steam integration

Let friends join each other straight from the Steam friends list. SpawnWeaver ships a SteamSync node that bridges GodotSteam to your rooms — rich presence, "Join game", overlay invites, and Steam persona names. Without GodotSteam installed the node is a safe no-op, so you can leave it in every build.

Setup

  1. Install GodotSteam (the module build or the GDExtension) and initialize it as usual in your game (Steam.steamInit() + run_callbacks pumping — SpawnWeaver never touches the Steam lifecycle, it only reads the singleton).
  2. Drop a SteamSync node somewhere persistent (your main scene works).

That's the whole integration:

  • Entering any SpawnWeaver room publishes +room <CODE> as Steam Rich Presence, with a status line friends can see (status_format, default "In room {code}").
  • A friend picking Join game routes into SpawnWeaver.join_room(code) automatically — including the launch-from-invite case (+room CODE on the command line starts the game, connects, and joins).
  • invite_overlay() opens the Steam invite dialog for the current room.
  • With use_steam_persona on (default), players' SpawnWeaver display names become their Steam persona names.
# Optional hooks:
$SteamSync.steam_join_requested.connect(func(code): show_joining_screen(code))
$SteamSync.invite_overlay()          # e.g. behind an "Invite friends" button
print($SteamSync.is_available())     # false when GodotSteam/Steam isn't present

Notes

  • Works with GodotSteam 4.x module and GDExtension builds (detected at runtime; no compile-time dependency — projects without GodotSteam still export fine).
  • Steam auth/ownership verification is not part of this integration — player identity stays SpawnWeaver's anonymous-first tokens (players).
  • Test without Steam freely: everything no-ops, and the room-code flow keeps working as the universal fallback.