Use this skill for ZX multiplayer: "GGRS", "rollback netcode", "determinism", "desync", "split screen", "viewport FFI", "player_count()", "local_player_mask()", "sync test". **Load references when:** - Determinism checklist → `references/determinism-checklist.md` - Netplay patterns → `references/netplay-patterns.md` - Viewport layouts → `references/viewport-layouts.md` For GAME DESIGN (co-op patterns, competitive balance): use game-design:multiplayer-design instead.
/plugin marketplace add nethercore-systems/nethercore-ai-plugins/plugin install zx-game-design@nethercore-ai-pluginsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
references/determinism-checklist.mdreferences/netplay-patterns.mdreferences/viewport-layouts.mdGGRS rollback netcode implementation. All gameplay code must be deterministic.
| Feature | Value |
|---|---|
| Max Players | 4 (local + remote mix) |
| Netcode | GGRS deterministic rollback |
| Rollback Window | 8 frames typical |
| State Target | < 100 KB |
| Resolution | 960×540 |
Desync = different game states = broken multiplayer.
| Correct | Incorrect |
|---|---|
tick_count() | std::time, system clock |
random(), random_range() | rand() unseeded |
| Arrays, sorted collections | HashMap iteration |
| Fixed-point for critical math | Float edge cases (NaN) |
| Function | update() | render() |
|---|---|---|
player_count() | SAFE | SAFE |
local_player_mask() | NEVER | SAFE |
viewport() | N/A | SAFE |
Why? update() runs on ALL clients identically. render() is local-only.
fn is_local(player_id: u32) -> bool {
(local_player_mask() & (1 << player_id)) != 0
}
Target: < 100 KB rollback state
Include:
Exclude (visual-only):
| Players | Layout | Each Viewport |
|---|---|---|
| 2P Horiz | Side-by-side | 480×540 |
| 2P Vert | Top/bottom | 960×270 |
| 4P Grid | Quadrants | 480×270 |
fn render() {
for (i, player_id) in local_players().enumerate() {
set_viewport(i, local_count);
render_player_view(player_id);
}
viewport_clear();
draw_shared_ui();
}
See references/viewport-layouts.md for complete implementations.
WRONG - local_player_mask in update():
fn update() {
let mask = local_player_mask(); // DESYNC!
if (mask & 1) != 0 { /* breaks determinism */ }
}
CORRECT - process all players in update():
fn update() {
for i in 0..player_count() {
process_input(i); // All players, deterministic
}
}
Each viewport = separate render pass. 4 viewports = ~4x render work.
Optimize: simpler effects in split-screen, LOD, reduced particles.
physics-collision — Deterministic physicszx-dev:rollback-reviewer — Agent to detect non-deterministic codegame-design:multiplayer-design — Conceptual multiplayer designApplies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.