全链上游戏 ③ :意志的传承之 MUD & Dojo

VanishK
2023-07-06 16:38
发布于 Mirror

感谢所有为本文提供建议与反馈的朋友,尤其感谢 Taylor 提供的许多独到的见解,十分受用。还有许多文中未能提及,但十分优秀的项目,将在未来的文章中进行覆盖。向所有为全链上游戏/自治世界理念贡献的小伙伴致敬。

全文 14,197 字,预计阅读 28 分钟

作者:Kaspar Chen @Mask Network

一、什么是全链上游戏的“引擎”?

1.1 游戏引擎

就如同汽车的发动机引擎是一辆车的动力来源,其控制着一切相关的模块如喷油、点火、进气等等,并且连通着油箱、驱动轴等组件,车厂造车时,围绕着同一个引擎,就能够制造出各种不同型号的车,而无需做大量重复的工作。

游戏引擎本质上就是一套按模块封装好的代码库和工具,游戏开发者只需要调用引擎中不同部分的接口,即可完成图形渲染、物理模拟、网络通信等任务,而无需再去进行相对底层和低级的编程,从而节省大量的时间,使之能够更好的专注于游戏设计和内容的创作。在商业游戏引擎领域,最常见的便是 Unity 和 Unreal。

1.2 全链上游戏引擎

随着玩家对游戏质量要求的提高和硬件设备性能的提升,目前 3D 游戏引擎的架构已经变得极其复杂,通常会包括模型编辑器、声音处理、光线渲染、物理模拟等等,重点往往会在画质的呈现,因为这类工作往往繁重,但对游戏的呈现又起到了至关重要的作用。

而全链上游戏则不太一样,目前全链上游戏的发展仍然非常的早期,开发者们普遍遇到的问题还是智能合约的部署和更新、不同合约间的可互操作性、客户端的同步模式等等涉及与底层区块链交互的问题

因此,虽然全链上游戏的引擎同样是一套封装好的解决方案,但所聚焦的问题更多的是如何处理状态同步、如何在区块链环境下进行高效的内容增加和维护、如何更便捷的与其他合约做交互等等,以此来帮助开发者专注于游戏的部分,不需要过多的考虑如何兼容区块链,甚至从而降低 Solidity 的学习成本。

目前的全链上游戏引擎基本不涉及物理模拟、画面渲染等功能。

二、都在说的 ECS 是个什么?

当我们开始尝试了解全链上游戏引擎时,会发现经常出现一个叫 ECS 的名词,作为目前两大拿的出手的引擎 MUD 和 DOJO 都采用的架构,ECS 又是什么?

2.1 Enity-Component-System Framework(实体-组件-系统框架)

ECS 其实是一个在传统游戏行业中非常经典的框架,它是建立在通用引擎之上的一层,用于解决游戏对象之间的关系、交互和操作更新的一套模型。

其最早被 Scott Bilas 在 2002 年的 GDC 上提出,并运用在了当时开发的 ARPG 游戏《地牢围攻》中。由于其非常不错的性能表现,使其很快便得到的大量的关注,在后续的几年间,ECS 又衍生出了几个不同的变体,比较主流的则是 Adam Martin 于 2007 年在其 个人博客 中提出的对 ECS 的定义,基本成为了后续主流 3A 游戏所采用的框架。

随后在2015 年,苹果推出了其用于跨平台OS系统的游戏开发API框架 GameplayKit,在其中也包含了对 ECS 的实现。 而让游戏界更进一步接纳这种框架的,是《守望先锋》采用了该框架,并于 2017 年 GDC 上对其使用 ECS 框架的架构设计进行了演讲。在之后的 2018 年,头部游戏引擎 Unity 也正式推出了自己的 ECS 标准。

2.2 ECS 是什么呢

在 ECS 之前,游戏行业普遍采用的是 OOP(面向对象编程)的处理方式,即在 Class 类下面包含各种 Game Objects 游戏对象来继承 Class类的属性功能,从而建立整个数据架构。这种模式普遍存在几个严重的问题:

  1. 游戏对象间的关系,往往得在一开始就设定好 (这几乎不可能),否则当新类型对象出现,需要多个老类的功能时,往往很难进行继承;

  2. 随着游戏内容的增加,类会越来越多,维护起来十分麻烦;

  3. 对于引擎而言,模块非常多,而很多模块间并不相关,比如渲染并不关心网络连接,当所有属性都放到一个对象里的时候,性能必然会下降。

而 ECS 则换了一种思路,将所有的属性全部拆分成一个个的 Component 组件,例如血量、位置、元素属性等等;而 Entity 实体则仅仅是一串数据标识,用来标识某个特定的组件集,因此“玩家”这个标识背后对应的,则是 {"HP", "MP" ...} 等组件的集合,Entity 与 Component 都不存在运算逻辑,全部交由 System 系统来完成,比如运动系统来处理实体的移动部分、伤害系统来处理战斗的数值结算部分...

这里稍微借 Boreal Games 一篇文章中的例子来对比,假如现在要开发一个巨简单的,只包含石头、树木、敌人和玩家 4 种元素的游戏,传统的 OOP 实现是:

OOP 实现

而采用 ECS 的实现:

ECS 实现

由此可以看出,ECS 是一种非常模块化的数据管理框架,这种 ‘实体’ 的设计让游戏设计师不再需要每次都依赖程序员来调整游戏逻辑、各个实体间的关系可以更容易的做后续调整。

同时,在某种程度上,以太坊的网络也是类似的设计,如果我们将 Entity 变成 EOA,Component 变成 Asset,System 变成 Contract,会发现每个 EOA 下面有不同的 Assets,Assets 的交互又是在调用 Contract;这和 Entity 下有不同的 Components,Components 的交互又是在调用不同的 Systems 有着异曲同工之处。

当然,两者的设计肯定不能完全画等号,但也得以见得这种框架在以智能合约为功能集的环境中具有不错的适配性,这或许也是为数不多的全链上引擎基本都采用 ECS 框架的原因,而其中最为知名的必然就是 Mud 和 Dojo 了

三、MUD

3.1 MUD 背景

MUD 最早对外亮相是在 2022 年 4 月份 阿姆斯特丹的 DEFCON 随后由 Lattice 工作室于 2022 年 11 月 22 日在官方博客中正式发布。

3.1.1 以太坊纯血

