基于回合制的多人物理网络

ash*_*ash 5 networking physics multiplayer box2d

我目前正处于移动设备2D游戏的规划阶段,我将使用cocos2d-x在C++中制作.游戏将基于回合,并且每个回合将具有进行物理模拟的阶段.它也将是跨平台的.

我是多人网络的新手,我想知道同步物理的最佳方法是什么,因为Box2d在不同设备上的行为并不完全相同.

模拟不必同时在每个设备上进行,但我确实需要结果完全相同.理想情况下,玩家将能够在他们自己的设备上见证相同的物理模拟(即射弹运动,弹跳,碰撞)以及在他们决定开始轮到他们的对手时发生的结果.

最好的方法是什么?根据我的研究,我提出了几个解决方案.我应该编写一些服务器代码,我将在其上接受用户输入并处理所有物理模拟,然后将结果发送到每个设备?或者有没有办法在一台设备上处理模拟并将所有信息发送给另一台设备?

另外,为什么一个人通过网络发送模拟过程中发生的一切,因为我无法在每个设备上运行模拟并保证得到相同的结果?我是否只需要使用每隔几个TimeSteps发生的信息更新服务器(或设备)?

我还会考虑实现自己的物理/碰撞检测.

Bet*_*eta 1

如果不同的设备无法运行模拟并获得相同的结果,那就不行了。您必须在一处运行模拟并分发结果。

在其中一台设备上还是在单独的服务器上?在单独的服务器上实现 sim 会容易得多吗?如果是这样,那就去做吧;如果没有,那么就没有理由使用额外的机器。

您建议的更新方案是一个很好的起点。它不需要涉及回合期间发生的所有事情,只需涉及显示例程向用户显示动作所需的内容。从较小的时间间隔(这意味着大量数据)开始,然后将其增大,直到视觉效果开始受到影响。