0

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

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

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

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

我不知道从哪里开始调试这个。会不会是因为:

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

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

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

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

4

1 回答 1

1

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

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

于 2013-05-29T23:22:02.560 回答