这里非常有必要介绍一下 Lattice 的背景,Lattice 是 0xPARC 子项目中的一个,也是非常重要的一环,0xPARC 最早是由全链上游戏鼻祖 Dark Forest 团队与其他几个项目共同组建的组织,其愿景是支持与帮助加密技术在应用层的创新,同时也是以太坊生态中另一个积极推动 zk 技术发展与普及的组织(还有一个是 PSE),受到包括 以太坊基金会 EFGitcoin 等的多个组织的直接捐赠。

而 0xPARC 在 Dark Forest 中放的精力已经基本为零(弃疗状态),Lattice 作为 Autonomous Worlds 的提出者(距作者所知),某种程度上算是继承了 Dark Forest 在该领域探索的意志,同时,游戏作为应用层中非常重要且兼容性极高的一个部分,也十分适合用做技术创新的载体。

所以仅仅是从血统上和其战略地位上来看,MUD 之于现在的全链上游戏,就如同 2 年前的 Dark Forest 之于当年的全链上游戏,甚至有过之而无不及,都是绝对绕不开的山

3.1.2 补齐基建的拼图

稍微扯远了点,回到 MUD 的起源,Ludens 团队早在 2021 年 5 月便开始尝试开发全链上游戏(最早是一个叫 Amber 的 JRPG 游戏,可以说是 SkyStrife 的早期原型),但在此过程中发现,现有的 Dapp 结构和 DeFi 的代码库难用到离谱,简单来说就是,可能用起来的体验还远远不如在传统游戏里使用 OOP,于是不得已在这个过程中手动优化了不少已有的代码库,同时添加了针对于游戏场景的新的规则和实体。

但一直这么改下去也不是个事儿,回顾传统游戏的发展可以看到,游戏引擎作为基础建设起到了一个很强的杠杆作用,其允许创作者以更低的成本投入,来撬动更大的创意实现,进而推动游戏产业进入了一个高速蓬勃的发展期。而区块链作为一个全新的创作环境,显然还未出现一个相对成熟的工具,甚至在整个 EVM 生态中都尚未有一个能拿的出手的 Framework,因此 Lattice 决定,不如由自己来打造这一块重要的拼图。

于是,团队从 2022 年 4 月份开始着手 MUD 项目,旨在构建一个能输出对链上和客户端都相对且通用高效的数据结构,并能处理两种环境间的接口的底层基础设施。

MUD 版图

3.2 MUD V1

MUD V1 基本是围绕着 ECS 框架所展开的,主要针对的是在开发全链上游戏时,三个最为关键的问题,合约与客户端的状态同步、内容的持续更新、以及与其他合约间的可互操作性。那这三个问题是如何解决的呢?

MUD 当中有一个很重要的设定是 World 世界合约,可以简单理解为一个游戏的总服务器,每个游戏/项目都可以部署自己的世界合约;而其中每个 Component 组件都是一个新的合约,并且在部署时会注册到 World 世界合约下

每当组件进行了操作,状态都会在世界合约中进行更新,而因为有 Entity 实体标识的存在,只需要保证客户端上的实体标识与链上标识对应,即可在仅监听世界合约事件的情况下,完成状态同步,而监听部分的工作也将由 MUD 提供的 Indexer 来完成,开发者无需再重新编写代码。通过这种世界合约的设定,MUD很好的解决了端链同步的问题。

同时,ECS 框架本质上是一种将数据(组件)与逻辑(系统)解耦的模型,在这种模型也很好的保证了后续内容更新或逻辑发生变化时,无需再进行大规模的合约重新部署从而导致数据丢失。例如,当某个资源的供给的速率需要从 10/分钟 变成 50/分钟 时,进需要更新并重新部署对应的 System 系统合约即可,由于系统不储存数据,因此将不再需要对原本的数据状态进行迁徙,确保了内容持续更新的效率。

针对可互操作性的问题,实际上所有链上的合约理论上都可互操作,问题出现在接口的通用性, 而 MUD 通过一个标准化的数据结构,以及数据与逻辑解耦的框架,相当于提供了一个通用的接口,任何人都可以轻易的读取任何世界合约中的任意组件状态,并部署相应系统合约实现互操作行为。

而除此之外,MUD 还提供了包括网络逻辑、标准客户端等实用的相关代码库。

MUD V1

3.3 MUD V2

虽然当人们提到 MUD 时,大多的第一反应是那个 “EVM 上的全链上游戏引擎”,但实际上从 Lattice 几次的公开演讲都可以看到,MUD 的野心绝不仅仅是做一个游戏引擎,而是成为 Ethereum 中那个缺失的 Framework(框架),一个能被所有链上应用所使用的引擎,EVM 上的 Ruby on Rails

以太坊与计算机的对比

而要达成这个目标, MUD 需要具有更高的兼容性,而不被单一的数据结构所局限。因此,在 4 月 1 日发布的 MUD V2 Alpha Version 当中,MUD 在结构上进行了改良,强调了其不仅仅是 ECS 的特性

MUD 描述更新

那它是怎么实现的呢,这就需要提及 2 个 MUD v2 的重要调整:

  1. Components → Tables

    最重要的就是,其摈弃了原本键值对应的 Compoents 组件设定,而用了包容性更大的 Tables 表的设定。 在 MUD V1 中,开发者必须遵循着 ECS 形态的数据结构;但在 MUD V2 中,数据结构的形态将完全由开发者自行设计,而 MUD 也将提供 ECS 结构对应的代码库以供选择。

  2. Component Contract → World /... / Table.sol

    同时,在保持着数据与逻辑解耦的背景下,数据的储存形态也发生了变化。

    在 MUD V1 中,每一个 Component 组件都是以独立的合约进行数据储存和访问控制;而在 MUD V2 中,新版的 Table 表将无需部署新的合约,而是可以通过 Solidity 动态的创建表,并储存在 World 世界合约当中,如同一个真正的数据库一样。

目前 MUD V2 的开发仍在进行中,最终的形态还需要以官方发布的文档为准。想进一步了解 MUD V2 的,可以看看这个 Justin Glibert 对 MUD 2 的介绍 视频。

四、Dojo

4.1 Dojo 起源

实际上,Starknet 上最早的的引擎概念起源于 Dope Wars,Dope Wars 在 2021 年的 9 月便开始开发名为 Roll Your Own (RYO) 的引擎,用于打造 Dope Wars 的游戏生态。虽然这可能是全链上游戏中第一个被提出的“引擎”概念,但由于其不太属于通用引擎,因此也并不为人所知。在之后的时间里,Starknet 上几个活跃的核心项目如 Loot Realm、Topology、Influence、Cartridge、Briq 等都尝试围绕全链上自治世界的概念进行各自的独立开发。

