AgentSkillsCN

multiplayer

多人在线游戏开发原则:架构设计、网络通信、同步机制。

SKILL.md
--- frontmatter
name: multiplayer
description: Multiplayer game development principles. Architecture, networking, synchronization.
allowed-tools: Read, Write, Edit, Glob, Grep, Bash

Multiplayer Game Development

Networking architecture and synchronization principles.


1. Architecture Selection

Decision Tree

code
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

Comparison

ArchitectureLatencyCostSecurity
DedicatedLowHighStrong
P2PVariableLowWeak
Host-basedMediumLowMedium

2. Synchronization Principles

State vs Input

ApproachSync WhatBest For
State SyncGame stateSimple, few objects
Input SyncPlayer inputsAction games
HybridBothMost games

Lag Compensation

TechniquePurpose
PredictionClient predicts server
InterpolationSmooth remote players
ReconciliationFix mispredictions
Lag compensationRewind for hit detection

3. Network Optimization

Bandwidth Reduction

TechniqueSavings
Delta compressionSend only changes
QuantizationReduce precision
PriorityImportant data first
Area of interestOnly nearby entities

Update Rates

TypeRate
Position20-60 Hz
HealthOn change
InventoryOn change
ChatOn send

4. Security Principles

Server Authority

code
Client: "I hit the enemy"
Server: Validate → did projectile actually hit?
         → was player in valid state?
         → was timing possible?

Anti-Cheat

CheatPrevention
Speed hackServer validates movement
AimbotServer validates sight line
Item dupeServer owns inventory
Wall hackDon't send hidden data

5. Matchmaking

Considerations

FactorImpact
SkillFair matches
LatencyPlayable connection
Wait timePlayer patience
Party sizeGroup play

6. Anti-Patterns

❌ Don't✅ Do
Trust the clientServer is authority
Send everythingSend only necessary
Ignore latencyDesign for 100-200ms
Sync exact positionsInterpolate/predict

Remember: Never trust the client. The server is the source of truth.