node.js - 关于使用 websockets 和 node.js 编写可扩展的实时回合制策略游戏的建议

标签 node.js websocket real-time

我打算编写一个实时回合制策略游戏服务器 使用 websockets 在 node.js 之上。我将迎合现代浏览器 具有良好的 html5 支持,并且不太关心向后兼容性。

每场比赛都将由少数玩家进行/观看 时间(比如说 2-10),并且会有一个时钟计时器,就像在国际象棋中使用的一样,并在 www.chess.com 上实现。 计时游戏最多持续一个小时,也可以选择玩不计时的游戏。

服务器会处理玩家的评分、玩家的好友列表、 以及管理正在运行/完成的游戏状态,以及运行游戏时钟。 游戏状态只是一些 json,每个最多几千字节 游戏。

一个约束是所有实际游戏逻辑必须发生在 客户端,而不是在我的服务器上。因此,我需要一种机制 如果客户发出非法行动的信号,无论是因为他还是他的对手 故障/恶意,然后是不相关的一个或多个客户(即其他人 使用我的网站)将游戏状态加载到他们的浏览器中 背景和争议将在那里解决。

这大概概括了我的要求。

这不是一个玩具项目,我希望有很多用户,所以我想考虑后端 架构和可扩展性。我对 node.js 不是特别了解 或一般的网站部署,因此任何关于架构的建议或见解, 技术/库、可伸缩性/代理/负载平衡、如何实现 时钟并处理延迟问题,在哪里/如何存储游戏状态等, 非常感激。

最佳答案

Node.js 及其流行的库在编写时就考虑到了可扩展性,因此……express、mongodb/redis、socket.io 等通用工具就可以了。

关于客户端逻辑:

an unrelated client or clients (i.e. somebody else using my site) will have the game state loaded up into their browser in the background and the dispute will be settled there.

node.js 的一大优点是它与浏览器中的 javascript 相同。 :) 这样您就可以在您的服务器中运行相同的代码 并在那里解决任何争议。

关于node.js - 关于使用 websockets 和 node.js 编写可扩展的实时回合制策略游戏的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10508728/

相关文章:

javascript - 如何确定如何导入模块

javascript - 无法与 Amber 或 NPM 建立 websocket 连接,不确定是哪一个

azure - IsWebSocketRequest 在 azure 中始终为 false

mysql - Sphinx 和实时索引与 mysql innodb 事务

linux - 带有 RT Linux(RT-PREEMPT 补丁)的 ZeroMQ 是实时的吗?

c - 导入 POSIX 函数时 undefined reference

javascript - node.js 如何打开/读取包含密码的 XLSX 文件

node.js - Mongoose :无法在 `_id` 上为模型名称 "SchemaName"指定自定义索引,MongoDB 不允许覆盖默认的 `_id` 索引

javascript - 如何让 2 个独立的 onmessage 事件处理程序同时运行?

javascript - 如何与多个客户端实时共享表单输入值?