而 MUD 的出现,毫无疑问为全链上的自治世界理念注入了新的动力,同时随着 Cairo 1.0 的推出,许多曾经基于 Cairo 0 开发的合约面临重写,这也为 Starknet 上的全链上游戏提供了一次绝佳的重启机会。

于是在 2022 年大约 11 月份 Starknet 宣布 Cairo 1.0 后不久,Loot Realms 的核心贡献者 @lordOfAFew、Cartridge 的创始人 @tarrenceva 和 Briq 的创始人 @sylvechv 提出了在 Starknet 网络上开发一个全链上游戏引擎的想法,至 2023 年 2 月,Dojo 正式诞生。

由于彼时市面上可供参考的内容基本只有 MUD,而 MUD 的设计与表现也确实十分的优秀,于是Dojo 早期基本是围绕着 MUD 在 Starknet 的 Cairo 语言下的实现进行的开发,loaf 早期也承认了这一点,这也是为何坊间会有 Dojo 就是 MUD 的移植版的说法。

虽然当时这种行为 让 MUD 的创始人 Ludens 略有微词 ,但随着 MUD 尝试跳出 ECS 的 V2 推出,Dojo 也开始在不断的探索适合自己的差异化路径。

4.2 Why Cairo

但当讨论到,为什么我们需要一个 Cairo 版的游戏引擎时,就需要去思考,对于全链上游戏而言,Cairo 相较于 Solidity 由具有什么样的优势?而针对这个问题,我们可以从 Dojo 的核心开发者 tarrence.eth 的部分观点中一窥其貌,感兴趣的建议 阅读这篇原文

首先,Cairo 是一种图灵完备、用于为通用计算创建可证明程序(Provable Programs)的类 Rust 语言,其具备着一些独特的特性:

  1. 证明递归

    Cairo 生成的 Prove 是可被递归的,这意味着你可以证明一个证明的验证。假设你需要证明一系列计算是有效的,在Solidity中,你需要提供整个计算序列作为 Prove;而在Cairo中,你可以为每个计算创建一个证明并验证,然后创建一个证明来验证所有的单个验证结果,从而实现极高比例的计算压缩,对于游戏这种高交互频率的应用而言,起到了非常关键的作用。

  2. 逐步证明

    Cairo 可以将一个执行分解为几个较小的部分,每个部分都可以独立证明,比如可以将一部分验证放到客户端,从而隐藏用户输入,之后再进行链上验证,实现敏感数据的保护以及更高的资源利用效率,这意味着可以确保核心游戏逻辑上链的情况下,实现非对称信息博弈。

  3. 状态差异

    当一个 Cairo 程序被验证后,会生成 2 个产物:执行痕迹 和 状态差异,其中状态差异用来描述一个计算发生时的状态变化。不同与 Optimistic 和一些其他的 Rollups 选择将一个执行的“输入”放到 DA 层,Cairo 能将一个执行的“输出”放到 DA 层。

    对于游戏而言,同样对验证和存储效率起到了极大的提升,比如在国际象棋游戏中,一个三分钟的游戏,可能会出现 50 次移动执行。若使用 Optimistic Rollup 则需要所每一步的状态“输入”;而在Cairo中,只需要游戏的最终状态和描述状态转换的状态差异即可。

    这种将输入压缩进程序的能力能实现更酷的的功能,比如可以通过使用像 @HerodotusDev 这样的中间件, 让玩家用其他链上的资产来参与 Starknet 上的游戏。

  4. 广义通用

    不同与 Solidity,Cairo的通用性使其可以用于超出区块链的更广泛的应用,包括用于创建云计算或边缘设备的可证明程序,使其具有更广阔的扩展性

除此之外,Cairo 还有着许多其他的特性,使其相较于 Solidity 具有更高的效率和可扩展能力,能更好的处理大量的计算,这对于游戏这类高频交互、且对延迟敏感的应用而言,具有着无法比拟的优势。

但对于全链上游戏而言,其发展并不仅仅取决于底层的语言效率,在如此早期的阶段,整体生态的氛围以及成熟程度,更是起到了至关重要的作用。接下来我们将分别透过以 MUD 为代表的 EVM 系,和以 Dojo 为代表的 Starknet 系的生态图谱,来一览整个全链上游戏的生态发展。

五、全链上游戏的生态图谱

5.1 Mud 系

正如前文所述,无论是作为 EVM 生态中全链上游戏引擎概念的首个提出者,还是其纯正的以太坊血统,MUD 都是当之无愧的老大哥,也因此在开发者生态圈内具有着天然的号召力和凝聚力。

从 2022 年由0xPARC 举办的为期 4 周的 Autonomous Worlds Winter '22 Residency 上就已经能发现不少围绕 MUD 开发的非常具有开创性的全链上游戏,包括 Dark Sea、Crypto Town、 Lattice 自研的 OPCraft 和 Sky Strife 等等。

而在前段时间刚结束的 ETHGlobal 2023 中,由 0xPARC 主办的 Autonomous Worlds Hackathon 更是吸引来了数百名的开发者,仅 5 天的时间便总共收到了 109 份黑客松项目的申请,这对于一个相对早期的生态而言,可谓是一个非常不错的成绩。

AW Residency 与 Hackathon 简况

这里作者将会结合 22 年 Residency 和今年 *黑客松的获奖作品*,从中挑选几个比较有趣的项目进行简述,以让大家更好的了解当前 MUD 生态中游戏的情况:

① OPCraft 1 & 2

首先需要介绍的便是 *OPCraft*,其与 Sky Strife 都属于最早的官方自研游戏,而OPCraft 也如其名字一样,Optimism 的 OP Labs团队也同时是该游戏共同开发者。

OPCraft 是一个 Minecraft 风格的 3D 体素沙盒类全链上游戏,团队通过 MUD 仅用了不到 2 天的时间便完成了最初版本的游戏开发,随后用了近 2 周的时间上线了最早的测试版本。这个最早的,也或许是目前为止最能体现自治世界的全链上游戏,在上线 2 周后,实现了 1500+的参与玩家,350 万+的链上记录,各种各样的大型体素造物,以及 5+ 的玩家自制插件。

