【问题标题】:Fixing jittery movement in a multiplayer game?修复多人游戏中的抖动运动?
【发布时间】:2014-04-24 22:17:32
【问题描述】:

在过去的几个月里,我一直在编写一个 2d java 赛车游戏,最近完成了一个非常简单的多人游戏实现。这只是使用服务器-客户端系统,其中所有世界物理计算都在服务器上完成,然后中继到客户端。客户端不进行自己的计算,而只是从服务器呈现数据并将用户输入数据发送给服务器。我只在服务器端的对象实际移动时更新客户端持有的位置。当精灵以低速移动时,该系统工作得非常好 - 但是,在更高的速度下,它们看起来很紧张。该主题的标准Valve article 规定插值是一种使运动看起来更平滑的方法,但在我解决潜在问题之前,我想在误诊问题并使系统变得更加复杂之前要小心。让我对这个解决方案保持警惕的是,我每秒发送客户端更新消息 60 次,这足以使质量更高。是否还有其他具有类似症状的错误?感谢您的宝贵时间。

编辑: 如果这看起来很模糊,那是因为它应该是。我不是在特定情况下寻求帮助,而是让您调试我的代码并找出它为什么不起作用。除非我犯了一些可怕的错误,否则我认为我的代码完全按照所描述的系统执行了它应该做的事情。我要求就症状的原因以及我应该采取什么措施来解决这个问题提供基于理论经验的回应。

【问题讨论】:

  • 如果你要在服务器上做“所有”物理,我不确定你能避免这种情况。通常更容易在客户端进行物理处理(更流畅),让服务器验证并仅提供有关其他玩家的信息。
  • @dhruvchopra - 如果我有多个客户怎么办?他们都会模拟世界的一部分吗?您知道任何可以解释这一点的资源吗?

标签: java networking multiplayer


【解决方案1】:

我已经通过一个简单的修复解决了这个问题 - 我只以每秒 20 次的速度更新我的物理引擎,导致了所描述的延迟。将其提高到每秒 50 次即可解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-15
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多