游戏设计&游戏开发Unity3D游戏开发游戏开发

帧同步游戏开发要点

2017-08-10  本文已影响727人  小匠头

结论


先说一下我们在研究和使用了帧同步之后,得出的结论:

如果项目没有录像、观战功能,请先放弃使用帧同步的念头,尝试使用状态同步。因为设计得好的状态同步,可以在很少流量基础上,完成类帧同步的效果。除非在通信上没有压缩空间,再考虑帧同步。

如果项目需求有中途加入,且不能容忍从头Replay带来的等待,游戏互动玩法(游戏内个体之间的相互作用)还非常复杂,则请慎重考虑是否使用帧同步。

要点


确定性运算

时序

难点-中途加入


帧同步的难点在于中途加入,当然这里的中途加入,不讨论从头Replay一遍的方案,如果你的项目,能够容忍从头Replay,那就可以跳过了。这里讨论的是,将其他客户端的现场正确地同步给中途加入的客户端这种方案。在最开始的结论部分已经提过,如果游戏玩法比较简单,中途加入还是很好实现的。但如果包含复杂的互动玩法,那对于游戏开发来说,将是类似两万五千里长征似的漫长负担了。中途加入要处理的问题很多,一个很小的功能需求改动,就可能导致整个同步机制挂掉。而且要注意,这个改动带来的同步不一致还不一定是必现的。这就对开发和测试人员提出了极高的要求,必须一点问题都没有,不能有一丁点的bug,一旦出现bug,就是致命的——不同步。不同步不像其他的bug,可以忍受,不同步一旦发生,玩家的所有付出就都白费了,结果不能上传,得不到服务器的认可,还可能会被认为作弊。

刚开始接触帧同步的开发人员,可能觉得,中途加入,就把所有对象的状态(比如:位置)同步给另一端不就行了吗?那这里举几个比较简单的例子,说明一下中途加入的复杂:

上面只是举了几个物理相关的例子而已,还有很多其他的会导致不同步的问题,比如跟时间相关的状态等等,这里没有列举。

总之,帧同步的终极问题是中途加入。其他的问题都还好,中途加入会导致后期的每一个功能改动,都可能会带来整个版本的复查,其维护成本之高,可能会令很多团队承担不起。因为我们不能允许中途加入出现bug,一旦出现bug,就是致命的。所以,还是开篇的那句话:如果项目不需求中途加入,帧同步向你敞开大门,如果需求中途加入,请仔细评估玩法和开发之间的矛盾,选择一条更适合的道路。

上一篇下一篇

猜你喜欢

热点阅读