全链游戏内核剖析:MUD引擎与World Engine。

全链游戏内核剖析:MUD引擎和World Engine。

全链游戏:创造者与运行者的对话

作者:Solaire,YBB Capital

过去,由于区块链链表结构的限制,构建实用的DApp一直是一项艰巨的任务。然而,探索者们在受限的情况下依然勇往直前。随着”xy=k”这一著名的恒定乘积池公式的出现,Uniswap以短短数百行代码领导了DeFi的改革,并彻底改变了加密货币的叙事。如果开发者的巧思能在简单的DApp中达到如此高度,那么复杂的DApp又能起到何种作用呢?比如将游戏或社交平台完全搭建在链上?这在过去可能被视为疯狂的想法,但在Rollups开启可扩展性的时代,这种可能性开始变得微妙起来。

DeFi曾经为加密货币带来数千亿美元的TVL,那么如何实现更复杂的DApp呢?它们是否能够引领加密货币进一步达到新的高度?也许全链游戏作为发展初期的代表,能够给我们带来答案。本文将从全链游戏的历史、目前的定义、创造与运行方式以及对加密货币未来的意义,对全链游戏进行剖析。

全链游戏的起源与发展

全链游戏的历史可以追溯到10年以前,当时Mikhail Sindeyev对Namecoin进行了分叉,并创建了世界上第一个区块链游戏《Huntercoin》。《Huntercoin》于2013年作为实验原型开始,并迅速赢得了众多比特币论坛(bitcointalk.org)的热爱,成为许多知名成员支持的项目。因为技术爱好者对视频游戏的热爱,《Huntercoin》的帖子获得了超过380,000次的浏览量。然而,Mikhail Sindeyev在2014年2月中风去世,导致《Huntercoin》的开发陷入困境,代币HUC几乎归零。尽管全链游戏的首次尝试并没有取得成功,但是全链游戏的故事并没有就此终结。

2020年,Gubsheep(Brian Gu)、Alan Luo和SCOTT SUNARTO受到小说《三体:黑暗森林》的启发,开发了一款同名的MMORTS太空征服游戏《Dark Forest》。这款游戏搭建在以太坊上,通过智能合约将所有的规则和逻辑集中处理,实现了全链游戏的链上交易。游戏的核心部分利用了零知识证明(ZK-Snarks)技术,模拟了小说中的黑暗森林法则(即一旦某个宇宙文明被发现,就必然遭到其他宇宙文明的打击)。例如,当玩家想要采取行动时,受到黑暗森林的法则影响,玩家不能暴露自己的坐标,却要从A星球移动到B星球,他们需要提交A和B的坐标以证明行动的有效性。为了隐藏信息,游戏采用了技术手段,使得提交的坐标无法透露任何关于玩家实际星球位置的信息。

这个疯狂又充满创意的实验很快在整个加密社区引起轰动,甚至引起了以太坊创始人Vitalik的注意和赞赏。

然而,《Dark Forest》在首次发布后面临困境,随着超过10,000名玩家的涌入,以太坊的性能无法支持这种复杂应用的运行。该游戏第一天上线就拥堵了整个区块链,消耗了数万亿Gas。并且由于游戏是基于DeFi应用的库和架构设计的,后期优化只能减缓痛苦而无法解决问题。

受到这次实验对ZK-Snarks前景的启发以及全链游戏困境的思考,游戏创始人Brian Gu创建了0xLianGuaiRC作为ZK-Snarks的研究院,以推动零知识证明的发展。0xLianGuaiRC的分支Lattice则致力于设计和维护全链游戏引擎MUD。另一位创始人SCOTT SUNARTO开始研发适用于全链游戏的分片Rollup框架——World Engine。

如今,零知识证明的应用已经得到广泛应用,并且为大家所熟知。接下来我们将重点讨论后两者,MUD引擎和World Engine,即创造和运行。

全链游戏:Autonomous Worlds

