【问题标题】:Multiplayer physics realtime game多人物理实时游戏
【发布时间】:2012-10-10 21:54:08
【问题描述】:

我正在创建 iOS(iPhone) 足球风格的游戏(使用 cocos2d 和 box2D),其中有两名球员实时比赛和一个球。 我在同步问题上苦苦挣扎了很长时间,但还是不够顺畅。

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

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

【问题讨论】:

    标签: networking cocos2d-iphone box2d multiplayer


    【解决方案1】:

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

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

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

    【讨论】:

    • 如何在服务器上模拟游戏和物理世界?
    猜你喜欢
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2012-07-11
    • 2012-01-09
    • 1970-01-01
    • 2016-06-24
    相关资源
    最近更新 更多