我打算编写一个实时回合制策略游戏服务器 使用 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/