而谈起其自治世界概念的体现,就不得不提在最早测试期间出现的一个完全由玩家发起的、合约管理的社会结构体 “*OPCraft 自治人民共和国*”。

OPCraft 本质上只允许玩家做 6 件事情,其中 4 件是游戏内行为:摧毁体素块、合成体素块、放置体素块,以及认领一片 16x16 的土地(需要成为该地块最高的钻石质押者),而另外两件则分别是:自定义前端,和部署自定义的组件与系统。

OPCraft 的结构

在游戏的早期,玩家们热衷于在地上挖极大的洞,来把其他玩家陷进去,或是如同 Minecraft 一样建造各种大型的艺术造物,各种插件也主要围绕着资源的开采、局内社交、视觉表现展开,直至一位“最高领袖”的出现。

“最高领袖”在某一天突然出现,他们利用挖掘出来的 100 万块钻石认领了出生点周边的几乎所有地块,导致其他玩家无人能在上面进行建造或开采。但于此同时,他们也创建一个一套“同志”系统合约,玩家若选择宣誓加入共和国成为同志,则需要放弃自己所有的个人财产,全部充公,而玩家将获得能够使用国库当中的所有资产的权利,并能够在共和国的土地上进行建造与开采。过程中,玩家用了多少资源,自己就得开采更多的资源,从而建立起了一个完全自治的国度。

OPCraft 自治人民共和国

而这种奇妙的呈现,完全超出了官方团队的设想,却仅通过 3 个步骤便完成了实现:一个“同志”组件、一个“治理”系统以及一个链接两者并进行呈现的前端插件系统。

而在近期 AW 黑客松上公布的 OPCraft 2 中,团队更是公布了一个新的重磅功能--“红石系统”。接触过 Minecraft 的玩家应该 都知道“红石”背后所蕴含着的创意实现潜力,其通过实现二进制输入构建出的不同逻辑门组件,基本能打造一台计算机。尽管在黑客松上的演示还较为简陋,但其特性已经得到了很好的展示,十分令人期待其未来的发展。

② Sky Strife

Sky Strife 是 Lattice 官方自研的一款 RTS 类游戏,基本上是为后续的全链上回合制游戏打了个样版,也是目前为止作者体验过的回合制全链上游戏中,设定最为丰富、游戏体验最为顺畅、竞技感最强的一款。

Sky Strife 早期游戏界面

早期游戏的主要以夺旗模式为主,玩家需要部署兵力,通过占领地图上不同的资源点扩张势力,并抢夺地图中央的皇冠,最终将皇冠护送至目标地点的玩家胜利。在这个过程中,玩家需要做出兵种的调配、地形资源的利用、各方关系的观察等战略性操作。

最早的游戏体验可以看 *这条推文*,但其实随着几次版本调整,游戏节奏和许多设定都已经得到了很好的平衡,因此玩起来还是十分带感的,具体的介绍可以看这篇 官方指南

在最近的几次更新中,团队对游戏的 UI 进行了重新的设计,加入了初始英雄的设定,同时也新增了“吃鸡”模式,整体的开发进度相当喜人,感兴趣的朋友建议加入 Lattice 官方 Discord 参与不定期的测试轮进行体验。

③ Autonomous Game of Life

自治生命游戏 是本次 AW 黑客松的最终入围作品,由 @Komorebi8888@yamapyblack 开发实现,其使用 MUD v2 引擎不仅将康威生命游戏带到了全链上,同时还开发了一个元胞自动机模组,能让任何人快速的构建自己的元胞自动机模型。

Autonomous Game of Life 游戏界面

在 Komorebi 和 yamapyblack 的版本中,玩家与玩家间可以进行对抗,玩家可以通过编排细胞设定初始生命图形,该图形会进行随机的自由漫步,而当细胞与他人的细胞发生接触时,更多己方细胞环绕的细胞将存活,最终存活下来的为胜者。

不同于大家常见的游戏类型,生命游戏是一个非常独特的种类,而本身也有着一个相对丰富的生态体系,当其进入到全链上的世界里时,很期待未来会碰撞出怎样的火花。

④ Netherscape

Netherscape 是由 @DFArchon 开发的一款全链上 RPG 游戏,不仅是本次 AW 黑客松的入围作品,同时也获得了 MUD 颁发的最佳创意实现 - 金奖

Netherscape 将玩家操作的角色称之为 PC(Playable Characters),通过 MUD 的 ECS 的框架,每个 PC 被建构为一个内嵌了许多组件和系统的实体,使玩家可以操纵 PC 进行探索、收集、战斗、消耗等行为。同时,这也允许团队及第三方开发者能够去创建各种更为复杂的交互规则,比如市场交易系统、战斗强化系统、新的地图等等。

Netherscape Demo 演示

而这里面有意思的是,由于操纵 PC 的权力被抽象出来成为了某个组件,因此玩家与玩家之间可以实现 PC 的交易与租赁市场,在 Demo 演示的过程中,创始人 @BriefKandle 展示一个战斗内快速租赁的操作。

这种模式其实在手游中非常常见,其能容许游戏在较高复杂度的背景下,降低新人的入局门槛,同时也能增加游戏的社交属性,对于全链上游戏而言,是一种十分有助益的实现,也非常期待未来游戏正式版的上线。

⑤ Realm of Pepe

Realm of Pepe 是一款非常有意思的全链上游戏与流支付结合的试验性范例,同样也入围了本次的 AW 黑客松,由 Superfluid 支持。

其是一款画风还挺不错的 ARPG 游戏,游戏内容十分简陋,玩家创建角色时会生成一个可变 NFT Profile 记录玩家的状态,当玩家与地图资源交互时 Profile 也会进行更新,当特定要求达成后,可解锁下一关卡。

游戏整体逻辑简单直接,个人觉得比较意思的部分是,其将各种资源的分发采用了流支付的形式,虽然在游戏中是被记录到了 NFT 上,但其实对于一些 MMORPG 或者是 STG 类游戏而言,将部分特殊资源代币化,并以流支付的形式分发给玩家,对于全链上游戏的整体资源和经济体系而言,或许将会起到不错的丰富效果。

Realm of Pepe 游戏演示界面

由于篇幅有限,不能更多的展开介绍本次 AW 黑客松的其他项目,这次其实出现了许多融合与尝试,且都碰撞出了一些很有意思的火花,比如 LayerMud Social Plugin and WerewolfCourtroomGPTMudAgent Arena 等等,

