我正在实施一个在线TCG游戏(想想Hearthstone / Magic)作为宠物项目,我决定将React / Redux用于客户端UI.这让我想到了在服务器上使用Redux以及维护每个客户端/游戏的全局状态的可能性. 它的工作
它的工作方式是,游戏中的玩家会将事件(通过socket.io)发送到服务器,该服务器将根据游戏状态规则进行验证,然后触发服务器状态的更改并将其传播到相应的客户端.
问题是,我觉得我必须跳过很多环节才能让所有游戏规则/逻辑符合Redux的功能/不可变方法,而不是将我的所有游戏实体建模为类.此外,由于每个玩家的对手信息有限(例如你无法看到其他玩家的手),我必须有一些自定义逻辑来过滤状态信息,具体取决于哪个玩家正在接收数据.
另一方面,我喜欢为每个域分配不同处理程序的集中状态,可预测的数据流以及回归到先前状态的可能性.此外,Redux中的操作完全符合命令模式,这对于这些类型的游戏非常有用.
我应该只实现一个像状态管理器这样的自定义Redux,但是放弃了不变性部分吗?对于这些情况,是否有更“尝试和真实”的方法?
看看事件采购.来自UI的事件将影响不同的读取模型 – 您正在谈论的情况.
您甚至可以为后端使用一些简单的事件源框架,因为主要逻辑基于事件.
我总是建议将reimagined/resolve框架作为非常简单和紧凑的框架来理解示例中的cqrs es主要概念.