原作者:Scott Sunarto (@smsunarto)

翻译润色:Justin(@hicaptainz)

Scott 在上周参加 Modular Summit 了,以下内容是 Argus 目前的最新进展报告。比较有意思的地方是:World Engine 居然可以和 MUD 搭配使用的。

大家好,感谢你们参加今天的峰会。我在这里要讨论一个项目,这个项目占据了我们过去一年的大部分时间。然而,你们很快就会发现,这个故事的时间线远远超过这个时间框架。

在联合创办 Argus 之前,我是 Dark Forest 的创造者之一,这是以太坊上的第一个完全链上游戏,使用了 ZK snarks。Dark Forest 的诞生是由一个简单的问题驱动的:我们能否创建一个每个动作都是链上交易的游戏?在 2020 年,这是一个激进的主张。许多人质疑一个完全链上游戏的可行性,因为区块链技术的速度慢。尽管有这种怀疑,我们的好奇心驱使我们开发了 Dark Forest。

Dark Forest 是一个太空探索游戏,有数千名玩家在链上战斗,扩大他们的帝国。在发布的第一周,我们有超过 10,000 名玩家,并在以太坊测试网上花费了数万亿的 gas。这种高水平的活动最终迫使我们从测试网转移到侧链。然而,即使是侧链,因其可扩展性而受到赞誉,也证明是不够的。我们很快就填满了整个区块空间,推高了 gas 成本,使侧链实际上无法使用。

尽管有这些限制,对全链游戏的热情仍然很高。在 Dark Forest 之后,我们看到投资者、创始人、建设者和黑客的激增,他们在 Dark Forest 的遗产上建设。像 Lattice 和 Primordium 这样的公司开发了更容易的全链游戏开发框架和全链游戏。我们也看到了在 EVM 之外的其他生态系统中的发展,比如 Starknet 上的 Dojo。

现有区块链技术的限制源于我们与其他人共享链的事实。如果像 Dark Forest 这样的另一个游戏存在于同一链上,那么这条链就无法有效地运行。这让我们开始质疑是否应该放弃全链游戏的概念。然而,我们决定探索如何构建更好的全链游戏。

我们开始了一段旅程,从一个关键的认识开始:我们把区块链架构视为理所当然。尽管有各种各样的 L1 和 L2,但它们都看起来很相似。他们都声称有更好的共识机制,更快的 VM,更好的欺诈证明者,和更快的 ZK 证明者。然而,这些声明往往缺乏支持的基准。所有这些努力都是为了创建另一个 DEX 或铸造另一个 NFT,这些都可以在任何其他链上部署。

我们决定从一个不同的角度来看待区块链架构。我们质疑了经典的区块链架构,它似乎在模仿比特币或以太坊。我们意识到,其他的区块链,无论是 L1 还是 L2,都在试图为每个人建立一个区块链,而没有考虑特定的用例或用户角色。

我们选择了一条不同的道路。我们决定为特定的用户群体构建最好的区块链:游戏开发者和玩家。我们明白,游戏与典型的应用有着巨大的不同。例如,像 Twitter 这样的社交媒体平台在一个事件驱动的运行时操作(enent-driven runtime),类似于区块链。用户触发一个事件,比如发布一条推文,这会导致状态转换。

另一方面,游戏在一个循环驱动的运行时操作(loop-driven runtime)。即使没有用户输入,状态转换也会继续发生。火继续燃烧,水继续流动,作物继续生长,日夜的循环继续。这个基本的区别让我们重新思考如何为游戏构建一个更好的区块链。

这里需要理解的关键点是,网络应用中的状态转换,如智能合约,并不需要用户输入。例如,在 Uniswap 中,如果用户想要交易 Token A 和 Token B,他们提交一个交易,然后交易就被执行。这个过程是事件驱动的。

然而,我们很快就意识到,传统区块链的事件驱动性质与运行游戏状态机并不兼容。因此,我们探索了游戏使用的循环驱动运行时。游戏引擎就是专门为支持这种循环驱动运行时而构建的。

在循环驱动的运行时中,游戏进程被称为 "ticks",它们是时间的原子单位。每个游戏循环在一个 tick 中执行。tick rate 越高,游戏感觉越流畅。例如,现代游戏如 Counter-Strike 或 Valorant 有高 tick rate,使得它们感觉更加流畅。相比之下,旧的游戏由于 tick rate 较低,通常感觉比较迟钝。

在区块链的背景下,这些 ticks 可以与区块进行比较,区块是状态转换发生的单一时间单位。如果一个 tick 或区块感觉慢,它可能会对游戏体验产生负面影响。

我们认为,游戏本质上是循环驱动的,因为许多游戏状态转换并不是由外部输入触发的。例如,游戏中的重力并不依赖用户按下一个按钮;它无论用户输入如何都会存在。

确定性的交易排序也是至关重要的。例如,如果你想对一个用户造成伤害,游戏应该先对用户进行健康恢复还是先造成伤害?使用传统的排序,你无法预测或控制哪些状态转换先被应用,这会导致游戏循环中的问题。

通过循环驱动的区块链,我们保持了可组合性,这就是我们为什么想要使用区块链作为游戏运行时的原因。这种方法允许实时游戏玩,模糊了区块链和传统游戏服务器之间的界限。它还使得开发比以前更复杂的游戏成为可能。

然而,要构建一个可扩展的游戏服务器区块链,我们需要水平可扩展性。游戏并不是在一个服务器上玩的;它们分布在许多服务器上。一个 roll-up 在一台计算机上运行,并受到物理计算限制。因此,我们需要一种新的策略来控制交易。

