【发布时间】:2017-10-28 23:59:39
【问题描述】:
我正在实现一个在线 TCG 游戏(想想炉石传说/万智牌)作为一个宠物项目,我决定为客户端 UI 使用 React/Redux。这让我想到了在服务器上使用 Redux 来维护每个客户端/游戏的全局状态的可能性。
它的工作方式是,游戏中的玩家将(通过 socket.io)发送事件到服务器,该事件将根据游戏状态+规则进行验证,然后会触发服务器状态的更改并传播它给各自的客户。
问题是,我觉得我必须跳很多圈才能让所有游戏规则/逻辑符合 Redux 更具功能性/不可变性的方法,而不是将我的所有游戏实体建模为类.此外,由于每个玩家对他们的对手的信息有限(例如,你看不到其他玩家的手牌),我必须有一些自定义逻辑来根据接收数据的玩家过滤状态信息。
另一方面,我喜欢将集中状态拆分到每个域的不同处理程序、可预测的数据流以及回归到先前状态的可能性的想法。 Redux 中的动作也很适合这些游戏的命令模式。
我应该只实现一个像状态管理器这样的自定义 Redux,但放弃不变性部分吗?对于这类情况,是否有更“经过验证”的方法?
【问题讨论】:
标签: node.js architecture redux state multiplayer