npx skills add ...
npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill godot-multiplayer
Build networked games with Godot 4.7 high-level multiplayer: set up an ENetMultiplayerPeer server/client, define RPCs with the @rpc annotation (call via rpc()/rpc_id()), set per-node multiplayer authority, and replicate state with MultiplayerSpawner and MultiplayerSynchronizer. Use when adding multiplayer/networking to a Godot project, writing @rpc functions, or syncing player/world state across peers.
npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill godot-multiplayer
Connect peers, call functions remotely with @rpc, assign authority, and replicate state
with MultiplayerSpawner/MultiplayerSynchronizer. Targets Godot 4.7 (ENet). Treat
all client input as untrusted; keep the server authoritative.
When not to use: local split-screen (no networking); raw TCP/UDP/WebSocket protocol
work (low-level PacketPeer); HTTP requests. For save/persistence → save-systems.
ENetMultiplayerPeer), call create_server(port, max) or
create_client(ip, port), and assign it to multiplayer.multiplayer_peer. The
server's unique ID is always 1; clients get random positive IDs.multiplayer: peer_connected(id),
peer_disconnected(id), connected_to_server, connection_failed,
server_disconnected.@rpc(...). Call them on a Callable via rpc() (all peers) or
rpc_id(peer_id) (one peer). Inside, multiplayer.get_remote_sender_id() tells you who
sent it.@rpc methods in a script; mismatches break silently.set_multiplayer_authority(id); gate input/RPCs by
is_multiplayer_authority().MultiplayerSpawner (auto-instances scenes on clients) and
MultiplayerSynchronizer (auto-syncs selected properties).@rpc method in a script must exist with the same
declaration on both client and server builds — even unused ones. A mismatch causes
errors that may point at the wrong function. Argument names/count are not checked, but
the set of RPCs and their annotations are.@rpc is "authority". Clients calling it are ignored unless you set
"any_peer". Use "call_local" so the host (also a player) runs it too.MultiplayerSpawner or add_child(node, true) for
readable, deterministic names).@rpc methods must be on Node-derived classes, not
plain Resource/RefCounted.multiplayer.multiplayer_peer = OfflineMultiplayerPeer.new().MultiplayerSpawner setup, transfer modes/channels, SceneMultiplayer
authentication (auth_callback/complete_auth), a lobby skeleton, and dedicated-server
export notes, read references/replication-and-rpc.md.godot-nodes-scenes — instancing the scenes that get spawned/synced.godot-signals-groups — connection signals and event flow.godot-export — exporting a headless dedicated server build.