根据0xLianGuaiRC加密游戏论文合集《Autonomous Worlds》的观点,全链游戏至少需要遵循以下五个标准:

  1. 数据来源于区块链:区块链不仅仅是数据的辅助存储,也不仅仅是存储在专有服务器中数据的”镜像”。所有有意义的数据都可以在区块链上访问,这样游戏就能充分利用区块链的优势,如透明的数据存储和无权限互操作。

  2. 逻辑和规则通过智能合约实现:游戏中的战斗等逻辑和规则以及所有权等关系都是通过智能合约实现的。

  3. 游戏的开发遵循开放生态原则:游戏合约和可访问的游戏客户端都是开源的,第三方开发者可以通过插件、第三方客户端、互操作智能合约等方式对游戏进行定制和创造,游戏开发者也能充分利用整个社区的创造力。

  4. 游戏永久存储在链上:游戏数据的存储无需依赖中心化服务器,即使核心开发者停止维护客户端,游戏依然可以继续进行,因为游戏数据和逻辑都存储在区块链上,并可以通过智能合约进行访问和执行。

  5. 游戏与其他资产互通:游戏中的数字资产可以与其他资产进行互操作,这既能提升游戏的深度和意义,也能将游戏世界和现实世界联系起来。

基于以上标准构建的全链游戏可以被视为一种基于区块链为底层的世界,也可以称之为”Autonomous Worlds”(自主世界)。

那么什么是世界呢?世界并不仅仅指现实世界,它可以是小说、电影、游戏、诗歌甚至法律体系的载体。在这些世界中,框架和规则由中心(作者、开发者或群体)制定并传达给我们。这些世界的自主性程度也不同,例如在开放世界游戏中非常著名的《Minecraft》中,玩家拥有极高的自由度,可以通过搭建不同方块和修改规则自行创造世界;而自主性较低的世界可能是小说世界,例如《Harry·Potter》中的魔法世界是由JK罗琳所创造的框架和规则。

将区块链作为世界的基底,它完全保存了该世界中所有实体的集合。此外,基于计算机代码明确定义了引入规则。拥有区块链底层的世界让其居民参与共识,它们在每次引入新实体时通过一个计算机网络达成共识。

从世界的角度来看,有两个区块链概念需要定义:

  1. 区块链状态根:状态根是对世界中所有实体的压缩。有了状态根,人们就可以确定任何实体是否是虚拟的,相信一个世界的状态根就等于相信世界本身。例如,0x411842e02a67ab1a…是以太坊在2022年7月21日07:30:10 PM UTC时的状态根,代表了在该时间内的全部内容;

  2. 区块链状态转换函数:每个区块链都定义了一个状态转换函数,它可以被视为一个引入规则。它定义了前一个状态(虚拟实体的集合)如何引入新的虚拟实体。以比特币为例,状态转换函数定义了如何在地址之间进行余额的消费和转移。

将全链游戏视为基于区块链为底层的世界,即”Autonomous Worlds”(自主世界),这个去中心化世界拥有无限的自主性。

创造的困境与解决方案:MUD引擎

在早期探索全链游戏的过程中,开发者们多次受到传统DApp架构和用于构建DeFi应用的库的限制影响。《Dark Forest》等早期全链游戏在当时不得不使用用于构建DeFi应用的架构和库,成为默认选择。但这种模式在构建复杂的全链游戏时非常痛苦。虽然可以通过不断优化来减缓痛苦,但这与使用通用游戏引擎构建的方式相去甚远。

作为针对链上复杂应用的设计,MUD引擎的诞生得益于开发者们对过去和现有问题的思考。MUD是一套基于以太坊的框架,用于构建复杂应用。MUD提供了一些组织数据和逻辑的公约,并抽象了底层复杂性,使得开发者可以更专注于应用程序的功能。它标准化了链上数据的存储方式,并提供了完整的网络代码来同步合约和客户端状态。

