我觉得可以这样子实现
用户本地算一个box2d k关键帧然后客户端先行 (预判)
等服务器运算好返回后再把播到的那一帧回滚的位置一样
这样子就算蝴蝶效应也很低
那么问题来了,以谁的box2d结果为准?
如果以某个玩家那肯定很多问题,只能以服务器为准。
那服务器就得也有一套box2d的逻辑。
所以既然服务器已经有一套box2d并同步位置了,那客户端的box2d就可有可无了。
要说预判也不是说不行,不过个人感觉,网速好的情况其实帧率够高,是否预判不重要,网络差的情况,预判其实也就是变成不断回滚而已。
服务器为准
因为台球和其他游戏不一样 服务器算好之后中间就不会变动了 。你想下台球是不是回合制游戏?
很多强同步游戏都介绍过它们的回滚逻辑
不早说台球,台球这么简单的物理根本不需要box2d,也就反弹,自己实现根本没有蝴蝶效应的问题了。
自己实现反射角度好算 但是怎么算一个刚体同时打中两个刚体的反射?
哪有什么同时,按顺序分别算矢量合成就可以了,结果是一样的,不过可能需要多次迭代,没记错的话box2d有个参数控制迭代次数
不过有个问题,我还没查过不同js引擎的浮点数实现基准是不是一致的,不一致的话其实自己算也不靠谱。
只能两个方法:1.服务器版本,2.用跨平台标准化的计算方法。
对 但是客户给了个案例 客户端先行的。(几乎没延迟)
我怀疑就是我的方案
但是一帧里一个球接触两个球确实是有可能的
我知道会同时接触两个,我的意思是你先后计算,不影响最终结果。