Zephus 发表于 2021-11-12 16:32

理论上游戏逻辑问题和同步机制之间应该没有任何关系

LiteralliJeff 发表于 2021-11-12 16:33

拜读了这篇文章,讲的确实很好。
快照这一块,我之前以为只有断线重连的功效,没想到还有Time warp的功能。
不过,感觉这个技术会出现频繁回滚,在一个5V5的游戏环境下,快照和回滚操作不知道消耗大不大,因为Lua的遍历实在是一言难尽(我们项目的所有战斗逻辑都在lua上)。

Ylisar 发表于 2021-11-12 16:38

这又回到逻辑和数据分离这个问题上了,其实可以把数据放在C++层,低消耗逻辑放在脚本层,高消耗逻辑在稳定后放到C++层

DungDaj 发表于 2021-11-12 16:38

嗯,我们策划表由于某些需要直接编写lua代码,策划表都是在存成lua格式的,整套东西下来确实不适合做成这样。并且逻辑和数据分离后,取数据,改数据啥的消耗也很大。战斗逻辑是没法放C++的,几乎每次更新都有改动。

Mecanim 发表于 2021-11-12 16:45

感觉作者并没有使用帧同步技术做过项目。

super1 发表于 2021-11-12 16:51

如果从未接触过帧同步,上手时不建议做回滚,尤其是非全局的回滚。

JamesB 发表于 2021-11-12 16:52

这篇文章是我亲身经历的将近三年Moba项目(闹闹天宫)的总结,可能在某些地方不够完善,但是使用的技术绝对是可行的,至少能保证项目成功上线。

TheLudGamer 发表于 2021-11-12 16:57

如果是多人团队的话,如何做局部的状态回滚呢?如何确定要回滚哪些局部状态呢?不同步率如何呢?是否整个开发周期都在持续的因编码不当出现不同步呢?

ChuanXin 发表于 2021-11-12 17:01

模块之间的关系是非常复杂的,某个模块因为预测执行,可能同时导致其它模块的状态变化。回滚模块时,也需要回滚所有因此模块而受影响的模块,最终可能接近全局回滚。局部回滚意义就很小了。

DomDomm 发表于 2021-11-12 17:07

不确定你所说的闹闹天宫有多庞大,如果是比较大一点的moba游戏,性能消耗可能很接近瓶颈,这种情况下做状态保存和回滚对性能的压力可能是致命的。当然可以通过一些方式缓解,如果是unity开发,可以把逻辑层放到c++并且子线程运行,但你说是用lua,那我对这个项目的大小有所怀疑。
页: 1 [2] 3
查看完整版本: Unity帧同步解决方案(一)