Unity 锁步(Lockstep)帧同步网络框架 — TCP+KCP 双通道、确定性战斗、预测回滚、录制回放
KCP(UDP) 主数据通道 + TCP 可靠回退,自动切换,心跳 264ms
Fix64 定点数 + xorshift128 确定性随机,跨平台位级一致
技能/Buff/状态系统,可扩展 CombatEntity + SkillEffect 架构
客户端本地预测 → 服务端确认 → 自动回滚重放,操作零延迟感
完整帧历史回放 + 自动追帧,掉线后无缝恢复
输入流录制 + 离线播放器,支持播放/暂停/步进/快进
TypeScript 房间服务器,QuickMatch / 房间号 / 队列三种模式
TickTimelineViewer 实时事件时间轴、同步校验 TSV 导出、速度控制
玩家点击 → QueueUnitCommand() 立即生效预测 → 服务端帧到达 → RollbackToAuthoritative() 回滚 → 应用官方指令 → 恢复未确认预测
关键设计:权威快照只存服务端确认的 MoveTarget,用纯 Fix64 公式计算位置。A 和 B 的预测不同,但快照完全相同 → 永不偏离。
断线 → DS 检测 → 移入 _disconnectedPlayers → 客户端重连 → DS 识别 → 发送 S_RTS_GAME_START + 帧历史 → S_RTS_SYNC_HASH → 客户端 _catchingUp 模式逐帧回放 → 完成
服务端只存非空帧 (~10% ticks),空帧由客户端 while 补齐。超时 3s 无 SyncHash 自动退出追赶。
| 项目 | 值 |
|---|---|
| Unity 版本 | 2022.3+ (URP 14.x) |
| .NET | Standard 2.0 |
| 确定性数学 | Fix64 (Q31.32) |
| 序列化 | Google.Protobuf |
| 网络 | KCP(UDP) + TCP |
| Tick 间隔 | 15ms (可配置) |
| 支持平台 | Windows / macOS / Linux / iOS / Android |
国内 ISP 网络情况复杂,跨运营商、跨地区、NAT 穿透等因素对线上运行帧同步性能有较大影响。如果你需要运维部署咨询帮助,请邮件或微信联系。
微信 & QQ:21039936
jc.liuworld@hotmail.com