而实际上除了本次黑客松之外,还有许多围绕 MUD 开发的非常有意思的游戏,比如 0xSmallBrainWord3 和其与 0xhankMoving Castle 合作开发的新作 Network State;*stokarz* 的 Rhascau、*Tetration Labs* 的 Muddy Frost 以及 Museum Heist、前 Critterz 团队的 tax cutsEmerson Hsieh 开发的类似异星工厂的 Primodium 等等,都十分值得关注。

最后,对于 MUD 生态感兴趣的小伙伴,可以关注由 Komorebi 发起的 *AW House*,目前在同时开放 AW Impact Grants 的申请,以及 2023 ETHCC 期间 Hacker House 的招募。

5.2 Starknet 系

正如前述,在 Cairo 0 时代,Starknet 生态中的全链上游戏基本都属于虽有合作、但各自为营的状态,直至 Cairo 1.0 的宣布,大量的合约面临重写,此时 Dojo 的出现给了各方游戏一个统一战线的机会。 但由于时间尚短,目前无论是 Dope War、Influence 还是刚刚正式发布的 Loot Survivor 都仍在采用 Dojo 进行 Cairo 1.0 的重制,所以明面上的 Dojo 生态还暂未成型,因此暂用 Starknet 系来进行概括。再者,Dojo 目前核心贡献者的构成,也基本由 Starknet 整体生态中较为活跃贡献者组成,或许在未来也会延续 Starknet 系这个统称。 鉴于 Starknet 系的各个项目都颇有渊源,本节将会从每个项目背后的团队开始展开介绍,首当其冲的便是 Dojo 引擎的御三家:Realms、Cartridge 和 Briq。

5.2.1 BibliothecaDAO

首先是 Loot Realms 系列背后的开发团队 BibliothecaDAO,作为 Loot 生态中非常重要的组织,在 《万字笔墨,从Dark Forest与Loot一窥链游形态的顶点:全链上游戏》 一文中也相对着重的介绍了一些。

Loot (for Adventurers) 是 @Dom Hofmann 于2021年8月28日发布的一个实验性项目,由于其由下至上,完全由社区共创自治生长的特性,让其具有极高的可塑性和几乎无限的可能性,短时间内吸引来了诸多的生态贡献者和衍生系列。

但随着投机热度的退散,其中大部分的项目都销声匿迹,而 Loot Realms 作为同样一个社区自治的项目,自 2021 年 9 月 1 日上线后,仍在一直积极的围绕自己的主线为 Lootverse 做贡献,其中的核心贡献者 @lordOfAFew 更是与@TimshelXYZ 成为了 Loot 生态中精神领袖般的存在。如果说Loot 的底层叙事在 Timshel 等诸多成员的贡献下构建出了三国演义,那么 Realms 的第一个项目 Eternum 则是承载了叙事的《三国志》游戏。

在 BibliothecaDAO 的推进下,Loot 不再是一个仅有文字内容的 IP,而有了更加丰富的交互形式。但作为游戏,其同样面临着所有区块链游戏都将遇到的底层性能问题。

在大约 2021 年的 11 月份,团队出于多方考虑,决定迁徙至 Starknet 进行后续的开发,于 2023 年初正式放出 Realms: Eternum 的 alpha 测试版,并于 2023 年 5 月份的 ETHGlobal Lisbon 上放出了首款 “play to die” 的 Roguelike 游戏 LootSurvivor。这两款均是第一批采用 Cairo 0 编写的全链上游戏,因此 BibliothecaDAO 可谓是当之无愧的 Starknet 全链上游戏元老。

而由于其社区属性,BibliothecaDAO 并未开展过任何机构融资,而是选择了在 2021 年 12 月发行了自己的生态治理代币 $LORDS,并于 2023 年 2 月 1 日根据社区第 7 份提案 (BIP-7) 的完成了一轮针对社区的私募轮融资,由于极强的社区凝聚力,最终实现超募 6.35 倍的成就。

① Realms: Eternum

Eternum 是一个类似《文明》的全链上沙盘类战略模拟游戏。早在“自治世界”概念还未必提出之时,BibliothecaDAO 便以创造一个“Eternal Game 永恒游戏”为目标的理念,于 2021 年 9 月NFT 发行后不久进入了开发,其名字 Eternum 也取自 “Eternal 永恒” 的前半部分以及“Ethereum 以太坊”的后半部分。

Realms: Eternum

游戏最早围绕的 2020 年被提出的 ERC-2535 钻石标准展开,部署于 Arbitrum 网络上,但随着开发过程中遇到的种种问题,团队发现似乎 EVM 和 Solidity 无法满足他们当时对于永恒世界的设想,于是决定迁徙至 Starknet 网络。

在游戏中,玩家需要持有至少 1 个 Realms 方能进行游戏,进入游戏后,玩家将扮演自己领地的领主,通过对资源的获取和运营来增加自己领地的实力,过程当中将涉及建造、交易、侵略和防御等玩家与玩家间的博弈。游戏已于 2023 年 1 月上线测试网版本,可以 前去体验

根据整体体验下来的观感,游戏已经有着相对清晰的结构和逻辑,虽然目前在交互体验方面仍有提升的空间,且由于目前 Starknet 仍处于测试网限速阶段,导致 L2 返回 L1 的交易确认的时长过长,但作为目前为止尚为数不多的全链上游戏,Eternum 依然展现出了相当不错的表现。

同时,其经济模型的也完成了初步的设计,能很好的与 Loot 生态的 NFT、以及自己的生态代币形成良好的联动,在上主网后 Realms 和 C & C 两种 NFT 的持有者都能获得持续的资产产出,而资产也将可以卖出为 $LORDS。

目前游戏内的还完成了资产的 AMM 市场,随着未来进一步的接入 Loot 生态的叙事,游戏的模式和体量将能在很短的时间变得丰富起来,相信在未来会有不错的呈现。

② Loot Survivor

Loot Survivor 是一个文字类 Roguelike 游戏,核心开发者包括 Genesis Adventurers 的联创 @aloothero 以及全链上游戏公会协议 Guildly 的创始人 distracteddev ,于 2023 年 5 月 25 号里斯本的全链上游戏峰会上首次正式亮相,一经发布便风靡会场,成为当时最受欢迎的一款全链上游戏,吸引了大量关注该领域的爱好者们。

Loot Survivor 游戏画面