传统的游戏服务器,特别是那些性能密集型的大型多人在线游戏 (MMOs),使用分片的概念。分片是一种工具,不是如何构建你的游戏的处方书。例如,在基于位置的分片中,一个笛卡尔坐标可以被划分为四个图表。当玩家从一个分片移动到另一个分片时,会向另一个分片发送一条消息,然后玩家被传送到那里。

第二种方法涉及到使用一个被称为多重分片的概念,这对于玩过 MMO 游戏的人来说是一个熟悉的概念。在这样的游戏中,当玩家登录时,他们会被提供多个服务器供他们选择。这是一个类似的构造,存在着不同的状态或游戏世界,玩家可以选择加入哪一个。

通过循环驱动的运行时和水平可扩展性,我们也希望实现优秀的可组合性。然而,在 roll-up 中实现这一点可能看起来超出了现实。这就是为什么我们创建了 World Engine。我们意识到标准的 roll-up 不能按照我们的期望运行,所以我们自己动手构建了我们需要的解决方案。这就像 1990 年代,当 3D 游戏引擎还不是随处可得的时候,开发者不得不自己构建它们。

World Engine:专为全链游戏设计的分片Rollup框架

World Engine 分为两个关键部分。第一部分是核心,由两个关键元素组成:EVM Base Shard,一个支持分片的混合执行层和排序器,以及 Game Shard,一个高性能的游戏引擎加执行层。除此之外,还有一些周边组件,如用于客户端 - 服务器通信的事务中继和网络代码,以及用于像 Dark Forest 这样的 ZK 游戏的 ZK Cloud 证明器。

World Engine:专为全链游戏设计的分片Rollup框架

World Engine 的核心是围绕我们的排序器设计的。虽然其他的排序器,如共享序列重构,优化了原子可组合性,但我们认为原子可组合性被高估了,特别是在游戏的背景下。因此,我们完全异步,消除了在 EVM Base Shard 运行时下需要锁的需求。

我们有一个全局的 EVM 链,玩家可以在上面部署智能合约来与游戏进行组合,创建市场和 DEXes。我们在 Polaris 之上构建了这个,Polaris 是一个与 Cosmos SDK 兼容的 EVM 模块,允许我们比其他解决方案能够实现的更大程度地定制 EVM。

在 EVM Base Shard 排序器之上运行的是 Game Shard,一个设计为高性能游戏服务器的高性能迷你区块链。Game Shard 被设计为对状态机和 VM 无感知。我们构建了一个类似于 Cosmos SDK EBCI 的抽象层,允许你定制你的分片,或者通过实现一套标准的接口来构建你自己的分片。

World Engine:专为全链游戏设计的分片Rollup框架

我们还构建了第一个游戏分片实现,以提供一个示例。我们使用了一个 ECS 实体组件系统,这是游戏引擎中的一个常见特性,我们的构造优先考虑将实体组件系统作为一等公民。这意味着状态机本身的每一个对象或原语都被视为一个实体。该系统还有一个可配置的 tick rate,允许你定制你的游戏的速度。

最好的部分是,你不需要依赖索引器。你可以在区块链上快速读取,而不必处理索引器中最终一致性的缺失。此外,你可以用 Go 编写你的代码,无需与限制性的智能合约语言斗争。

World Engine:专为全链游戏设计的分片Rollup框架

由于我们的抽象层,分片本质上是无感的,所以你可以构建其他的分片构造,如一个坚实的游戏分片来补充你的 cardinal 游戏分片。你还可以构建一个带有自定义规则的 NFT minting 分片,一个使用 NFT 表示你的游戏身份的游戏身份分片,并允许交易游戏身份。我们不使用锁,所以我们不必阻塞主线程,使游戏分片运行时尽可能可靠,避免任何延迟。我们不再需要依赖加密经济构造。

World Engine:专为全链游戏设计的分片Rollup框架

每个分片可以有不同的 DA 批处理压缩策略。你可以对分片进行地理定位,以减少游戏延迟。你也可以将游戏分片作为一个独立的游戏服务器运行,所以你不必担心在第一天就要部署 roll-up。

World Engine:专为全链游戏设计的分片Rollup框架

我们在游戏分片之上构建了各种游戏,比如一个 Agar.io 的克隆,这在传统上是不可能的。我们也使用了一个混合模型,你可以在 solidity 上使用现有的游戏引擎框架,并将其与 World Engine 结合。未来由你来决定。你可以使用我们的 cardinal 堆栈,做一个混合,或者构建你自己的游戏分片。这就像是全链游戏的 Kubernetes,一个你的游戏的混合和匹配乐高。

World Engine:专为全链游戏设计的分片Rollup框架

World Engine:专为全链游戏设计的分片Rollup框架

World Engine 现在在我们的 GitHub 上开源,我们欢迎新的贡献者。如果你对构建你的第一个 World Engine 游戏感兴趣,我们今天晚些时候会举办一个研讨会。明天,我们也将主持游戏跟踪,一个面板,和一个关于全链游戏的讲座。

总的来说,让我们构建更酷的 roll-ups。我们现在正处于 roll-up 的复兴时期。roll-ups 允许我们扩展区块链,并利用底层 L1 的安全性。然而,我们仍然生活在一个非常以 EVM 为中心的 roll-up 架构的概念中。这只是起点,而不是终点。我们的目标是以用户和应用为中心的 roll-up 构造。感谢你的聆听。

英文版链接:

https://captainz.xlog.app/World-Engine-Sharded-Rollup-Framework-for-Onchain-Game