All skills
thedivergentai avatar

/godot-multiplayer-networking

@9d6e91e

Expert multiplayer for desync, rollback, dedicated --headless servers, interest culling, and bandwidth spikes: ENet/WebRTC choice, authority, secure RPCs, client prediction/reconcile, and adaptive sync. Trigger on rubber-banding, cheat-able clients, peer floods, late join, or profiler Network spikes β€” not only greenfield online games. Keywords: multiplayer, RPC, ENetMultiplayerPeer, MultiplayerSynchronizer, authority, client prediction, rollback, interest management, headless, desync.

Use this Skill: https://skilld.dev/gh/thedivergentai/gd-agentic-skills/godot-multiplayer-networking

This session only. Nothing lands on disk.

SKILL.md

β‰ˆ130 tokens always: the name and description. β‰ˆ3.1k when used: this file. β‰ˆ1.5k more on demand in 2 files.

NEVER Do (Expert Networking Rules)

Core Architecture

  • NEVER use Reliable for high-frequency data (Position/Movement) β€” Reliable packets block all following packets until acknowledged (Head-of-Line blocking). Use UnreliableOrdered.
  • NEVER trust the client for shared state (Health/Money/Inventory) β€” Clients should only suggest actions. The Server MUST validate and broadcast the result.
  • NEVER hardcode the Server IP β€” Always allow for discovery (net_lan_discovery.gd) or pass the IP via CLI/UI.

Performance & Bandwidth

  • NEVER send the same data every frame β€” Use net_adaptive_sync_throttle.gd to only send updates when state changes significantly or at fixed Hz intervals (e.g., 20Hz).
  • NEVER use JSON for high-speed synchronization β€” String serialization is massive over the wire. Use bit-packing (net_packet_bit_packer.gd) to keep packets under 100 bytes.
  • NEVER broadcast to all peers if it's not needed β€” In large worlds, use Interest Management (net_visibility_grid_culling.gd). A player in the forest doesn't need the position of a player in the city.

Security

  • NEVER allow unlimited RPC calls per second β€” An attacker can flood the server with 1,000 "Attack" RPCs to crash the game. Use net_packet_rate_limiter.gd.
  • NEVER expose PeerIDs to the end-user β€” PeerIDs are internal. Always map them to persistent UserIDs (net_custom_id_mapper.gd) from a database.
  • NEVER run a dedicated server with a GUI enabled β€” Use --headless (net_headless_server_auto_start.gd) to save resources and ensure stability.

Decision Tree (transport / authority / sync Hz)

Question Prefer Script
Desktop/console LAN or dedicated UDP ENet MANDATORY net_enet_expert_config.gd
Browser / NAT-hostile peers WebRTC (or WebSocket fallback) Official Docs + peer wrappers; still use secure RPC scripts
Who owns gameplay truth? Server-authoritative MANDATORY server_authoritative_controller.gd
Dedicated host without GUI --headless MANDATORY net_headless_server_auto_start.gd / server_dedicated_host.gd
Position @ 10–20 Hz, not every frame Adaptive throttle MANDATORY net_adaptive_sync_throttle.gd

Do NOT Load lobby/RPC beginner recipes from memory β€” use the golden path below and open only matching scripts.

Golden Path

  1. Host / dedicated β†’ server_dedicated_host.gd + net_headless_server_auto_start.gd; clients β†’ client_network_setup.gd.
  2. Secure RPC β†’ secured_rpc_pattern.gd + net_packet_rate_limiter.gd + secure_variable_synchronizer.gd.
  3. Prediction / reconcile β†’ client_prediction_synchronizer.gd + net_anti_desync_reconciler.gd; fighting/rollback β†’ net_rollback_helper.gd.
  4. Interest culling β†’ net_visibility_grid_culling.gd before broadcasting positions.

Available Scripts

Transport & host

Authority, RPC, sync

Desync / rollback / interest

Expert Pointers

  • Position/movement: UnreliableOrdered + throttle β€” never reliable every frame.
  • Clients suggest; server validates and broadcasts results.
  • Large worlds: cull with visibility grid before adding more sync Hz.

Deep dives (on demand)

  • RPC modes, lobby handshake, puppet interpolation β†’ rpc-lobby-and-sync.md
  • Delta-compression + network simulator concepts live in that reference (LLM-ignorance: unreliable vs reliable HoL blocking is NOT generic knowledge).

Reference

Progressive disclosure: open Official Documentation links only when researching a specific API; load Related Skills when routing to a peer domain β€” do not preload the whole lattice.

Official Documentation

  • High-level multiplayer β€” RPC modes, authority, and peer lifecycle for host/join lobbies and server-validated actions.
  • Networking β€” Transport map (ENet / WebSocket / WebRTC / HTTP) so peer choice matches platform and NAT constraints.
  • MultiplayerAPI β€” multiplayer singleton: peer IDs, connection signals, and rpc / rpc_id entry points.
  • MultiplayerPeer β€” Transfer modes (reliable / unreliable / unordered) and connection status shared by every backend.
  • ENetMultiplayerPeer β€” UDP host/client peer used for LAN, dedicated servers, and most action games.
  • SceneMultiplayer β€” Default MultiplayerAPI: root path, auth callbacks, and scene-tree RPC routing.
  • MultiplayerSpawner β€” Spawn/despawn replication so late joiners share the same networked scene graph.
  • MultiplayerSynchronizer β€” Property replication, on-change deltas, and visibility filters that replace ad-hoc position RPCs.
  • Node β€” set_multiplayer_authority / is_multiplayer_authority ownership rules for input vs shared state.
  • PacketPeerUDP β€” Raw UDP send/receive for LAN discovery broadcasts outside the high-level multiplayer peer.
  • WebRTC β€” Browser-friendly P2P path when ENet UDP cannot punch through firewalls alone.
  • Command line tutorial β€” --headless and CLI flags for dedicated-server launches and multi-instance tests.

Related Skills

Prerequisites
  • godot-project-foundations β€” Project layout, Autoloads, and export/feature flags that host/join and dedicated-server builds depend on.
  • godot-gdscript-mastery β€” Typed @rpc annotations, Callables, and PackedByteArray patterns used by secure RPCs and bit-packers.
  • godot-input-handling β€” Split InputMap reads from simulation so clients send intents and the authority owns outcomes.
Complements
Downstream / consumers
Master
  • godot-master β€” Library router and mirrored module entry; open when discovering which Domain Skill owns a cross-cutting networking concern.

Source: SKILL.md on GitHub

2 warnings16d4 checks Β· Risk SAFE
  • Gen Agent Trust Hub16d

    No security issues detected. The skill provides a comprehensive and secure set of Godot scripts for multiplayer networking, including ENet configuration, authoritative RPC patterns, and client-side prediction, adhering to engine best practices and authority checks.

  • Socket16d

    No alerts

  • Snyk16d

    Risk: MEDIUM Β· 1 issue

  • Runlayer7mo

    3/3 files flagged

Signed by skilld at 9d6e91e. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 3 weeks ago.

Activeupdated 2 months ago

README badge

README badge for thedivergentai/gd-agentic-skills/godot-multiplayer-networking