我打算使用 websockets 在 node.js 上编写一个实时回合制策略游戏服务器。我将迎合具有良好 html5 支持的现代浏览器,并且不太关心向后兼容性。
所提供的游戏将由少数玩家(例如 2-10 人)一次玩/观察,并且将具有在国际象棋中使用的时钟计时器,并在 www.chess.com 上实现。定时游戏最多持续一个小时,还可以选择玩非定时游戏。
服务器将负责玩家的评分、玩家的好友列表,以及管理正在运行/已完成的游戏状态,以及运行游戏时钟。游戏状态只是一点点 json,每场游戏最多只有几千字节。
一个限制是所有实际的游戏逻辑都必须发生在客户端上,而不是我的服务器上。因此,我需要一种机制,如果客户端发出非法移动信号,无论是因为它或其对手出现故障/恶意,那么一个或多个不相关的客户端或客户端(即使用我的网站的其他人)将把游戏状态加载到他们的浏览器在后台,争议将在那里解决。
这大概总结了我的要求。
这不是一个玩具项目,我希望有很多用户,所以我想提前考虑后端架构和可扩展性。我一般对node.js或网站部署不是特别了解,所以任何关于架构、技术/库、可扩展性/代理/负载平衡、如何实现时钟和处理延迟问题的建议或见解,在哪里/如何存储游戏状态等,非常感谢。