【问题标题】:My game in Meteor is sometimes laggy, sometimes not我在 Meteor 中的游戏有时卡顿,有时不卡顿
【发布时间】:2013-05-30 07:22:02
【问题描述】:

我在 Meteor 中做了一个简单的射击游戏。我对 Javascript 还是很陌生,所以我很确定我的代码不是最有效的。

无论如何,在 localhost 上一切正常(当然),而且在我部署时大部分情况下似乎还可以。但是,有时会出现大量延迟,并且客户端最多无法赶上 30 秒。画布在客户端每 10 毫秒更新一次,在服务器上每 100 毫秒更新一次。

这是游戏: http://yujiangtham.com/jfleet/

来源: https://github.com/ytham/jfleet

我不确定从哪里开始调试。可能是因为:

a) Mongodb 不是为这么多快速读/写而构建的吗?

b) 某处某处出现滞后并导致某种级联滞后?

c) 在画布上更新这么多 HTML 元素会导致客户端延迟?

老实说,我很困惑。任何指向正确方向的指针都会很棒。谢谢!

【问题讨论】:

  • 另外,澄清一下...游戏使用 Meteor,因此它可以同时支持页面上尽可能多的玩家合作玩,因此据我了解,一切都需要数据库写入,以便状态游戏实时同步到所有玩家。让我知道是否有更好的方法来做到这一点。
  • 在提问之前挖掘你的问题并为每个问题提出一个问题。
  • @vinipsmaker 这不是 3 个单独的问题。我正在寻求从哪里开始挖掘的帮助。谢谢。
  • 对于这三种技术,我只对MongoDB有足够的经验。您可以使用MongoDB utilities 了解您的应用程序的性能。您可以创建indexes 以提高性能,并创建shard 将工作分配给多个服务器。
  • @vinipsmaker 太好了,谢谢。这实际上很有帮助并给了我一些想法!

标签: javascript mongodb meteor


【解决方案1】:

所以,我和一个以前经历过一些事情的朋友交谈。基本上,解决这个问题的方法是不要经常写入数据库。它无法在这么短的时间内处理这么多的写入。

基本上,他告诉我这样做的方式是让客户端和服务器分别计算所有运动向量。从那里,客户端和服务器都应该预测每个精灵应该在哪里,然后让它们每 200 毫秒左右比较一次。任何差异都应由服务器覆盖并写入数据库。然后将该数据发送回客户端并覆盖任何差异。我还没有真正实现它,因为它需要一些花哨的数学,但希望我能尽快解决它......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多