多人游戏开发
网络架构和同步原则。
1. 架构选择
决策树
什么类型的多人游戏?
│
├── 竞技 / 实时
│ └── 专用服务器(权威)
│
├── 合作 / 休闲
│ └── 主机式(一个玩家是服务器)
│
├── 回合制
│ └── 客户端-服务器(简单)
│
└── 大型(MMO)
└── 分布式服务器
对比
| 架构 | 延迟 | 成本 | 安全性 |
|---|---|---|---|
| 专用 | 低 | 高 | 强 |
| P2P | 可变 | 低 | 弱 |
| 主机式 | 中等 | 低 | 中等 |
2. 同步原则
状态 vs 输入
| 方法 | 同步什么 | 最适合 |
|---|---|---|
| 状态同步 | 游戏状态 | 简单、少量对象 |
| 输入同步 | 玩家输入 | 动作游戏 |
| 混合 | 两者 | 大多数游戏 |
延迟补偿
| 技术 | 用途 |
|---|---|
| 预测 | 客户端预测服务器 |
| 插值 | 平滑远程玩家 |
| 和解 | 修正错误预测 |
| 延迟补偿 | 回退命中检测 |
3. 网络优化
带宽减少
| 技术 | 节省 |
|---|---|
| 增量压缩 | 只发送变化 |
| 量化 | 降低精度 |
| 优先级 | 重要数据优先 |
| 兴趣区域 | 仅附近实体 |
更新频率
| 类型 | 频率 |
|---|---|
| 位置 | 20-60 Hz |
| 生命值 | 变化时 |
| 物品栏 | 变化时 |
| 聊天 | 发送时 |
4. 安全原则
服务器权威
客户端:"我击中了敌人"
服务器:验证 → 投射物真的击中了吗?
→ 玩家处于有效状态吗?
→ 时间可能吗?
反作弊
| 作弊 | 预防 |
|---|---|
| 加速挂 | 服务器验证移动 |
| 自瞄 | 服务器验证视线 |
| 物品复制 | 服务器拥有物品栏 |
| 透视 | 不发送隐藏数据 |
5. 匹配
考虑因素
| 因素 | 影响 |
|---|---|
| 技能 | 公平匹配 |
| 延迟 | 可玩连接 |
| 等待时间 | 玩家耐心 |
| 队伍大小 | 组队游戏 |
6. 反模式
| ❌ 不要 | ✅ 要 |
|---|---|
| 信任客户端 | 服务器是权威 |
| 发送所有内容 | 只发送必要的 |
| 忽略延迟 | 为100-200ms设计 |
| 同步精确位置 | 插值/预测 |
记住: 永远不要信任客户端。服务器是真相来源。
何时使用
此技能适用于执行概述中描述的工作流程或操作。
限制
- 仅当任务明确匹配上述范围时使用此技能。
- 不要将输出替代特定环境的验证、测试或专家审查。
- 如果缺少必要的输入、权限、安全边界或成功标准,请停止并请求澄清。