Multiplayer game development principles. Architecture, networking, synchronization.
Networking architecture and synchronization principles.
What type of multiplayer?
│
├── Competitive / Real-time
│ └── Dedicated Server (authoritative)
│
├── Cooperative / Casual
│ └── Host-based (one player is server)
│
├── Turn-based
│ └── Client-server (simple)
│
└── Massive (MMO)
└── Distributed servers
| Architecture | Latency | Cost | Security | |--------------|---------|------|----------| | Dedicated | Low | High | Strong | | P2P | Variable | Low | Weak | | Host-based | Medium | Low | Medium |
| Approach | Sync What | Best For | |----------|-----------|----------| | State Sync | Game state | Simple, few objects | | Input Sync | Player inputs | Action games | | Hybrid | Both | Most games |
| Technique | Purpose | |-----------|---------| | Prediction | Client predicts server | | Interpolation | Smooth remote players | | Reconciliation | Fix mispredictions | | Lag compensation | Rewind for hit detection |
| Technique | Savings | |-----------|---------| | Delta compression | Send only changes | | Quantization | Reduce precision | | Priority | Important data first | | Area of interest | Only nearby entities |
| Type | Rate | |------|------| | Position | 20-60 Hz | | Health | On change | | Inventory | On change | | Chat | On send |
Client: "I hit the enemy"
Server: Validate → did projectile actually hit?
→ was player in valid state?
→ was timing possible?
| Cheat | Prevention | |-------|------------| | Speed hack | Server validates movement | | Aimbot | Server validates sight line | | Item dupe | Server owns inventory | | Wall hack | Don't send hidden data |
| Factor | Impact | |--------|--------| | Skill | Fair matches | | Latency | Playable connection | | Wait time | Player patience | | Party size | Group play |
| ❌ Don't | ✅ Do | |----------|-------| | Trust the client | Server is authority | | Send everything | Send only necessary | | Ignore latency | Design for 100-200ms | | Sync exact positions | Interpolate/predict |
Remember: Never trust the client. The server is the source of truth.
Copy a source-pinned command for your client. You run it yourself.
Destination: .claude/skills/multiplayer · pinned to the source commit
# Run from your project root
git clone https://github.com/davila7/claude-code-templates.git .skillboard-tmp
git -C .skillboard-tmp checkout 5cc17cf267132cc690dee82239b80a99ec82e4f8
mkdir -p ".claude/skills"
cp -r ".skillboard-tmp/cli-tool/components/skills/creative-design/game-development/multiplayer" ".claude/skills/"
rm -rf .skillboard-tmpReview the source before running. This copies files into your project; it is not a one-click install and does not verify runtime safety.
sudo apt update && sudo apt install -y gitnpm install -g @anthropic-ai/claude-code# Run from your project root
git clone https://github.com/davila7/claude-code-templates.git .skillboard-tmp
git -C .skillboard-tmp checkout 5cc17cf267132cc690dee82239b80a99ec82e4f8
mkdir -p ".claude/skills"
cp -r ".skillboard-tmp/cli-tool/components/skills/creative-design/game-development/multiplayer" ".claude/skills/"
rm -rf .skillboard-tmpDestination: .claude/skills/multiplayer
Scanner static-checks@0.1.0 · commit 5cc17cf26713. Static checks cannot prove runtime safety – review the source and the exact diff before installing. How checks work.
Declares shell/exec-level tools that grant wide host access.
Evidence: Bash· fingerprint d1e9567da9a8a4b0