一个跨语言的帧同步实验项目,包含:
- C++ 服务端:负责输入收集与广播、超时补全与帧管理。
- C# Unity 客户端:负责输入采集、逻辑模拟与可视化展示。
项目目标是实现一个可复现、确定性一致的多人游戏逻辑系统,并探索帧同步架构中的关键机制(逻辑时钟、输入同步、确定性物理、渲染插值)。
给予一个初始方向的力后,不同客户端在同一帧下运行轨迹完全一致:
- 跨语言通信:使用 Socket 自定义协议,实现 C++ 服务端与 Unity C# 客户端通信。
- 逻辑时钟系统:通过 Accumulator 与固定时间步(TIME_STEP)实现稳定的逻辑帧更新。
- 双时钟模型:分离输入帧与逻辑帧,支持后加入客户端的追帧与历史回放。
- 超时与空指令机制:服务端自动补全迟到或丢失的输入,避免全局死锁。
- 确定性物理模块:抛弃 Unity Rigidbody,自建简易物理系统(弹性碰撞、摩擦、边界检测)。
- 逻辑与渲染解耦:采用 SmoothDamp 插值,实现逻辑与表现层分离。
- 当前版本的确定性仅限同一设备,未实现定点数支持。
- 网络层缺少延迟模拟。
- 后续计划引入:
- 定点数数学库;
- 指令回放与状态回滚;
- 快照插值机制(Snapshot Interpolation);
- 多客户端压力测试。

