在今年的过程中,我几乎只写了关于区块链游戏的文章。在我关于该主题的最初博客中,我建议以一种相当单一的方式将“一切”放在链上。这篇文章发表将近一年后。在过去的 12 个月里,我意识到我对这种方法的扩展性过于乐观。
从我写的内容可以看出,我正在掌握一种将区块链网络的功能与游戏逻辑的功能分开的方法:
“交易将被发送到保存当前游戏状态和所有先前历史记录的收集者节点(参见完整节点)。由于外部包含的动作可能很复杂,整理者可能应该只对动作进行验证,而不是计算动作的完整重放。”
目标是对玩家行为进行去中心化验证。这不一定都必须在第L1(在链上)完成。事实证明,将游戏逻辑从区块链的功能中分离出来是可能的
在这篇博客中,我将概述区块链游戏的各种方法,并评论它们的优缺点。
存在的主要 3 种架构是:
- 去中心化单体
- 混合(集中式和去中心化式)
- 去中心化分层
第三种架构似乎是保持去中心化同时允许可扩展性的最明智的方法。我实际上是从Xaya团队那里了解到这种架构的。
去中心化技术栈
为了帮助构建讨论框架,我将把不同的组件称为技术堆栈中的层。已经关注区块链空间的人应该熟悉标签。

Web 3.0 技术栈
这张图比我们需要的要复杂一些,但它可能有助于构建我的博客。区块链位于该图的L1。
理解不同架构的最佳方式是通过示例。
Monolithic
在这种架构中,游戏逻辑的处理完全在区块链客户端软件内部完成。所有动作都存储在链上,因此此类游戏是完全去中心化的。用户界面 (UI),基本上是游戏客户端,有点多余,因为它所做的只是渲染链上记录的内容。
游戏客户端将玩家的动作(动作)发送到链上,但底层机制在链的逻辑中是固定的,因此每个人都会同意。用户界面本质上只是一个钱包。
在这种架构中,游戏客户端(和 UI)很薄,而区块链很厚(相对于 UI)。我认为这是比较去中心化游戏架构的一个关键特征。
对于像扑克或国际象棋这样的简单游戏,它们非常简单,网络中的每个区块链客户端都可以处理所有操作。

Decentralized Montholithic:所有游戏逻辑都在L1处理
简单游戏(例如扑克)
可以将扑克之类的游戏编码到区块链的核心逻辑中,这样整个网络就专用于玩扑克。所谓的 DApp 链。
玩家仍然需要一个游戏客户端来查看他们拥有的牌并解释其他玩家的动作。这可能纯粹基于命令行,但简单的图形界面会提供更好的体验。
据推测,最初的比特币客户端中包含一个扑克版本,但根据建议将其删除。
Huntercoin
本质上,第一个区块链游戏是 Huntercoin。所有的游戏逻辑都直接编码到链中。所有代码也是开源的。
有人可以编写 UI 的修改版本并调整颜色或其他任何内容,但它无法以不利的方式修改游戏玩法,因为所有逻辑都在链上。
Huntercoin 背后的团队现在以Xaya的名义工作。它们在下面的去中心化分层部分中提到。
CryptoKitties
CryptoKitties 的大部分游戏逻辑都是在以太坊上的智能合约中完成的(仍在L1在链上处理)。托管在非专用链上不会影响架构类型。

完全在智能合约中的游戏仍然可以是单一的。
从我读到的内容来看,游戏数据的某些处理似乎是在链下完成的,因此 CryptoKitties 在技术上是集中式和分散式的混合体。然而,可以想象游戏可以完全去中心化。支持 Shawn Tabrizi 在他的Substrate Kitties工作室中做这件事。
除了对某些数据进行链下处理之外,让人们对这款游戏感到兴奋的最重要的一点是可爱的图形。虽然区块链端的架构很厚,但感知价值是可爱的猫,但它们是在集中式UI 中呈现的。对我来说,这对于区块链游戏来说还不够好。

来自 CryptoKitties 的可爱猫咪
Hybrid
单体架构的最大问题是它们不能很好地扩展。我过于乐观地认为下一代区块链能够将大量复杂的游戏逻辑直接放入 dappchain 中。
一种解决方案是仅将游戏资产放在区块链上,但将所有游戏逻辑保持在链下。由于游戏逻辑永远不会在链上,它可以随心所欲地复杂,不必太担心可扩展性。

