0

这是关于最新的剑圣宝石 (https://github.com/maccman/juggernaut)

我正在考虑建筑,比如说,“点游戏”。这个元游戏非常简单:每个登录用户(订阅频道,就剑圣而言)都是 JS 画布上的一个随机颜色点。用户可以向任何方向移动他的点。而已。

Juggernaut 应该为连接的客户端传输和推送所有数据。

目前我将架构想象为:

1) 客户端将点的坐标和玩家的 id ([1, [10,299]]) 作为 ajax 推送到例如 Rails。

2) Rails 将这些数据推送到 Juggernaut

3) Juggernaut 将坐标推送回所有收听此频道的客户端。

Juggernaut.publish("coordinates_channel", [1, [10,299]])

问题:

1) 当我需要在 js 画布上逐像素移动“点”对象时,我需要发送太多 AJAX 请求。例如,如果我的点每秒移动 20 个像素,我需要每秒发送 20 个请求。不可接受。

2)我应该将 Juggernaut.publish 包装到异步循环中(例如使用 EventMachine)吗?因为,只需想象 1000 个客户(1000 个点,以及具有更新坐标的恒定数据流)......

或者,也许我使用 Juggernaut gem 弄错了客户端服务器?你觉得这个实现怎么样?

谢谢你。

4

1 回答 1

3

WebSockets/长轮询/其他彗星技术延迟低,你的游戏会滞后。我已经看到通过 websockets 实现实时游戏,它们要么滞后,要么游戏机制是特定的,比如让玩家移动非常慢以考虑低延迟。经典 AJAX 绝对是不可能的。

这里有一些关于改进滞后的资源
Valve Source Multiplayer Networking
Unreal Source Multiplayer Networking

于 2012-01-14T13:28:33.770 回答