【问题标题】:Questions about updating my node.js game关于更新我的 node.js 游戏的问题
【发布时间】:2012-04-12 12:26:15
【问题描述】:

我正在使用 node.js 为服务器制作一个小游戏,并为客户端使用一个嵌入 HTML5 画布中的 .js 文件。每个玩家都拥有和对象,他们可以使用箭头键四处移动。

现在我做了两种不同的游戏更新方式,一种是在每次玩家改变时发送玩家的新位置。它有效,但我的服务器必须每秒处理大约 60 个 x/y 对(客户端的更新速率为 30/秒,并且有 2 个玩家不停地移动)。 第二种方法是仅在玩家对象改变方向速度时发送新的位置和速度/方向,因此基本上在其他客户端上,玩家的移动使用上次更新的方向/速度进行插值。我的服务器只需要处理很少的 x/y7speed/direction 数据包,但是当数据包到达时,我的客户端经历了一点延迟,因为插值位置通常与数据包中写入的实际位置有一点距离。

现在我的问题是:您会推荐哪种方法?我应该如何对这两种方法进行延迟补偿?

【问题讨论】:

    标签: node.js multiplayer lag


    【解决方案1】:

    如果您的延迟较低,请从绘制对象的位置向上插入新位置。在低延迟情况下,它并没有太大的区别。

    如果你有高延迟,你可以实现一种 EPIC。 http://www.mindcontrol.org/~hplus/epic/

    您还可以在 Browser-Quest 中查看它是如何完成的。 https://github.com/mozilla/BrowserQuest

    祝你好运!

    【讨论】:

    • 这篇文章似乎是解决问题的一个很好的起点,但我仍然没有从解决方案中理解一件事:))
    • @mihai 如果你懂 C++,EPIC 库的来源一目了然。只有两个带有 cmets 的文件(Extrapolator.h 和 Extrapolator.cpp) 如果您不熟悉 C++,我可以努力解释或实现它。
    • 不,没关系。我没有看源代码,只是看了你指出的那篇文章。该算法的描述很短,我很难理解它,但我相信它是有道理的。
    • 感谢您的建议,我现在正在研究 EPIC 的东西,它可能会派上用场。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 2011-06-18
    • 1970-01-01
    相关资源
    最近更新 更多