但其根源要追溯到更早之前,其核心的 "Play 2 Die" 概念早在 2022 年 2 月份便被提出,最早 Realms 团队计划将该想法开发成首个 Relams 系列的扩充,命名为 "Realms: Adventurers"。其早期的游戏设计是结合 Stable Diffusion 生成玩家角色,由开发者们设计游戏的关卡,当玩家在关卡内死亡时,损失的资产将被关卡开发者获得。

在这个过程中,开发者需要对关卡设计做权衡,即不能将难度设的很高,否则就没人来玩,也不能将难度设的很低,否则就没人死;而玩家则需要在继续贪婪还是见好就收的选择间做权衡,继续闯关可能获得更多战利品,也可能一无所有。这个模式创造了一种独特的,玩家与开发者间博弈的关系。

早期 Play2Die 的设想

随着 Dojo 引擎的面世,团队对于全链上游戏的理解逐渐加深,在迭代 Realms: Adventurers 的过程中,团队决定先快速的做一个体量更小的单人全链上游戏,作为 "Play 2 die" 概念的测试用例,并在这个过程中加入更多已有的加密原语,比如 Loot 的武器设定、链上角色等等,于是 Loot Survivor 便诞生了。

值得注意的是, Loot Survivor 的开发得到 Genesis Adventurers 的联创 loothero的加入,GA 于 Loot 生态中的地位在之前的系列文章中曾有过简述,其为整个 Loot 宇宙的内容奠定了很多的基础,而 loothero 则是其中许多设定的创作者,Loot 中各类种族派系和数值体系大多源自于他。

因此 Loot Survivor 尽管游戏体量或许不大,但从内容延续上而言,其完全继承 Loot系的文化底蕴,相信也将能在可预见的未来,看见其与 Genesis Adventurers 的联动。

关于游戏更详细的介绍,推荐阅读 AW Research 的这篇文章 (EN Version)。

5.2.2 Cartridge

Cartridge 是2022 年5 月 9 日推出的 Starknet 上的一个集去中心化身份、声誉和游戏发布为一体的 Steam 类游戏平台 ,于 2022 年 6 月份完成了种子轮融资,投资方为 Fabric Ventures、Valhalla Venture 和 Chapter One。

Cartridge

而 Cartridge 团队成员与游戏引擎的渊源实际上要更加丰富,这就得追溯到另一个 Loot 系项目--Dope Wars

① DopeWar Dope Wars 是一个 Loot 除了 Loot Realms 之外的另一个活跃且重要的衍生分支,于 2021 年8 月 31 日在 ETH 主网上由 @Dennison.og 发起,总量为 8000 的Loot 风格 Free Mint 项目,并于随后的 9 月 4 日向每个 NFT 持有者空投了 125,000 枚 $PAPER 代币。

Dope Wars

不同于 Loot 的魔幻色彩,Dope Wars 走的是 GTA 式的街头路线,一经上线便吸引来了不少的同好者,同时,或许得益于这类文化属性,社区氛围非常活跃,并很快开始朝着游戏的方向展开了开发。

受经典游戏 Drug War 的影响与启发,Dope Wars 希望借助 Loot 这种由下至上、与街头文化极其契合的精神,构建一个 GTA 式的游戏宇宙,且通过区块链的特性实现模块化的扩充。于是 首个全链上“游戏引擎” -- *RYO*,在社区的第四次提案通过后进入了开发,最早由 @perama 发起并负责,而 Cartridge 的创始团队@tarrenceva 等人也在后期成为了该项目的核心贡献者

RYO 其实不是一个通用的游戏引擎,其更多的是在当时的环境下,围绕着 DopeWars 的内容提供了一套模块化的标准和接口,允许开发者在 DopeWars 生态内进行更高效的开发,有点像一套 MOD 的开发工具,但这段独特的经历,毫无疑问还是给 Cartridge 团队在游戏引擎方面带来了很多宝贵的思路,也因此在后续成为了 Dojo 御三家中非常重要的贡献者。

Dope Wars 之后将自己的资产迁徙至了 OP 网络,并开发了自己的可视化 Marketplace,同时在 Starknet 网络上线了游戏 Dope Frenzy,但随着市场转凉,游戏的开发进入停滞状态。 而随着 Dojo 的出现,Cartridge 团队在 2023 年 6 月份正式宣布将对 RYO 进行基于 Dojo 引擎的重制,想必不久后,那个被搁置的全链上版 Drug War 又会重新回到大家的视野中。

Cartridge announces RYO remake

5.2.3 Briq

Briq 是一个诞生于 2021 年 10 月份 ETH Lisbon 黑客松 上的 Starknet 项目,创始人为 @sylvechv 和 @wraitii,旨在打造一套链上乐高系统。用户可以通过组合最基本的“块”来完成任何创意的实现,并随时可以拆解。

Briq

由于这种高度模块化的特性,使其能很容易的被 NFT/游戏项目所接入,尤其是在以 Loot 为主线风格的 Starknet 生态中。同时 Briq 也是 Starknet 生态中的积极贡献者,让其有机会如上文提及的 Dope Wars 便计划采用 Briq 来为 NFT 建立一套 3D 体素版的视觉呈现,

Dope Wars in Briq

Briq 在近期与 Argent 的 Xplorer 合作活动中也获得了巨大的成功,累积售卖接近 300 万个 Briqs,获得了近 450 ETH 的收入。

5.2.4 Influence

Influence 是一个无论从时间跨度、还是游戏内容、或是经济机制而言都具有十足体量的游戏。或许我会在将来单独开一篇文章来做更为详细的介绍。

简而言之,Influence 早在 2018 年便尝试通过使用智能合约来生成庞大的随机星系,但随后便沉寂了许久,直至 2021 年的 2 月份开始重启项目,随后于 3 月份提出了基于该星系,构建大型太空战略沙盒 MMO 游戏的概念以及部分的游戏数值设定,并上线 Rinkeby 测试网。同时与游戏项目 Parallel 建立合作,宣布将允许 Parallel 卡牌在游戏内的互操作体验。

部分关于星球资源的设定

游戏结合了 4x 、管理经营和开放世界 RPG 的的元素,玩家可以在名为 Adalia 的星系中自由的进行探索、采集、建造、战斗等活动,并构建自己的星际帝国。游戏的所有资产和核心游戏逻辑均部署至链上。

由于整体的构想和体量较大,游戏分为了 4 个阶段:"Arrival Release"、"Exploitation Release"、"Discovery Release" 和 "Conflict Release",目前游戏仍处于 Arrival Release 的阶段,预计将于 2023 年夏天进入 Exploitation Release。

