我正在使用LibGDX和Box2D编写Android游戏.我打算为它添加一个回合制多人游戏功能.
现在,如果在两个客户端上,我以相同的速率以相同的时间步进Box2D世界,我在具有完全相同的初始参数的两个客户端上开始模拟,当模拟结束时,两个模拟的最终状态将是相同?换句话说,Box2D模拟是完全确定的吗?
如果不是,则表示每次模拟结束时,作为主机的一个客户端必须告诉对方丢弃其最终模拟的结果并使用它.
解决方法:
环顾四周后,答案是“否”,即使使用相同的时间步骤!这个答案的原因与许多编译器和处理器中如何实现浮点数学有关.每个周期的小差异加起来导致显着不同的模拟.