我正在使用 LibGDX 和 Box2D 编写 Android 游戏。我计划为其添加回合制多人游戏功能。
现在,如果在两个客户端上我以相同的速率和相同的时间步长步进 Box2D 世界,并使用完全相同的初始参数在两个客户端上开始模拟,当模拟结束时,两个模拟的最终状态是否完全相同相同?换句话说,Box2D 模拟是否具有完美的确定性?
如果不是,则意味着每次模拟结束时,充当主机的一个客户端都必须告诉另一个客户端丢弃其最终模拟结果并使用它。
官方常见问题解答报价
官方常见问题解答有一个引用证实了您的推论http://web.archive.org/web/20160131050402/https://github.com/erincatto/Box2D/wiki/FAQ#is-box2d-确定性 http://web.archive.org/web/20160131050402/https://github.com/erincatto/Box2D/wiki/FAQ#is-box2d-deterministic:
Box2D 是确定性的吗?
对于相同的输入和相同的二进制文件,Box2D 将重现任何模拟。 Box2D 不使用任何随机数,也不基于随机事件(例如计时器等)进行任何计算。
然而,人们往往想要更严格的决定论。人们常常想知道 Box2D 是否可以在不同的二进制文件和不同的平台上产生相同的结果。答案是不。这个答案的原因与浮点数学在许多编译器和处理器中的实现方式有关。如果您好奇,我建议您阅读这篇文章:http://www.yosefk.com/blog/consistency-how-to-defeat-the- Purpose-of-ieee-floating-point.html http://www.yosefk.com/blog/consistency-how-to-defeat-the-purpose-of-ieee-floating-point.html
或者换句话说:固定大小的浮点类型 https://stackoverflow.com/questions/2524737/fixed-size-floating-point-types
维基百科为何被删除,我不知道。人类。我很高兴他把项目名称小写了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)