游戏服务器的剑圣宝石

Posted

技术标签:

【中文标题】游戏服务器的剑圣宝石【英文标题】:Juggernaut gem for game server 【发布时间】:2012-02-10 08:29:11 【问题描述】:

这是关于最新的剑圣宝石 (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 弄错了客户端服务器?你觉得这个实现怎么样?

谢谢。

【问题讨论】:

【参考方案1】:

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

这里有一些关于改善延迟的资源Valve Source Multiplayer NetworkingUnreal Source Multiplayer Networking

【讨论】:

谢谢。链接真的很有趣,几年前我也读过关于 Quake3 的文章。

以上是关于游戏服务器的剑圣宝石的主要内容,如果未能解决你的问题,请参考以下文章

魔幻宝石屋理财游戏app定制开发

谈谈宝石方块游戏中的设计

派派农场游戏开发 派派农场系统APP

宝石方块游戏中三消查找算法的原理和实现

如何同步在线解锁的宝石、硬币和关卡等游戏数据(统一平台)

求好玩的JAVA益智游戏。