最早的Arrival Release 于 2021 年 4 月 17 日正式推出,该版本的主要内容完成了核心资产 Asteroids 行星、Crew 船员和 SWAY 代币的生成与发行。 2022 年的 3 月份,官方发布了关于 "Exploitation Release" 长达 41 页的 *游戏指南*,其中游戏机制和内容设定的部分十分丰富与全面,即便放在传统游戏中对比,也丝毫不显逊色。

在 2022 年的 8 月份团队宣布将于 Starknet 上线,并于 2023 年的 3 月份进行了 Exploitation Release 发布前的最后一次资产售卖活动 "Prepare for Launch Sale",同时公布了最新的代币经济模型。

社区方面,目前仅官方收录的第三方开发者应用便有 14 个,其中不乏 Starknet 生态的其他活跃项目方如 Guildly、Cartridge 等,而官方资助的 Grant 则有的 6 个项目上榜。同时由社区成员编写的故事设定也相当的丰富,积累了几万字的文本内容,且质量相当不错。

社区成员贡献的内容设定

Influence 作为一个全链上游戏,可以说在各方面的表现都十分优秀的项目。随着 Dojo 的推出,目前官方团队也正在尝试利用 Dojo 对游戏进行重制,十分期待即将上线的 Exploitation Release 会有什么样的表现。

5.2.5 Topology

Topology 是一个非常独特的团队,由 @guiltygyoza@iamkunhokim 创立。与目前大部分的专注于全链上游戏、引擎或其他开发者工具的团队不太一样,他们专注于全自治世界中底层「规则层」的实现。

Topology‘s Mission

Topology 认为,完全生长于区块链上的游戏已经不再局限于“游戏”定义了,基于这种无边界的访问以及无法篡改的特性,我们能够复刻或是创造出类似于自然界规则的约束,这种规则不被某个主体所拥有,且对所有主体一视同仁。因此,当这种底层的规则具有足够的深度和复杂度时,全链上游戏将能建立“链上现实”,而 Topology 将致力于去协助构建这套规则系统。

这毫无疑问是一宏大且前卫的愿景,从目前 Topology 的产品形态来看,其也早朝着这个方向探索,当下而言更偏向一套全链上物理引擎。 截止当下 Topology 共上线了 3 个极具实验性的项目,每个项目背后,都带有着某种规则/物理模型的实现。

其中 ISAAC 是 2022 年 6 月 24 日正式上线的一款结合《三体》与《异星工厂》的合作建造类游戏,玩家们组队进入一个位于三体星系的星球,玩家们需要协同利用星球上的资源建造推进器,从而逃离该环境获得胜利。在 ISAAC 中,团队构建了一套实时模拟星球与三颗太阳位置的物理模型,并将玩家的操作作为参数引入,增加系统的混乱与复杂程度,为玩家提供了极具深度的游戏体验。

而随后在 2022 年的 11 月 7 日又推出了 *MuMu*,一款代数式的数字物理模拟器,在第二季第加入了的音频功能后,其也进化成了一款指令式的程序化数字音乐生成器。

而在最近 2023 年 4 月 STARKTokyo 上,团队也公布了最新的项目"Shoshin" ,这是一款策略类的战斗游戏,双方需要各自为自己的 Agent(角色)设置 Mind (战斗思维),而双方的 Agent 会基于该思维规则展开对决,而其中每一帧的决策和战斗结果都会在链上进行验证与结算。

Shoshin Demo 画面

这是一种非常有意思规则呈现方式,给目前几乎被传统 RTS 和 SLG 类型占领的全链上游戏中,带来了一丝不一样的色彩,这种设置思维的设定,颇有种黑客帝国里插卡学格斗的味道。而 Topology 的目标远不只是一个游戏,目前团队正在进行 Cairo 1.0 的重制,并朝着高度模块化的特定应用 VM 的方向开发,感兴趣的可以看看其在 *STARKTokyo 上的介绍*。

目前 Shoshin 开放了 *早期 Playtest 的申请*,想要体验的小伙伴也可以直接填表试试。

除了上述的几家专注于游戏生态构建的项目方外,还有其他不少值得关注的 Starknet 整体生态中活跃项目,包括专注于做 Sequencer 排序器的 Madara、专注 zkEVM 的 Kakarot、生态贡献者 Lambda Class 等等,而前述三家也同样是 Dojo 引擎的活跃贡献者。

Lambda 同时也将在 2023 ETHCC 期间举办 LambdaZKWeek 黑客松,赞助方包括 Dojo、Starknet、AZtech、Mina 等官方机构,感兴趣的朋友千万不要错过。

5.3 Dark Forest vs. Loot 的延续:MUD vs. DOJO

行文至此,关于 MUD 与 Dojo 的介绍也已经差不多了,溯其起源可以发现,两者几乎都是全链上游戏中,两大起点的延伸,是彼此意志的继承者,也是理念的实践者。双方的渊源,笔者曾在*《万字笔墨,从Dark Forest与Loot一窥链游形态的顶点:全链上游戏》*中便展开过讨论,再一次的对比、思考和观察双方的新作,是件非常有意思的事情,颇有种见证不同传承间分庭对抗的味道。

MUD & Dojo 时间线

既然写到这,作为看热闹的,不把双方拉出来比一比确实不太尽兴,这里笔者将从行事风格、生态基建和内容资源 3 个维度做简单且主观的对比,仅代表笔者个人局限的看法。

风格

MUD 从其 Dark Forest 到 0xPARC 到 Lattice 的一系列背景,以及良好的意识形态、扎实的产品理念、极强的开发者召集能力、旨在去构建底层基础设施的目标,都能让人感觉出其是一个非常纯正的以太坊系开源项目打法。

一手构建叙事,广而布道散播理念;一手通过 in-house 产品做 showcase,然后不断的做黑客松来募集开发者参与贡献,实现思想与实践两手抓。从目前的结果来看,可以说是做的相当不错。

而如果说 MUD 是以太坊学院派,那 Dojo 则是继承了 Loot 由下至上理念的草根野路子派。从 Dojo 最开始是由 3 个不同的项目共同起草的事情便可看出,其风格更偏向于在不同项目与社区之间,彼此勾兑、联合和抱团的打法。

