本文发表于程序员刘宇的个人博客,转载请注明来源,博客园同步更新:https://www.cnblogs.com/xiaohutu/p/12402399.html
这几年做了一些网络同步项目,总结一下帧同步的一些东西。
1. 帧同步基本特点
- 所有的逻辑行为运算都在客户端进行,客户端保证彼此之间执行结果的一致性。
- 客户端将自己的所有操作发给服务器,服务器转发。
- 服务器维持一定的逻辑帧率向客户端发包,每次都带上一间隔的所有客户端发来的操作,如果没有就发空帧,附带上客户端需要执行此包的帧数。
- 客户端收到帧数据执行这一逻辑帧的行为,否则等待。

2. 同步性的保证
- 确保需要同步部分逻辑执行次序的一致性,特别关注各种容器的底层结构以及运行过程中对容器的增删改。
- 确保AI、物理引擎等执行结果的一致性,避免因为使用部分游戏引擎的更新特性,导致一些AI计算的时间次序问题。
- 确保数学运算在不同cpu上的的一致性,使用定点数或者浮点数截取等方法计算逻辑。
- 确保随机结果基于次数的一致性,使用次数一致性的随机算法,如梅森旋转算法。
- 确保客户端数据来源的一致性,存储的静态数据以及读取过程需要特别关注。
3. 逻辑画面分离
- 抽离开图像执行逻辑和关键帧执行逻辑的循环结构。
- 逻辑部分可以无画面执行,正确的输出结果。

本文总结了帧同步在游戏开发中的实践经验,包括帧同步的特点、同步性保证、逻辑画面分离、乐观锁策略、断线处理、弱网络优化、追赶补帧、战斗录像、回滚机制和防作弊措施。强调帧同步在弱联网环境下的优势及在实时战斗游戏中的适用性。
最低0.47元/天 解锁文章
1153

被折叠的 条评论
为什么被折叠?



