node.js - node.js 中的多人游戏架构 - 状态管理和与 Redux 的同步

标签 node.js architecture redux state multiplayer

我正在实现一个在线 TCG 游戏(想想炉石/万智牌)作为一个宠物项目,我决定为客户端 UI 使用 React/Redux。这让我想到了在服务器上使用 Redux 以及维护每个客户端/游戏的全局状态的可能性。

它的工作方式是,游戏中的玩家将事件(通过 socket.io)发送到服务器,服务器将根据游戏状态+规则进行验证,然后触发服务器状态的变化并传播它给各自的客户。

问题是,我觉得我将不得不经历很多困难才能让所有游戏规则/逻辑符合 Redux 的更实用/不可变的方法,而不是将我所有的游戏实体建模为类.此外,由于每个玩家对他们对手的信息有限(例如,您看不到其他玩家的牌),我必须有一些自定义逻辑来根据哪个玩家正在接收数据来过滤状态信息。

另一方面,我喜欢将集中式状态拆分到每个域的不同处理程序、可预测的数据流以及回归到先前状态的可能性的想法。此外,Redux 中的操作非常适合用于此类游戏的命令模式。

我是否应该只实现一个像状态管理器这样的自定义 Redux 而放弃不变性部分?对于这些情况,是否有更“可靠”的方法?

最佳答案

看看事件溯源。

来自 UI 的事件将影响不同的读取模型 - 这就是您正在谈论的情况。 您甚至可以为后端使用一些简单的事件溯源框架,因为主要逻辑是基于事件的。

我总是建议reimagined/resolve框架作为一个非常简单和紧凑的框架来理解示例中的 cqrs+es 主要概念。

关于node.js - node.js 中的多人游戏架构 - 状态管理和与 Redux 的同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44229563/

相关文章:

javascript - 模块构建失败: SyntaxError: Unexpected token ' in JSON at position 0

android - Expo Developer Tools 与 Expo CLI 断开连接

node.js - Express + MongoDB 的最佳 session 存储中间件

.net - 您是如何在自己的代码中使用 IContainer/ISite/IComponent 的?

.net - 我为什么要使用 Prism ?

server - 聊天应用后端架构?

redux - 无法正确处理来自 rxjs 的 ajax 错误

javascript - 语法错误 : Unexpected token: punc ())

reactjs - React Redux - 存储登录的用户详细信息

javascript - 在 Sails.js 中从 MongoDB 获取数据