Godot Server Architecture
thedivergentai/GD-Agentic-Skills
Expert blueprint for dedicated / headless multiplayer hosts: ENet/DTLS, authority validation, safe packet decode, matchmaker handoff, and health telemetry.
A skill your agent uses when adding multiplayer or netcode to a game — client-server vs P2P, server authority and anti-cheat, state replication vs RPCs, prediction and reconciliation, lag…
$ npx skills add ericrisco/rsc-harness --skill gamedev-multiplayer -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ericrisco/rsc-harness gamedev-multiplayer --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/gamedev-multiplayer .claude/skills/gamedev-multiplayer && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "gamedev-multiplayer" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/gamedev-multiplayer into .claude/skills/gamedev-multiplayer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gamedev-multiplayer", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ericrisco/rsc-harness/tree/main/skills/gamedev-multiplayerType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ericrisco/rsc-harness --skill gamedev-multiplayer -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ericrisco/rsc-harness gamedev-multiplayer --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/gamedev-multiplayer .agents/skills/gamedev-multiplayer && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "gamedev-multiplayer" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/gamedev-multiplayer into .agents/skills/gamedev-multiplayer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gamedev-multiplayer", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ericrisco/rsc-harness --skill gamedev-multiplayer -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ericrisco/rsc-harness gamedev-multiplayer --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/gamedev-multiplayer .cursor/skills/gamedev-multiplayer && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "gamedev-multiplayer" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/gamedev-multiplayer into .cursor/skills/gamedev-multiplayer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gamedev-multiplayer", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ericrisco/rsc-harness.git --path skills/gamedev-multiplayer--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ericrisco/rsc-harness --skill gamedev-multiplayer -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ericrisco/rsc-harness gamedev-multiplayer --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/gamedev-multiplayer .gemini/skills/gamedev-multiplayer && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "gamedev-multiplayer" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/gamedev-multiplayer into .gemini/skills/gamedev-multiplayer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gamedev-multiplayer", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ericrisco/rsc-harness gamedev-multiplayerInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ericrisco/rsc-harness --skill gamedev-multiplayer -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/gamedev-multiplayer .github/skills/gamedev-multiplayer && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "gamedev-multiplayer" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/gamedev-multiplayer into .github/skills/gamedev-multiplayer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gamedev-multiplayer", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ericrisco/rsc-harness --skill gamedev-multiplayer -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ericrisco/rsc-harness gamedev-multiplayer --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/gamedev-multiplayer .opencode/skills/gamedev-multiplayer && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "gamedev-multiplayer" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/gamedev-multiplayer into .opencode/skills/gamedev-multiplayer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gamedev-multiplayer", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
gamedev-multiplayerA skill your agent uses when adding multiplayer or netcode to a game — client-server vs P2P, server authority and anti-cheat, state replication vs RPCs, prediction and reconciliation, lag…
Gamedev Multiplayer is an agent skill from ericrisco/rsc-harness. Use when adding multiplayer or netcode to a game — client-server vs P2P, server authority and anti-cheat, state replication vs RPCs, prediction and reconciliation, lag compensation, plus Godot 4 / Unity NGO / Unreal wiring. NOT single-player gameplay (that is godot, unity, unreal), NOT matchmaking or server hosting (that is deployment).
Its SKILL.md is about 3.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including reference files (for example `evals/README.md`, `evals/cases.yaml` and `references/godot-high-level-multiplayer.md`).
It sits in Game Development, covering Game development and Multiplayer and networking. It works with Godot. The repository describes itself as: Your agent invents things because it has no memory, and can't touch your database because it has no arms. rsc is the meta-harness that gives it both, plus the trade to know the… The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit e3d5b33. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are gdscript, csharp and cpp).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Gamedev Multiplayer loads about 3.9k tokens when it runs, and up to ~9.1k if it reads all its reference files. Until then it costs about 92 tokens; SKILL.md has 1,648 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from ericrisco/rsc-harness at commit e3d5b33, republished under its MIT licence (© ericrisco). 1,648 words, ~3,940 tokens.
.claude/skills/gamedev-multiplayer/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.Design and wire the network layer of a game across Godot 4.x, Unity, and Unreal: choose a topology, put authority in the right place, replicate the right state, and hide latency without opening the door to cheaters. This skill owns the networking decisions; the engine skills own the local gameplay those decisions sit on top of.
Route elsewhere when the ask is not netcode:
| The ask | Route to | Why not here |
|---|---|---|
| Single-player movement, AI, input, animation, save files | godot / unity / unreal | The engine skill owns local gameplay; no network dimension. |
| Physics determinism, collision, character controllers | gamedev-physics | Netcode consumes determinism; it does not own the physics fix. |
| Matchmaking, lobby backend, dedicated-server hosting, relays, DB, game-server CI | deployment | Running the fleet, not designing the in-game net layer. |
| Web realtime — chat, presence, a generic WebSocket app | webhooks | Not a game world/simulation. |
| General threat modeling, authz review | secure-coding | This skill keeps only the game-specific anti-cheat controls. |
Target the current APIs. Never emit these deprecated / removed APIs:
| Engine | Target | Banned (removed/legacy) | Emit instead |
|---|---|---|---|
| Godot | 4.x | master/puppet/remote/sync keywords, rpc_config() as a func, rset, NetworkedMultiplayerENet | @rpc(...) annotation, set_multiplayer_authority(), ENetMultiplayerPeer, MultiplayerSynchronizer |
| Unity | Netcode for GameObjects (NGO) 1.x/2.x | UNet / HLAPI: NetworkIdentity, [Command], [SyncVar], NetworkServer, UnityEngine.Networking | NGO NetworkObject, NetworkBehaviour, NetworkVariable<T>, [Rpc(SendTo.X)] |
| Unreal | 5.x | replicating by polling in Tick, skipping WithValidation on gameplay RPCs | UPROPERTY(Replicated / ReplicatedUsing=...) + GetLifetimeReplicatedProps, Server/Client/NetMulticast UFUNCTIONs |
UNet is removed from modern Unity — do not scaffold it. If a repo genuinely uses Mirror (a
community UNet-like fork), say so; this skill targets first-party NGO. In NGO 2.x the unified
[Rpc(SendTo.Server)] / [Rpc(SendTo.ClientsAndHost)] attribute is preferred; the older
[ServerRpc] / [ClientRpc] still compile (and enforce …ServerRpc / …ClientRpc method-name
suffixes) — cover them but prefer the unified form on new code.
Pick the topology first; everything else follows from it.
Server-authoritative is the default. The server owns the truth; clients send intent (inputs, requests), never results. Never trust the client: the client cannot set its own health, position, score, currency, or hit results — it asks, the server decides, everyone else observes. A client that says "I moved to X / I did 40 damage / I have 999 gold" is either lagging or cheating; treat both the same. The one thing a client legitimately owns is its own input and, by convention, cosmetic-only state. See references/prediction-and-latency.md for how to keep this responsive.
Two complementary tools — use the right one:
isDead bool
self-corrects.Rule of thumb: replicate nouns (state), RPC verbs (events). What to replicate: only what other peers must see, at the coarsest rate that still looks right — position/rotation of visible actors, gameplay stats, animation state flags. Do not replicate values a peer can derive locally, purely cosmetic particles, or high-frequency data no one observes.
Ownership / authority decides who may write. Every networked object has an owner (a peer id) and an authority (usually the server). Writes to replicated state must come from the authority; ownership lets a client drive its own pawn's input while the server still validates the outcome. Getting ownership wrong is the #1 cause of "it works for the host but not the client" bugs.
Latency (round-trip time, RTT) is the enemy; jitter and packet loss make it worse. Four techniques, covered in depth in references/prediction-and-latency.md:
Tick rate / netrate: the server simulates at a fixed tick (e.g. 20–64 Hz) and sends state at a send rate that may be lower than its sim rate and decoupled from client render FPS. Never tie gameplay to frame rate on a networked game — simulate on a fixed timestep, interpolate for rendering.
Short form here; full patterns in the references. All snippets are current-API.
ENetMultiplayerPeer for transport, @rpc for events, MultiplayerSynchronizer for state, and
MultiplayerSpawner to replicate object spawns. Authority via set_multiplayer_authority(peer_id).
# Host / join
func host(port := 9999) -> void:
var peer := ENetMultiplayerPeer.new()
peer.create_server(port, 8)
multiplayer.multiplayer_peer = peer
func join(ip: String, port := 9999) -> void:
var peer := ENetMultiplayerPeer.new()
peer.create_client(ip, port)
multiplayer.multiplayer_peer = peer
# RPC: params are optional and order-free. any_peer lets clients call it;
# authority (default) means only the multiplayer authority may call it.
@rpc("any_peer", "call_local", "reliable")
func request_fire(target: Vector3) -> void:
if not multiplayer.is_server(): return # server validates
var shooter := multiplayer.get_remote_sender_id()
_resolve_shot(shooter, target) # server decides the resultset_multiplayer_authority(id) on a node; check with is_multiplayer_authority(). A player scene
usually gives its input node authority to the owning peer while the server keeps authority over health.MultiplayerSynchronizer streams a chosen property list (position, etc.) from the authority to peers;
set its replication interval and visibility (set_visibility_for(peer, bool)) to scope bandwidth.MultiplayerSpawner replicates instancing of scenes under a path so late peers get existing objects.NetworkObject (the identity, spawned via Spawn()), NetworkBehaviour (networked scripts),
NetworkVariable<T> (replicated state), and RPCs. NetworkManager.Singleton.StartHost/StartServer/StartClient.
public class Player : NetworkBehaviour {
// Default perms: everyone reads, only the SERVER writes → authoritative health.
public NetworkVariable<int> Health = new(100);
[Rpc(SendTo.Server)] // client → server: an intent
void FireRpc(Vector3 target) {
// runs on the server; validate, then apply and let NetworkVariables replicate the result
ResolveShot(OwnerClientId, target);
}
[Rpc(SendTo.ClientsAndHost)] // server → everyone: an event
void PlayMuzzleFxRpc(Vector3 at) { /* cosmetic only */ }
}IsOwner, IsServer, IsClient, IsHost, OwnerClientId. Only owners should send
owner-intent RPCs; the server validates regardless.NetworkVariable<T>(value, readPerm, writePerm) — NetworkVariableWritePermission.Server (default) vs
.Owner; subscribe via OnValueChanged. Use NetworkTransform for pos/rot sync.[Rpc(SendTo.X)]; legacy [ServerRpc]/[ClientRpc] still work but need the
method-name suffixes. Full patterns:
references/unity-and-unreal-netcode.md.Set AActor::bReplicates = true (or SetReplicates(true)). Replicate properties with UPROPERTY and
register them in GetLifetimeReplicatedProps; use RPC UFUNCTION specifiers for events.
UPROPERTY(ReplicatedUsing = OnRep_Health) // RepNotify fires on clients when it changes
float Health = 100.f;
UFUNCTION(Server, Reliable, WithValidation) // client → server intent (+ validation)
void ServerFire(FVector Target);
UFUNCTION(NetMulticast, Unreliable) // server → all: cosmetic event
void MulticastMuzzleFx(FVector At);
void AMyPawn::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& Out) const {
Super::GetLifetimeReplicatedProps(Out);
DOREPLIFETIME(AMyPawn, Health); // or DOREPLIFETIME_CONDITION for push/owner-only
}HasAuthority() (server or standalone); roles ROLE_Authority, ROLE_AutonomousProxy
(the owning client), ROLE_SimulatedProxy (observed elsewhere).NetCullDistanceSquared, bAlwaysRelevant, IsNetRelevantFor, and
dormancy (SetNetDormancy) stop replicating actors a client can't perceive. Movement replicates via
CharacterMovementComponent, which already does prediction+reconciliation for you.ServerFire faster than the weapon allows is caught
by server-side cooldowns, not client-side ones.| Anti-pattern | Why it bites | Do instead |
|---|---|---|
| Writing net code before the topology is chosen | Authority and cost model change everything downstream | Pick dedicated / listen / P2P first, and make the same code run on server and listen host |
| Trusting a client-reported result (health, position, score, hit) | That is the cheat surface, and lag looks identical to cheating | Clients send intent only; the server validates and owns all gameplay state |
| RPCing state that must stay consistent | A dropped unreliable event desyncs that client permanently | Replicate nouns (state), RPC verbs (events) — replicated values self-correct |
| Ownership/authority left implicit | The #1 cause of "works for the host, breaks for the client" | Set authority/ownership explicitly on spawn |
| Forgetting the listen-server host is also a client | Authority-only logic double-executes on the host | Guard it behind is_server() / HasAuthority() |
| Making the owning client wait a full RTT for its own input | Movement feels sluggish and unresponsive | Predict locally + reconcile; snapshot-interpolate remote entities |
| Client-side hit detection for hitscan | Trivially spoofed, and unfair to the higher-ping shooter | Server-side lag compensation: rewind to the shooter's render time |
| Tying simulation to render FPS | Sim diverges between machines at different frame rates | Fixed timestep on the sim, interpolate on the render |
| Replicating everything, every tick, to everyone | Melts bandwidth and leaks wallhack fuel | Scope by relevancy/visibility and send rate; rate-limit RPCs |
| Testing only on localhost | 0 ms RTT masks the exact desync/rubber-band bugs players will hit | Inject latency + packet loss across instances, exercising the client path |
Emitting UNet/HLAPI, Godot 3.x master/puppet/rset, or Tick-polled Unreal replication | Removed or legacy — it will not compile or will silently underperform | The current APIs in the version contract above |
© ericrisco, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 5 other files (references) in skills/gamedev-multiplayer of ericrisco/rsc-harness.
Open the folder on GitHubat commit e3d5b33
Gamedev Multiplayer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Gamedev Multiplayer this skillericrisco/rsc-harness | 167 | — | ~3.9k | Automated safety check: Pass | MIT | |
| Godot Server Architecturethedivergentai/GD-Agentic-Skills | 809 | — | ~2.9k | Automated safety check: Pass | LGPL-3.0 | |
| Godot Adapt Single To Multiplayerthedivergentai/GD-Agentic-Skills | 809 | — | ~3.3k | Automated safety check: Pass | LGPL-3.0 | |
| Godot Genre Fightingthedivergentai/GD-Agentic-Skills | 809 | — | ~3.8k | Automated safety check: Pass | LGPL-3.0 | |
| Godot Multiplayer Networkingthedivergentai/GD-Agentic-Skills | 809 | — | ~3.2k | Automated safety check: Pass | LGPL-3.0 | |
| Godot Multiplayergamedev-skills/awesome-gamedev-agent-skills | 1.4k | — | ~1.6k | Automated safety check: Pass | Apache-2.0 |
thedivergentai/GD-Agentic-Skills
Expert blueprint for dedicated / headless multiplayer hosts: ENet/DTLS, authority validation, safe packet decode, matchmaker handoff, and health telemetry.
thedivergentai/GD-Agentic-Skills
Expert patterns for adding multiplayer to single-player games including client-server architecture, authoritative server design, MultiplayerSynchronizer, lag compensation (client prediction, server…
thedivergentai/GD-Agentic-Skills
Expert blueprint for fighting games including frame data (startup/active/recovery frames, advantage on hit/block), hitbox/hurtbox systems, input buffering (5-10 frames), motion input detection (QCF…
thedivergentai/GD-Agentic-Skills
Expert multiplayer for desync, rollback, dedicated --headless servers, interest culling, and bandwidth spikes: ENet/WebRTC choice, authority, secure RPCs, client prediction/reconcile, and adaptive…
gamedev-skills/awesome-gamedev-agent-skills
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()/rpcid()), set per-node multiplayer…
925236118/AlphaAgent
Master Godot 4 GDScript patterns including signals, scenes, state machines, and optimization.
ericrisco/rsc-harness
A skill your agent uses when designing or analyzing a controlled experiment — falsifiable hypothesis, sample size from an MDE, reading significance/CI/power, CUPED, or rescuing tests that won't go…
ericrisco/rsc-harness
A skill your agent uses when making a web UI conform to WCAG 2.2 Level AA — axe-core or Lighthouse a11y violations, keyboard operability, focus management, ARIA roles/names/live regions, contrast…
ericrisco/rsc-harness
A skill your agent uses when running or fixing paid acquisition on Google or Meta — campaign structure (Performance Max, Demand Gen, Search, Advantage+), platform-fit creative, budget/scaling rules…
ericrisco/rsc-harness
A skill your agent uses when measuring whether an LLM or agent system actually got better and gating merges on it: golden sets, fixing an inflated LLM-as-judge, scoring RAG (faithfulness, contextual…
ericrisco/rsc-harness
A skill your agent uses when a creative goal must become a finished media file: pick and order generative-media models per modality — AI voiceover, image-to-video clips, score — then glue them with…
ericrisco/rsc-harness
A skill your agent uses when instrumenting product or web analytics — GA4/PostHog SDK wiring, event taxonomy, funnels, double-counted events, consent gating, PII scrubbing.
Works with
Categories
A skill your agent uses when adding multiplayer or netcode to a game — client-server vs P2P, server authority and anti-cheat, state replication vs RPCs, prediction and reconciliation, lag…. Gamedev Multiplayer is an agent skill from ericrisco/rsc-harness. Use when adding multiplayer or netcode to a game — client-server vs P2P, server authority and anti-cheat, state replication vs RPCs, prediction and reconciliation, lag compensation, plus Godot 4 / Unity NGO / Unreal wiring.
Gamedev Multiplayer fits situations like: adding multiplayer; netcode to a game — client-server vs P2P; server authority and anti-cheat; state replication vs RPCs.
Run `npx skills add ericrisco/rsc-harness --skill gamedev-multiplayer -a claude-code`. Or copy the skill folder (skills/gamedev-multiplayer in ericrisco/rsc-harness) into .claude/skills/gamedev-multiplayer in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ericrisco/rsc-harness --skill gamedev-multiplayer -a codex`. Or copy the skill folder (skills/gamedev-multiplayer in ericrisco/rsc-harness) into .agents/skills/gamedev-multiplayer in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ericrisco/rsc-harness --skill gamedev-multiplayer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/gamedev-multiplayer, .gemini/skills/gamedev-multiplayer, .github/skills/gamedev-multiplayer and .opencode/skills/gamedev-multiplayer in your project.
SKILL.md names no scripts, command-line tools or credentials: Gamedev Multiplayer is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Gamedev Multiplayer is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.9k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 5.1k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Gamedev Multiplayer: Godot Server Architecture (thedivergentai/GD-Agentic-Skills, 809 stars), Godot Adapt Single To Multiplayer (thedivergentai/GD-Agentic-Skills, 809 stars), Godot Genre Fighting (thedivergentai/GD-Agentic-Skills, 809 stars) and Godot Multiplayer Networking (thedivergentai/GD-Agentic-Skills, 809 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ericrisco (a GitHub user) maintains it in ericrisco/rsc-harness, which has 167 GitHub stars. The repository holds 227 skills in this directory. The repository was last updated on October 7, 2026.
Source: ericrisco/rsc-harness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.