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

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

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

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

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

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

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

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

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

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

 

 

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

Subscribe to Gametaverse 中文頻道
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.