当前MUD的最新版本配备了五个组件:

  1. Store:一个用于链上数据库的嵌入式EVM数据库,类似于SQLite。通过使用Store,可以更结构化地管理数据,并摆脱对Solidity编译器提供的存储方法的依赖。Store允许在运行时创建表,并可通过注册挂钩来自动创建索引和视图,从而提供更大的灵活性。

  2. World:作为入口点的框架,提供了访问控制、升级和模块的标准化。World可以在部署时创建一个Store,并在Store中的特定命名空间下注册相关表和系统,实现了对数据的细粒度访问控制。

  3. Tools:基于Foundry的快速开发工具,帮助开发者更高效地构建应用程序。

  4. 客户端数据存储:实现了与链上状态的神秘同步,无需外部索引器。

  5. MODE:一个使用SQL查询的Postgres数据库。

MUD的通用性并不限于以太坊主网,只要编程语言支持,MUD可以无缝运行在任何EVM兼容的链上,如Polygon、Arbitrum、Optimism和Gnosis Chain。

MUD的核心思想围绕着三点展开:

  1. 所有链上状态保存在MUD的链上数据库Store中。Store是一个嵌入式EVM数据库,类似于SQLite。使用Store可以更结构化地管理数据,并且不需要依赖Solidity编译器提供的存储方法。同时,它支持在运行时创建表,并允许注册挂钩以自动创建索引视图,从而提供更大的灵活性。

  2. 逻辑是无状态的,并且通过自定义权限跨不同合约进行分区。“World”作为入口点协调不同智能合约对”Store”的访问。当一个World被部署时,它会创建一个Store,并在Store中注册表和系统。这些系统实际上是智能合约,不同于传统的智能合约的是,它们是无状态的,不直接持有数据。它们利用”World Store”进行数据的读取和写入。由于这种设计,不同的World之间可以共享同样的系统。

  3. 不需要索引器或子图,前端也可保持同步。当使用Store时,链上数据会自动进行内省,任何改变都会通过标准事件广播出去。通过”MODE”节点,将链上状态实时转换为SQL数据库,以保持最新状态。此外,MUD提供了一系列查询工具(如MUD QDSL和GraphQL),简化前端与MUD的同步。对于React开发者,MUD还提供了专门的Hooks,可自动绑定和更新组件状态。

MUD通过以上核心思想打破了全链游戏创造的困境。以往在构建复杂应用时,开发者受制于不同合约对相同状态的修改,需要编写多个数据结构和Getters函数,以及对事件的手动定义。MUD通过集中管理链上状态、提供结构化的数据存储以及自动内省功能等特性,解决了这些问题,让开发者能够更轻松地创建有趣和复杂的全链游戏。

全链游戏的运行:World Engine

全链游戏的运行一直是以太坊面临的巨大挑战。但随着Rollups的快速发展以及即将到来的坎昆升级,全链游戏的成本将大幅降低,速度将大幅提高。全链游戏已经蓄势待发,但目前主流的Rollup方案主要为交易设计,并没有真正为全链游戏量身定制的Rollup。

然而,作为Argus旗下的核心产品,World Engine则是专为全链游戏打造的分片架构Rollup。尽管目前尚未公开测试,但我们可以从项目的博客和演讲中了解到一些关于World Engine的信息。

全链游戏需要以下几个特性的Rollup:

  1. 高吞吐量和高TPS:更快的交易处理速度、更低的延迟和更好的可扩展性。

  2. 扩展的读写:游戏不仅需要进行大量的写入操作以实现高并发处理,还需要进行大量的读取以获取玩家位置等信息。

  3. 水平可扩展的链:通过添加更多节点和资源来增加系统的处理能力,以适应日益增长的需求。这可以避免Noisy Neighbor问题,即一个应用或实体的活动可能对其他应用或实体产生负面影响,导致资源争用和性能问题。

  4. 灵活性和定制性:使区块链适应游戏设计的灵活性和可定制性。包括具有游戏循环的自我执行等特性。

  5. Tick rate:Ticks是游戏时间中的基本单位,游戏需要足够低的延迟,因此需要更高的Tick rate或每秒更多的区块。