这一方面也有 Starknet 生态开发者数量相对以太坊系更少的原因,同时也因为背靠着 Loot 这个非常卓越的 web3 原生 IP 的原因,其极强的包容性和串联能力,也让其有更自由的空间与不同的项目社区展开合作。

生态基建

这里谈及的资源更多指的是所处生态的资源,包括内容的储备、基建的完善、核心开发者的关注等等。

从基建角度出发,EVM 生态的基建体系毫无疑问更为完善,开发时所能使用的工具和参考的内容也更为丰富。但由于 EVM 系整体的发展更为广泛,热点方向及赛道更多,反而导致整个 EVM 生态的关注度尚未聚焦在全链上游戏这个相对较早的领域。

而对于 Starknet 而言,其对全链上游戏相对更加看重,创始人 Eli Ben-Sasson 曾在黑山的演讲中多次提及,因此 Starknet 在基建和资源层面毫无疑问将倾注更多的比例在扶持全链上游戏上。

同时结合 Dojo 抱团的打法,让其能很快速的借助不同社区的力量构建出新的场景和解决方案,目前在 Dojo 的核心贡献者中,能经常看到像 Madara、Kakarot 等一些 Starknet 上活跃的基建项目的开发者们的身影。

内容资源

而在内容层面,两边都有各自的优势以及尴尬的处境。对于 EVM 系的 MUD 而言,尽管 ETH 是最大的 NFT 集散地,但大部分成型的 IP 都有点各自占山为王的状态,对外的包容性和可互操作性较差,且对于全链上游戏和自治世界的探索欲望较低,没有相对有效的方式串联并撬动起这些内容资源,所以可以看见,普遍 MUD 的游戏都属于体量较小、更注重游戏逻辑和玩法的回合制游戏。

对于 Starknet 而言,优势当然就是有 Loot 这个极强的内容 IP,且在 Timshel、loothero 等人的贡献和带领下,已经具备了十分丰富的文本内容,以及一套可共创的底层叙事,这对于新进入的开发者而言是比较友好的,能够花费较小的精力去构建具有一定内容层次的游戏。

同时除了以 Loot 展开的 Realm、Loot Survivor 之外,独立的项目如 Dope War、Influence 等都有着较深且完整的内容叙事,相比与 MUD 的游戏,更容易吸引到深度的玩家。

但略微尴尬的点在于,尽管 Loot 的开放性很好,但内容的指引和共创流程等文档类的资料较为欠缺,并不是很多人能快速了解并利用其这一部分资源。另一方面,Dojo 与 Cairo 本身的开发者文档就仍待改进,频繁的更新使得许多开发者根本无暇顾及内容创作的环节。

综合

整体而言,双方都各有千秋,MUD 的优势在于其纯正的血统,以及所具有的开发者召集能力,目前基于 MUD 进行全链上游戏的开发者数量毫无疑问也远多于 Dojo,因此更容易出现有意思的想法与创新的项目。

但由于内容层面可利用的资源较少,短期来讲可能较难出现更大体量、内容层次更深的游戏,因为其中涉及到的内容创作、经济机制、复杂的游戏逻辑都会对独立开发者或小型开发团队带来极大的挑战。

但据悉,EVE OL 背后的 CCP Games 对 MUD 十分感兴趣,目前已经开展了 EVE Web3 版本的制作,或许会采用或部分采用 MUD 进行开发,根据 CEO 透露,将预计在 9 月份上线一版 Play test。另外0xCitadel 和ShatteredEON 也都算是具有还不错的内容,但因为没上线,只能期待一下(都不是用 MUD 开发的全链上游戏,但未来或许存在合作机会)。

而Starknet 的优势则是内容 IP 更为丰富,前述的 Loot、Dope War、Realm、Briq 等等,都能让开发者有物可借,迅速的融入自己的创意当中,比如最近圈内十分火热的 Loot Survior 便是与 Loot GA 展开了联动。同时 Starknet 的生态更为集中,开发者交流和碰撞的机会会更多。

但问题也很明显,虽然 Cairo 语言具有更好的性能,但目前底层语言仍处于频繁的更新迭代阶段,给开发工作带来了不小的不确定性。

六. 结语

无论 MUD 和 Dojo 之间的风格和资源差异有多少,他们都有着一个极其相似的共同点,那就是仅仅凭借理念,便自然的吸引来了数量不少的一批极客和开发者持续的在生态中进行贡献、思考与创新。

借用一位深度经历过 Defi Summer 的前辈 @tianrangzhang 的比喻:“2023年5月里斯本的全链上峰会氛围,基本就像 2019年10月的defi.wtf 峰会氛围。如果说 L2、zkEVM、zkVM 对标当年的 alt L1,Axiom和 Herodotus 这类中间件对标当年的 Link、GRT。

那 MUD 之于应用层就是 Uniswap,其大幅释放了内容创作者们受技术限制的创意, Uniswap 的一千个空气币,对应 MUD 就是一千个小游戏,而 MUD 的风格和血统也神似当年 UNI 正统且坚持不发币的样子。而 Dojo 则像是 Sushi / Aave,Fair launch 的更加草根接地气。”

同时,当我们去回顾传统游戏引擎的发展历程时,会发现一个积极的循环模式:从开始推出基础设施,到打造自研游戏范例,从而吸引开发者构建生态,进而产出爆款游戏,并因此吸引更多的开发者参与。这种生态的形成与强化释放出了巨大的能量,也撑起了如 Unity和Unreal Engine 等著名商业引擎的成功。

而当我们回头看会发现,MUD 和 Dojo 已经以不同的方式迈出了自己的步伐,在这个趋势的推动下,我们将不难预见下一代的、基于全链上自治世界的 Unity 和 Unreal Engine 的时代即将到来

而当这台大戏开场之际,你又将在哪里?

部分参考

大部分参考都已链接在文章内,或有少部分参考遗漏,见谅。

https://en.wikipedia.org/wiki/Entity_component_system

https://gist.github.com/adamnemecek/ae2755c5c4eaabd0d864e6c62dbe5088

https://t-machine.org/index.php/2007/09/03/entity-systems-are-the-future-of-mmog-development-part-1/

https://encyclopedia.pub/entry/36090

https://www.gamedev.net/tutorials/_/technical/game-programming/understanding-component-entity-systems-r3013/

https://www.guiltygyoza.xyz/2022/04/onchain-realities

0
粉丝
1
获赞
29
精选
数据来源区块链,不构成投资建议!
网站只展示作者的精选文章
2022 Tagge. With ❤️ from Lambda