当我读《网络多人游戏 架构与编程》时我在想什么

Posted Caiger

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当我读《网络多人游戏 架构与编程》时我在想什么相关的知识,希望对你有一定的参考价值。

写在前面

  • 这本书长这样

  • 书如其名,本书主要是介绍搭建网络游戏,不过并没有分析具体例子,书中代码也只为讲述某个知识点而列举片段。
  • 它不是“教你实现一个网络游戏”这种书,而是指导书。同样,对习惯“先实现再学理论”的读者而言,它不能算网络游戏入门书。

一些感想

  • 给还没看过的朋友写的阅读提醒
    • 本书的纸很厚,其实内容没有看起来那么多,被书的厚度吓到的读者可以松口气了。
    • 本书的排版可以更好(中文版和英文版的排版是一样的),一些我认为是小知识点的内容也算到正文里,其实可以单独框出来。
    • 务必配合英文版一起阅读,个别翻译读不顺。
    • 本书提供的代码不全,比如第5章所讲的框架代码就没有。
    • 不要指望本书可以解答脑中所有关于Socket、TCP、UDP的问题。
    • 建议在读本书前,读者至少做过一个网络游戏demo(至少网络同步部分能完全跑通),不然读书时纸上谈兵感太重。在做过网络游戏demo的基础上,可以乱序阅读本书第9到13章(最后一章)。

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

【中文标题】node.js 中的多人游戏架构 - 与 Redux 的状态管理和同步【英文标题】:Multiplayer game architecture in node.js - State management and synchronization with Redux 【发布时间】:2017-10-28 23:59:39 【问题描述】:

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

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

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

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

我应该只实现一个像状态管理器这样的自定义 Redux,但放弃不变性部分吗?对于这类情况,是否有更“经过验证”的方法?

【问题讨论】:

【参考方案1】:

看看事件溯源。

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

我总是建议reimagined/resolve 框架非常简单紧凑,可以理解示例中的 cqrs+es 主要概念。

【讨论】:

以上是关于当我读《网络多人游戏 架构与编程》时我在想什么的主要内容,如果未能解决你的问题,请参考以下文章

多人游戏的服务器架构? [关闭]

多人iOS游戏

多人在线游戏(MMO)|建筑|学习路径

《游戏编程模式》记录

多人在线游戏架构实战-基于C++的分布式游戏编程开篇

Source引擎多人模式网络同步模型