为了实现这些目标,团队回顾了21世纪初和20世纪90年代末,例如刚兴起的在线游戏如MMOs等。早期的在线游戏需要找到一种方式,以支持大量玩家之间的互动。分片是其中的一种解决方案,其核心思想是将玩家分布到不同的服务器或“分片”上,每个分片可以独立托管一部分玩家、游戏地图和数据。

例如,早期的MMORPG《Ultima Online》就实现了分片概念。不同的分片代表了不同的虚拟世界,每个分片可以容纳一定数量的玩家。这样做的好处包括扩展性、减少负载、避免拥堵以及地理位置优化。

World Engine将这一概念引入到全链游戏中。不同于以往的许多分片排序器,World Engine的设计更加适合特定需求。它优化了吞吐量和运行时间。为了确保高效的”Tick rate”和区块时间,它是同步的。设计的目标是快速处理交易,保持高效的游戏体验和系统性能。在排序方面,采用部分排序的方式,而不是要求对所有交易进行总排序。这减少了排序的负担,更好地满足高吞吐量和快速区块时间的需求。

World Engine由两个关键组件组成,EVM Base Shard(EVM分片)和Game Shard(游戏分片)。EVM分片是纯粹的EVM链,而真正的秘密武器是游戏分片,它本质上是一个设计为高性能游戏服务器的区块链。World Engine具有可定制性,允许根据需求定制自己的分片。构建好的分片可以注入到基础分片中。只需要实现一组标准接口,就像Cosmos有一个IBC接口一样,我们可以将自己的分片集成到World Engine中。

World Engine的第一个游戏分片实现是Cardinal。它采用了Entity-Component-System (ECS)游戏架构,这是一种面向数据的架构。这使得游戏可以并行化,并提高游戏计算的吞吐量。Cardinal具有可配置的Tick rate,最高可达每秒20次Tick,对应于每秒20个区块。Cardinal是自我索引的,无需外部索引器。

分片还可以通过地理定位减少延迟。例如,游戏可能在美国有一个排序器,亚洲玩家需要等待300毫秒的延迟,以使交易到达排序器。这在游戏中是一个巨大的问题,因为300毫秒的延迟非常长。尝试玩一个具有200毫秒延迟的FPS游戏实际上就像是在玩PPT一样。

结语:全链游戏的思考

全链游戏曾经是亚洲加密社区中一个相对冷门的方向,但随着Starknet的游戏引擎Dojo以及基于OP Stack概念验证的滴答链开发演示,关于全链游戏的讨论逐渐升温。本文中讨论的是从《Dark Forest》派生出的生态系统,也是目前最强大的全链游戏生态系统。

通过对其历史和技术的探究,我们发现Rollup和DApp仍然具有巨大的潜力。从更大的视角来看,随着基础设施的改进,不仅仅是游戏,还有各种复杂的创意将通过MUD实现,并融合到更复杂的Rollup解决方案中。全链游戏的崛起或许只是区块链新范式的开始。

当然,全链游戏还有许多可扩展的内容,如基于Loot的全链游戏生态推动了Starknet的发展,以及状态同步的实现和使用ESC架构。以上只是对全链游戏的一次探索,希望能引起大家更多的思考和讨论。

参考文献:

  1. Modular Summit Day 1 (Galois Stage):World Engine:专为全链游戏设计的分片Rollup框架
  2. Lattice History
  3. MUD开发文档
  4. Autonomous Worlds
  5. 为“数字神明”记时
  6. 一文回顾全链游戏发展史
  7. 如何使用OPStack构建全链游戏的时钟周期
  8. The future of on-chain gaming: ‘The promise of MUD ECS engine’
  9. Overview of MUD, which support the construction of autonomous worlds, and major game projects using MUD, such as OP Craft and Sky Strife
  10. 全链游戏为何崛起,它的魅力在哪?