0

我正在创建 iOS(iPhone) 足球风格的游戏(使用 cocos2d 和 box2D),两个玩家实时玩一个球。我在同步方面苦苦挣扎了很长时间,只是无法让它足够流畅。

好的,所以我决定使用客户端/服务器模型 - 一个被选为主机(服务器),另一个是客户端。服务器和客户端必须保持物理运行。客户端只“镜像”服务器的物理特性。结果是我们在服务器上获得了流畅的游戏,而在客户端获得了真正的非物理游戏 -> 假设:在快速击球后,球被计算为上升,但在下一次更新时服务器仍然认为球应该下去。我使用时钟同步,所以我可以在客户端正确同步位置和速度。我知道我不能将客户端预测用于击球等物理事件。而且我仍然希望两边都有物理,这样我就可以正确地检测到碰撞。

如果有人分享他在这个问题上的经验,我将不胜感激。

4

1 回答 1

3

需要通过网络同步的游戏对象中的物理是一个非常具有挑战性的问题。最好避免它。

大多数应对这一挑战的游戏将在服务器上模拟游戏和物理世界,并让客户端预测运动。是的,即使对于物理对象,通常只需运行物理模拟(没有碰撞,或至少没有“阻塞”碰撞),直到服务器发送游戏和物理世界的更新状态。

当然,您与服务器的连接速度越快,您的游戏体验就越流畅。如果您的设备正在运行服务器,那么您将始终比其他玩家拥有优势,除非您为服务器玩家引入人为延迟并执行相同的预测。这也意味着运行两个物理世界并在“服务器设备”上进行更新,一次用于实际游戏状态,另一次用于预测的客户端世界视图。

于 2012-10-10T22:22:01.753 回答