告诉子弹过去发生了一些事情

Telling Bullet That Something Happened In The Past

提问人:KKlouzal 提问时间:7/19/2014 更新时间:7/19/2014 访问量:237

问:

是否有可能告诉子弹过去发生了一些事情,以便它可以获取这些信息并调整内部插值以显示现在的这种变化? 永远不需要回到超过 1-5 秒的时间,5 是非常罕见的情况,更现实地说,1.5 到 2.5 秒之间是大部分变化发生的地方。

还需要查询对象在过去特定时间的位置、旋转和速度的能力,但这很容易实现。

所有这一切背后的原因是为了促进两个物理模拟的更容易同步,特别是在网络环境中。

持续实时运行模拟的服务器将定期向客户端模拟发送位置、旋转和速度更新。由于网络延迟,从客户端模拟的角度来看,这些更新将“过去”到达客户端,因此需要查询过去更新的对象值以查看它们是否不同,如果它们不同,则还需要更改过去的这些值。在下一个模拟步骤中,项目符号将考虑这些过去的更改,并相应地更新对象。

这种能力是否存在于子弹中,还是需要以某种方式模仿?如果需要仿真,有人可以为我指出正确的方向来开始使用这个“倒带和重播”功能吗?

如果您不熟悉“倒带和重放”,本文将非常详细地介绍实现背后的理论,供可能正在创建自己的物理库的人使用。http://gafferongames.com/game-physics/n......D-物理/

C++ 网络编程 同步 BulletPhysics 时间管理

评论

1赞 Nico Heidtke 9/12/2014
它没有开箱即用的 Bullet,但您当然可以自己做。只需存储先前步骤甚至每个客户端的模拟状态。如果像你所说的那样,关于“过去”的新信息到来,只需将旧状态加载到模拟中,然后再次将其推进到现在,即可获得新的结果。

答: 暂无答案