[ PROMPT_NODE_23276 ]
multiplayer
[ SKILL_DOCUMENTATION ]
# 多人游戏开发
> 网络架构与同步原则。
---
## 1. 架构选择
### 决策树
多人游戏类型?
│
├── 竞技 / 实时
│ └── 专用服务器 (权威模式)
│
├── 合作 / 休闲
│ └── 主机托管 (玩家作为服务器)
│
├── 回合制
│ └── 客户端-服务器 (简单)
│
└── 大型多人 (MMO)
└── 分布式服务器
### 对比
| 架构 | 延迟 | 成本 | 安全性 |
|--------------|---------|------|----------|
| **专用服务器** | 低 | 高 | 强 |
| **P2P** | 可变 | 低 | 弱 |
| **主机托管** | 中 | 低 | 中 |
---
## 2. 同步原则
### 状态同步 vs 输入同步
| 方法 | 同步内容 | 适用场景 |
|----------|-----------|----------|
| **状态同步** | 游戏状态 | 简单,对象较少 |
| **输入同步** | 玩家输入 | 动作游戏 |
| **混合同步** | 两者结合 | 大多数游戏 |
### 延迟补偿
| 技术 | 目的 |
|-----------|---------|
| **预测** | 客户端预测服务器结果 |
| **插值** | 平滑远程玩家移动 |
| **协调** | 修正预测错误 |
| **延迟补偿** | 回溯以进行命中检测 |
---
## 3. 网络优化
### 带宽缩减
| 技术 | 节省效果 |
|-----------|---------|
| **增量压缩** | 仅发送变更数据 |
| **量化** | 降低精度 |
| **优先级** | 优先发送重要数据 |
| **兴趣区域** | 仅同步附近实体 |
### 更新频率
| 类型 | 频率 |
|------|------|
| 位置 | 20-60 Hz |
| 生命值 | 变更时发送 |
| 背包 | 变更时发送 |
| 聊天 | 发送时触发 |
---
## 4. 安全原则
### 服务器权威
客户端: "我击中了敌人"
服务器: 验证 → 弹道是否真的击中?
→ 玩家状态是否合法?
→ 时间戳是否合理?
### 反作弊
| 作弊手段 | 防御措施 |
|-------|------------|
| 加速外挂 | 服务器验证移动 |
| 自瞄 | 服务器验证视线 |
| 物品复制 | 服务器管理背包 |
| 透视 | 不发送隐藏数据 |
---
## 5. 匹配系统
### 考量因素
| 因素 | 影响 |
|--------|--------|
| **技能水平** | 公平匹配 |
| **延迟** | 可游玩的连接 |
| **等待时间** | 玩家耐心 |
| **队伍规模** | 组队游玩 |
---
## 6. 反模式
| ❌ 错误做法 | ✅ 正确做法 |
|----------|-------|
| 信任客户端 | 服务器拥有权威 |
| 发送所有数据 | 仅发送必要数据 |
| 忽视延迟 | 针对 100-200ms 延迟设计 |
| 同步精确位置 | 使用插值/预测 |
---
> **记住: