Godot Gdscript Patterns
925236118/AlphaAgent
Master Godot 4 GDScript patterns including signals, scenes, state machines, and optimization.
A skill your agent uses when a Godot 4 game goes online or co-op: host and join with ENet, WebSocket for a web build, RPCs (@rpc, rpcid, anypeer), MultiplayerSpawner and MultiplayerSynchronizer…
$ npx skills add scenario-labs/skills --skill scenario-godot-multiplayer -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install scenario-labs/skills scenario-godot-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/scenario-labs/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/game-engines/godot/scenario-godot-multiplayer .claude/skills/scenario-godot-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 "scenario-godot-multiplayer" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/game-engines/godot/scenario-godot-multiplayer into .claude/skills/scenario-godot-multiplayer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-godot-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/scenario-labs/skills/tree/main/skills/game-engines/godot/scenario-godot-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 scenario-labs/skills --skill scenario-godot-multiplayer -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install scenario-labs/skills scenario-godot-multiplayer --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/scenario-labs/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/game-engines/godot/scenario-godot-multiplayer .agents/skills/scenario-godot-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 "scenario-godot-multiplayer" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/game-engines/godot/scenario-godot-multiplayer into .agents/skills/scenario-godot-multiplayer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-godot-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 scenario-labs/skills --skill scenario-godot-multiplayer -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install scenario-labs/skills scenario-godot-multiplayer --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/scenario-labs/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/game-engines/godot/scenario-godot-multiplayer .cursor/skills/scenario-godot-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 "scenario-godot-multiplayer" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/game-engines/godot/scenario-godot-multiplayer into .cursor/skills/scenario-godot-multiplayer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-godot-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/scenario-labs/skills.git --path skills/game-engines/godot/scenario-godot-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 scenario-labs/skills --skill scenario-godot-multiplayer -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install scenario-labs/skills scenario-godot-multiplayer --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/scenario-labs/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/game-engines/godot/scenario-godot-multiplayer .gemini/skills/scenario-godot-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 "scenario-godot-multiplayer" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/game-engines/godot/scenario-godot-multiplayer into .gemini/skills/scenario-godot-multiplayer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-godot-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 scenario-labs/skills scenario-godot-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 scenario-labs/skills --skill scenario-godot-multiplayer -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/scenario-labs/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/game-engines/godot/scenario-godot-multiplayer .github/skills/scenario-godot-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 "scenario-godot-multiplayer" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/game-engines/godot/scenario-godot-multiplayer into .github/skills/scenario-godot-multiplayer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-godot-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 scenario-labs/skills --skill scenario-godot-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 scenario-labs/skills scenario-godot-multiplayer --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/scenario-labs/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/game-engines/godot/scenario-godot-multiplayer .opencode/skills/scenario-godot-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 "scenario-godot-multiplayer" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/game-engines/godot/scenario-godot-multiplayer into .opencode/skills/scenario-godot-multiplayer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-godot-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.
scenario-godot-multiplayerA skill your agent uses when a Godot 4 game goes online or co-op: host and join with ENet, WebSocket for a web build, RPCs (@rpc, rpcid, anypeer), MultiplayerSpawner and MultiplayerSynchronizer…
Scenario Godot Multiplayer is an agent skill from scenario-labs/skills. Use when a Godot 4 game goes online or co-op: host and join with ENet, WebSocket for a web build, RPCs (@rpc, rpcid, anypeer), MultiplayerSpawner and MultiplayerSynchronizer, player authority, lobbies and login, a dedicated or headless server export, lag, rubber-banding, prediction or netfox, cheating, bandwidth, Steam, Nakama or WebRTC. Symptoms: players do not appear on the client, 'rpc node checksum failed', 'node not found' on an RPC, desync, the server build is huge, a client never connects.
Its SKILL.md is about 5.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 19 other files, including scripts and reference files (for example `references/critique.md`, `references/expert-notes.md` and `references/gui-paths.md`).
It sits in Game Development, covering Game development. It works with Godot. The repository describes itself as: Get production-ready images, video, audio, and 3D from any AI agent: skills that pick the right model, price before spending, and keep characters and brands consistent through… The licence is MIT.
9 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit f6f8ab7. 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.
Ships 10 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
npxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.
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.
Scenario Godot Multiplayer loads about 5.1k tokens when it runs, and up to ~17k if it reads all its reference files. Until then it costs about 133 tokens; SKILL.md has 2,110 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); the scripts in this folder are not scanned.
The full file from scenario-labs/skills at commit f6f8ab7, republished under its MIT licence (© scenario-labs). 2,110 words, ~5,111 tokens.
.claude/skills/scenario-godot-multiplayer/SKILL.md (or your agent's skills folder). This skill also uses 15 other files; get the full folder from GitHub.Target: Godot 4.7.2, SceneMultiplayer over ENet and WebSocket.
Expert level here means the networked game is proven with several processes, under injected latency, before anyone plays it: authority is a written decision per object, every client message is a request the server checks, and replication cost is measured in KiB/s. This skill builds the replication in code, runs a server and 2 to 3 clients headless on localhost (plus a browser client), and passes only on numbers from those runs. If a sibling skill named here is missing from your available skills, ask the user to install it (npx skills add scenario-labs/skills --skill <name>); unattended, proceed from tool schemas and flag the gap.
REQUIRED BACKGROUND: scenario-godot-expert (channels, gd_run, review loop, 4.7 traps).
Status (2026-10-02): 16 live tests (up to 3 clients, ENet, WebSocket, exported server, headless Chrome) and 18 offline tests pass. Evidence: tests/live_evidence/godot-multiplayer/.
_enter_tree. Name each player node with its peer id; _enter_tree calls set_multiplayer_authority(name.to_int()) so it holds before _ready (Travis Hunter, tK2ACXUGcrY [00:46:16]). Do not read a spawn-synced property there: on every client copy measured, peer_id was still 0 in _enter_tree.any_peer RPC is a request. Read multiplayer.get_remote_sender_id() first (it is 0 after an await, measured), check that the sender owns the target and that the values are possible, then act. A forged teleport for another player and a 30 m jump were both rejected in the live test.@rpc declaration and skips arguments; two live runs in 4.7.2 (M2, round 1 and round 2) disagree. A name missing on one side logs "The rpc node checksum failed" on both sides and RPCs are matched by sorted index: the client called b and the server ran a. A different mode only fails per call ("not allowed"), a different argument count fails per call ("expected 2 argument(s)"), different call_local or transfer mode passes silently. Keep server and client on one script per node path (one codebase: Davide Di Staso, nyKBuM9Y_-Q).gd_net.UdpLagProxy adds delay, jitter and loss on localhost without root.--max-fps, Engine.max_fps) or set replication_interval. Cut by visibility (Di Staso [00:14:29]).peer_connected fires once per existing peer, server id 1 included; connected_to_server fires on clients only, so send client info there, not from peer_connected (docs delta 7; FinePointCGI e0JLO_5UgQo [00:22:50]). After the server leaves, get_unique_id() reads 0: skip id 0 in registries and spawn loops (pA9RGn87Uag [00:47:31]). All measured (M14).dedicated_server feature, which forces headless display and dummy audio even without --headless (measured on the exported macOS binary), and Strip Visuals removed the 3.1 MB texture from the server pack (BatteryAcidDev, jgJuX04cq7k [00:04:47]).Genre and player count; who may cheat (competitive, co-op, friends only); platforms (browser means WebSocket or WebRTC, no ENet); topology (dedicated server, listen server, relay or P2P); a backend already chosen (Steam, Nakama, Colyseus, own server); hosting budget (cloud costs money: ask before any deployment); tick and target RTT (default 60 Hz server, play tested at 100 and 250 ms). Defaults: one project, server authority with input-only clients for anything competitive, ENet for desktop and mobile, WebSocket behind TLS (wss://) for the web.
@rpc (docs deltas 4, 5); idle players send nothing below a velocity threshold (pA9RGn87Uag [00:42:16]). GATE: no object without an owner; no client-owned health, score or inventory unless the brief accepts cheating.gd_net.install_netkit(P), then net_build.gd (make_sync, make_spawner) writes scenes with SceneReplicationConfig set in code; the Replication panel is for humans (references/gui-paths.md). Players: name = peer id, add_child(node, true), authority in _enter_tree. GATE: net_audit.gd:scene has no flags (root paths resolve, no Object or RID property, no @Node@2 names, intervals match modes).gd_net.session(P, roles) runs a server and 2 to 3 clients, each in its own APFS clone, all machine slots held first. Cover the lobby gate, a late joiner, a leaver, cheat RPCs, and a password through auth_callback plus complete_auth on both sides (P5). GATE: every client sees every player, the late joiner sees all, the leaver's node is freed everywhere, authority report correct, forged RPCs rejected, logs clean.UdpLagProxy at 100 and 250 ms, then 250 ms with 30 ms jitter and 5 % loss; replication_delay() measures how far behind the server truth a remote client shows a player. GATE: the numbers fit the genre, or prediction is planned (netfox or own).bandwidth in the result), per mode, interval and visibility. GATE: under the budget at max players, fps capped.transport="websocket"; for a browser build, export Web and run the client in headless Chrome (procedure P9). WebSocket is TCP: "unreliable" RPCs arrive reliable and ordered, with head-of-line blocking under loss; WebRTC gives unreliable browser channels but needs signalling, STUN/TURN and webrtc-native on desktop (WebRTC doc; wgIqB6JNcro [00:19:35]). An HTTPS page needs wss://. A background tab stops _process and the socket drops: build reconnect (web doc). GATE: the browser client joins, sees all players, RTT measured.gd_net.server_preset(), export, compare client and server packs (pack_report), run the exported binary without --headless and connect clients. Set application/run/flush_stdout_on_print=true for systemd or journald logs (docs delta 12; default false, measured). GATE: dedicated_server feature true, display headless, no client textures in the pack, exit 0.capture_at); open it. GATE: players where the server says, colors per peer, nothing missing.import sys; sys.path[:0] = ["<skills>/scenario-godot-expert/scripts", "<skills>/scenario-godot-multiplayer/scripts"]
import gd_net
gd_net.install_netkit(P); gd_net.build_scenes(P) # res://net/world.tscn, player.tscn, props
roles = [gd_net.role("server", role="server", port=24010, lobby_size=2),
gd_net.role("c1", role="client", port=24011, index=0, delay_s=0.3, cheat_at=2.0),
gd_net.role("c2", role="client", port=24011, index=1, delay_s=0.3)]
with gd_net.UdpLagProxy(24011, 24010, rtt_ms=100, jitter_ms=0, loss=0.0):
s = gd_net.session(P, roles) # one APFS clone and one Godot per role
s["roles"]["c1"]["result"]["rtt_median_ms"] # every NetLab number is in AGENT_RESULTYour own game uses the same pattern: a job script per role (role(name, script=...)), user args after --, AGENT_RESULT printed by each process. Keep ports unique per project; two roles never share a project folder.
netfox gives server authority with client prediction and rollback: input gathered on the network tick, logic in _rollback_tick, NetworkTime.physics_factor around move_and_slide, TickInterpolator for display (GqHTNmRspjU [00:06:58, 00:18:55, 00:21:24]; iP_xdJ0peFo [00:28:00]). Prove it on a small prototype first: it is opinionated (GqHTNmRspjU [00:34:53]). Deterministic input-only rollback fits fighting and RTS-like games with 2 to 8 players (David Snopek, zvqQPbT8rAE). Steam (GodotSteam, SteamMultiplayerPeer), Nakama, Colyseus and WebRTC P2P swap the peer and lobby calls; authority, spawner and synchronizer code stays the same (Gwizz, fUBdnocrc3Y; AndrooDev, wgIqB6JNcro [00:07:18]). None of these ran here: they need a third-party addon, an account or a signalling server. Verify against the installed release before quoting an API.
| Value | Measured here (2026-10-02, M-series Mac, localhost) | Relative to |
|---|---|---|
| RPC round trip, no proxy | 16 to 19 ms | 60 fps both ends; one frame each way dominates |
| ENet RTT statistic | 15 to 23 ms | same |
| Own input to visible motion, server authority | 47 to 52 ms | about 3 frames |
| Remote view behind server truth | 20 to 30 ms, 0.07 m error at 3 m/s | no proxy |
| Same at 100 / 250 ms RTT | 70 to 80 / 150 to 155 ms; 0.22 / 0.44 m | UdpLagProxy, adds about 6 ms per direction |
| 50 props, ALWAYS, 60 fps | 72.6 KiB/s, moving or idle | 1 client |
| ON_CHANGE moving / idle | 98 to 101 / 2.3 KiB/s | same |
ALWAYS, replication_interval 0.05 | 21 to 22 KiB/s | same |
| ALWAYS, uncapped headless server (145 fps) | 160 to 175 KiB/s | same |
auth_timeout default; kick of a silent peer | 3.0 s; 1.50 s after setting 1.5 | server |
| Web export, single-thread | 40 MB, wasm 39.5 MB (10.1 MB gzip) | handoff to scenario-godot-performance-export |
| Dedicated server pack / client pack | 0.11 / 3.27 MB (3.1 MB texture stripped) | same project |
spawn_limit | 0 = unlimited (default); limit 2: third spawn() logs "Spawn limit reached!", returns null, clients get 2 | M14; raise it to max players (jgJuX04cq7k [00:18:34]) |
net_audit flags empty; every role ok with no unexpected engine error; players_seen_max equals the player count everywhere; authority body 1, input = peer; teleport counts as expected; RTT and replication_delay at 100 and 250 ms; KiB/s per mode; rpc_audit reviewed, rpc_pair_check ok; exported server boot dict correct.| Mistake | What it looks like | Fix |
|---|---|---|
Players spawned only on the server without a spawner, or spawner spawn_path empty | client sees nobody | MultiplayerSpawner with spawn_path and the scene in its list; server calls add_child |
Authority read from a synced property in _enter_tree | authority 1 everywhere on clients | authority from name.to_int() |
Runtime node without add_child(node, true) | @Node@2 names, "node not found" on RPC | readable names |
await before get_remote_sender_id() | sender 0, validation passes or fails wrongly | read the sender first |
| RPC added on the server script only | checksum error, the wrong method runs | one script, or rpc_pair_check |
| Object or Resource as RPC argument | no error; receiver gets EncodedObjectAsID | send ids, paths or plain data |
| Client owns its body in a competitive game | speed and teleport hacks stick | input-only authority plus server simulation |
| Headless server not capped | 2.4 times the bandwidth | --max-fps 60 or intervals |
server_relay turned off for a P2P-style feature | "Attempt to call RPC with unknown peer ID" | keep relay on, or route through the server |
| Freeing a networked branch in the wrong order | "isn't currently active", "Node not found" | offline peer, free contents, drop custom API, free branch |
| Server export in normal mode | full-size pack, window opens | dedicated server export mode, Strip Visuals |
Server start inside assert() | works from the editor; the release export never listens | var err := peer.create_server(port), then check err (M15: assert body stripped in release) |
Client info sent from peer_connected, or id 0 registered | duplicate nodes on late joiners, a phantom player | connected_to_server; skip id 0 |
| Client and server on different Godot versions | connection or protocol failures | same 4.7.2 build (protocol changed in 4.3) |
get_rpc_config became get_node_rpc_config (4.5); @rpc tables live on Script.get_rpc_config().auth_timeout is the property; the docs page spells auth_timout.NetworkedMultiplayerENet, remote, rset, get_rpc_sender_id) do not exist; gd_net.rpc_audit flags them.initialize() returns OK and only logs an error without it (measured).NetUtil.enet_throttle() in long sessions (P8).ready_state != STATE_OPEN (WebSocket); harmless, whitelisted by exact text.references/procedures.md: P1 to P14 with code, test ids and results.references/expert-notes.md: claims by expert with timestamps and verified corrections.references/critique.md, references/gui-paths.md (Replication panel, Run Instances, Network Profiler), references/sources.md.scripts/gd_net.py, scripts/agentkit/multiplayer/: the harness and kit.© scenario-labs, 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 15 other files (scripts, references) in skills/game-engines/godot/scenario-godot-multiplayer of scenario-labs/skills.
Open the folder on GitHubat commit f6f8ab7
Scenario Godot 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 |
|---|---|---|---|---|---|---|
| Scenario Godot Multiplayer this skillscenario-labs/skills | 946 | — | ~5.1k | Automated safety check: Pass | MIT | |
| Godot Gdscript Patterns925236118/AlphaAgent | 103 | 10 repos | ~5k | Automated safety check: Pass | MIT | |
| 2D Map and Scene Generator0x0funky/agent-sprite-forge | 4.4k | — | ~2.9k | Automated safety check: Pass | MIT | |
| Godot UI Integrationzimo-xiao-zheng/godot-ui-integration | 285 | — | ~1.5k | Automated safety check: Pass | MIT | |
| Godot Wechat Minigame Adaptergodothub/godot-minigame | 187 | — | ~1.5k | Automated safety check: Pass | MIT | |
| AI Game Art Pipelineybuild-ai/ai-game-art-pipeline-skill | 297 | — | ~1.1k | Automated safety check: Pass | MIT |
925236118/AlphaAgent
Master Godot 4 GDScript patterns including signals, scenes, state machines, and optimization.
0x0funky/agent-sprite-forge
Plans and builds 2D game maps and scenes, from tilemaps and parallax backgrounds to HD-2D plates, with collision checks, a playable HTML preview and Tiled, Godot or LDtk export.
zimo-xiao-zheng/godot-ui-integration
Build or revise Godot UI from an approved design, separated art, or a visual reference when scene structure, gameplay binding, and runtime visual verification all matter.
godothub/godot-minigame
Apply the bundled self-contained Godot WeChat Mini Game adapter kit to an official Godot checkout.
ybuild-ai/ai-game-art-pipeline-skill
Provider-neutral open-source skill for planning and producing game-runtime art assets and animation: static props/icons, canonical character sheets, combat sprites, 3D/video motion references…
RandallLiuXin/GodotMaker
Runtime debugging and live project inspection via godot-mcp.
scenario-labs/skills
A skill your agent uses when drawing or animating with Grease Pencil in Blender 5.x from Python: 2D or 2.5D illustration, frame-by-frame animation, a cutout or part-based 2D character, strokes with…
scenario-labs/skills
A skill your agent uses when grooming hair or fur in Blender with hair curves, such as a character hairstyle, animal fur, procedural fur in geometry nodes, or hair cards and mesh hair for games.
scenario-labs/skills
A skill your agent uses when lighting, rendering or compositing in Blender: light a character, product or hero shot, interior at dusk or night, three-point or motivated lighting, sun and sky, HDRI…
scenario-labs/skills
A skill your agent uses when creating a ChatGPT pet or Codex pet with Scenario: hatching an animated companion from a text idea, a character, mascot or brand cue, or reference photos and art; making…
scenario-labs/skills
A skill your agent uses when animating characters or scenes in Godot 4.7: AnimationPlayer clips and RESET, AnimationTree state machines and blend spaces built in code, Mixamo or glTF import, loop…
scenario-labs/skills
A skill your agent uses when adding or fixing sound in Godot 4.7: audio buses and effects, volume sliders, 'too many sounds', combat audio with hundreds of enemies, sounds clipping or distorting, 3D…
Works with
Categories
A skill your agent uses when a Godot 4 game goes online or co-op: host and join with ENet, WebSocket for a web build, RPCs (@rpc, rpcid, anypeer), MultiplayerSpawner and MultiplayerSynchronizer…. Scenario Godot Multiplayer is an agent skill from scenario-labs/skills. Use when a Godot 4 game goes online or co-op: host and join with ENet, WebSocket for a web build, RPCs (@rpc, rpcid, anypeer), MultiplayerSpawner and MultiplayerSynchronizer, player authority, lobbies and login, a dedicated or headless server export, lag, rubber-banding, prediction or netfox, cheating, bandwidth, Steam, Nakama or WebRTC.
Scenario Godot Multiplayer fits situations like: A Godot 4 game goes online; co-op: host and join with ENet; webSocket for a web build; multiplayerSpawner and MultiplayerSynchronizer.
Run `npx skills add scenario-labs/skills --skill scenario-godot-multiplayer -a claude-code`. Or copy the skill folder (skills/game-engines/godot/scenario-godot-multiplayer in scenario-labs/skills) into .claude/skills/scenario-godot-multiplayer in your project. Claude Code loads it when a task matches its description.
Run `npx skills add scenario-labs/skills --skill scenario-godot-multiplayer -a codex`. Or copy the skill folder (skills/game-engines/godot/scenario-godot-multiplayer in scenario-labs/skills) into .agents/skills/scenario-godot-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 scenario-labs/skills --skill scenario-godot-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/scenario-godot-multiplayer, .gemini/skills/scenario-godot-multiplayer, .github/skills/scenario-godot-multiplayer and .opencode/skills/scenario-godot-multiplayer in your project.
Going by SKILL.md and its folder, Scenario Godot Multiplayer needs Python for the scripts in its folder and the command-line tools its instructions call (npx). Our summary lists: Python 3; Node.js.
SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Scenario Godot Multiplayer is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.1k tokens (SKILL.md is roughly 20k 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 12k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Scenario Godot Multiplayer: Godot Gdscript Patterns (925236118/AlphaAgent, 103 stars), 2D Map and Scene Generator (0x0funky/agent-sprite-forge, 4.4k stars), Godot UI Integration (zimo-xiao-zheng/godot-ui-integration, 285 stars) and Godot Wechat Minigame Adapter (godothub/godot-minigame, 187 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
scenario-labs (a GitHub organization) maintains it in scenario-labs/skills, which has 946 GitHub stars. The repository holds 146 skills in this directory. The repository was last updated on October 10, 2026.
Source: scenario-labs/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.