混合架构:链下游戏客户端和 UI 与区块链的耦合度最低
这里的争论是这些游戏很可能是封闭源代码并且完全集中的。即使代码是开源的并且可以在任何地方运行,仍然存在逻辑基本上与区块链分离的问题。玩家的行为不存储在链上,因此无法以去中心化的方式进行验证(玩家验证其他玩家的行为)。
为什么会考虑这种架构?原因之一,开发商希望允许玩家自由交易物品给其他玩家。虽然这在集中式游戏中显然是可能的,但此类物品的所有权从来都不是玩家的。如果资产在区块链上(例如作为不可替代的代币,又名 NFT),那么可以争辩说资产真正由玩家拥有。
目前,这似乎是区块链游戏最常见的架构。
Enjin驱动的游戏
Enjin 可能是区块链游戏领域最知名的项目(仅次于 CryptoKitties),它提供了一种将游戏资产放到以太坊上的方法。游戏资产将是存储在智能合约中的 NFT,但是,如本节开篇所述,游戏逻辑并未以去中心化方式进行验证。

我看到 Enjin 为 Unity 创建了一个API,这意味着基本上任何 Unity 游戏都可以尝试将他们的资产放到以太坊上。
从理论上讲,游戏开发人员可以使用 Unity 创建一个开源的去中心化游戏,并将资产放在以太坊上。当资产在以太坊上时,这些动作可能会存储在另一个链上。这听起来很乱,但它应该是可能的。也就是说,有人可以创建一个专用的“Enjin”链,只需要了解他们的 API,从而制作出适合第三种架构的东西(稍后描述)。
Hoard-powered游戏
该团队采用与 Enjin 相当相似的方法,但他们更喜欢支持利用 Plasma(特别是被称为“Minimum Viable Plasma”的风格)的游戏。Hoard 还创建了一个 Unity API,可在GitHub上找到。

在他们的 Discord 房间中,一位开发人员描述了他们的 SDK 如下:
“总的来说,我们的 API 只是一个桥梁,用于方便地从以太坊区块链检索项目及其状态/属性。当然,Plasma 也有类似的供应商。请注意,目前 Plasma 仅支持 ERC20,但我们正在努力支持 NFT。”
分层
在此架构中,链存储所有玩家操作,但区块链客户端软件不解释这些操作,因此不解释其含义的有效性。这意味着该链可以是极简且快速的:它处理“交易”(提交和记录动作)。理论上,可以将更多数据放在链上,但这是另一个博客的想法。
游戏客户端必须从存储在玩家本地计算机上的链中读取数据,以验证所有玩家的行为:即玩家可以验证其他所有玩家的行为。

去中心化分层。这次 UI 必须读取链上数据才能运行。
由于链条很薄而游戏客户端很厚,因此存在复杂游戏的空间。这种架构类似于混合风格,只是 UI 与区块链的耦合更紧密:它必须读取链上数据才能处理游戏中发生的事情。
有趣的是,在 UI 层仍然有一些选择的独立性。可以有多个游戏客户端,只要他们以相同的方式解释链上数据即可。您可以想象游戏客户端也可以是闭源的,但这会破坏信任模型。
在我之前的博客中,我注意到这种架构会带来一些进入障碍,并且需要权衡去中心化和便利性。
Xaya
Huntercoin 背后的团队已经发展了继承人的游戏方法,不再做单片链。他们的链是 Namecoin 的修改版本。虽然链条将所有玩家操作存储在他们的注册名称旁边,但它是轻量级的,因为它不验证玩家操作。游戏客户端是验证所有玩家行为的地方:每个玩家验证其他所有玩家的行为。
该团队目前正在构建许多去中心化游戏,包括 Taurion、Soccer Manager Elite 和 Xaya Ships。
如前所述,完全去中心化的复杂游戏会增加玩家的设置工作量。这可以通过提供在本地运行瘦游戏客户端的选择来解决。

该团队还致力于实时 1 对 1 遭遇战的游戏频道技术,这在 XayaShips 游戏中得到了展示。
Planetarium
Planetarium 团队使用的架构与 Xaya 使用的架构相似。他们的第一款游戏,九编年史,是一个去中心化的 MMO,并且在我之前的一篇博客中有介绍。

如果我正确理解了他们的文档,那么也可以使用这种分层架构,其中链最少并且只存储操作。
结束语……
这里的图表是简化的,但我认为它们很好地说明了这个想法,足以从架构的角度解释不同的区块链游戏是如何工作的。
我很自然地被完全去中心化的解决方案所吸引。就个人而言,我认为游戏链可以像 Xaya 这样的用例进行定制。我认为将移动存储在链上以及将游戏资产直接存储在链上是有意义的。任何有价值的东西都应该真正存储在区块链上,在那里它可以按照所有者的意愿进行交易或保存。
去中心化游戏是“什么”,架构是“如何”,而真正的所有权和防止作弊是“为什么”。
参考链接:https://edward-thomson.medium.com/the-thick-and-thin-of-blockhain-gaming-architectures-a51795156420