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

'World Engine:全链游戏分片Rollup框架'

Argus与World Engine:探索全链游戏的未来

在上周的Modular Summit峰会上,Scott Sunarto分享了Argus项目的最新进展。其中最引人注目的是,World Engine居然可以和MUD(多人在线剧本游戏)搭配使用。

从Dark Forest到Argus:全链游戏的发展

在创办Argus之前,Scott是Dark Forest的创造者之一。Dark Forest是以太坊上的第一个完全链上游戏,使用了ZK snarks(零知识证明)。Dark Forest的诞生源于一个简单的问题:我们是否能够创建一个每个动作都是链上交易的游戏?然而,在2020年,这个想法是非常激进的。许多人质疑完全链上游戏的可行性,因为区块链技术速度较慢。尽管有这些质疑,Scott和他的团队出于好奇心继续开发Dark Forest。

Dark Forest是一个太空探索游戏,在链上进行战斗,扩大自己的帝国。发布的第一周就吸引了超过10,000名玩家,并在以太坊测试网上消耗了数万亿的gas。这种高水平活动最终迫使他们从测试网迁移到了侧链。然而,即使是侧链也无法满足可扩展性需求,区块空间很快被填满,导致侧链几乎无法使用。

尽管存在这些限制,全链游戏的热情仍然很高。在Dark Forest之后,很多投资者、创始人、开发者和黑客开始在Dark Forest的基础上构建。像Lattice和Primordium这样的公司还开发了更易用的全链游戏开发框架和全链游戏。此外,还有一些发展在以太坊虚拟机之外的生态系统,比如Starknet上的Dojo。

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

构建更好的全链游戏:从不同角度出发

Argus团队开始思考区块链架构的本质,并质疑了传统的区块链架构。传统的区块链架构似乎只是在模仿比特币或以太坊。其他的区块链,无论是一级还是二级的,都试图为每个人建立一个区块链,而不是考虑特定的用例或用户角色。

Argus团队选择了不同的道路,决定为特定的用户群体构建最佳的区块链:游戏开发者和玩家。他们认识到游戏与典型的应用有着很大的不同。社交媒体平台(如Twitter)是基于事件驱动的运行时操作,类似于区块链。用户触发一个事件(如发布一条推文),从而导致状态转换。

游戏则在循环驱动的运行时操作中运行。即使没有用户输入,状态转换也会继续发生。火继续燃烧,水继续流动,作物继续生长,日夜不停循环。这种基本差异让Argus团队重新思考如何为游戏构建更好的区块链。

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

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

在循环驱动的运行时中,游戏进程被称为”ticks”(滴答声),它们是时间的最小单位。每个游戏循环在一个tick中执行。tick rate越高,游戏体验越流畅。现代游戏(如《反恐精英》或《Valorant》)具有较高的tick rate,使其感觉更流畅。相比之下,旧游戏由于tick rate较低,通常感觉迟钝。

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

Argus团队相信游戏本质上是循环驱动的,因为很多游戏状态转换并不依赖于外部输入。例如,游戏中的重力并不依赖于用户按下一个按钮;无论用户的输入如何,重力都会存在。

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

通过循环驱动的区块链,Argus团队实现了可组合性,这也是他们选择将区块链作为游戏运行时的原因。这种方法使得实时游戏玩法成为可能,也模糊了区块链和传统游戏服务器之间的界限。它还使得开发比以往更复杂的游戏成为可能。

然而,为了构建可扩展的游戏服务器区块链,我们需要考虑水平可扩展性。游戏不是在单一服务器上进行的,而是分布在多个服务器上。一个roll-up(批量处理上链)在一台计算机上运行,并受到物理计算能力的限制。因此,我们需要一种新的策略来处理交易。

分片和World Engine:游戏服务器的未来

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

第二种方法涉及使用一个被称为多重分片的概念,这对于玩过MMO游戏的人来说是熟悉的。在这类游戏中,当玩家登录时,他们可以选择多个服务器。这个概念与分片类似,不同的是每个分片都有不同的状态或游戏世界,玩家可以选择加入其中任意一个。

在循环驱动的运行时和水平可扩展性的基础上,Argus团队还希望实现卓越的可组合性。然而,在roll-up(批量处理上链)中实现这一点可能看起来超出了现实产能。因此,他们创建了World Engine。这就像在1990年代,当3D游戏引擎还无处不在时,开发者不得不自己构建它们。

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

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

他们开发了一个全局的EVM链,允许玩家在其上部署智能合约,与游戏进行组合并创建市场和去中心化交易所。这是建立在Polaris之上的,Polaris是与Cosmos SDK兼容的EVM模块,使他们能够比其他解决方案更灵活地定制EVM。

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

除了核心部分,他们还构建了一个示例性的游戏分片实现。他们使用了ECS(Entity-Component System)实体组件系统,这是游戏引擎中的一个常见特性,他们将其作为关键因素并进行了优化。这意味着状态机本身的每个对象或原语都被视为一个实体。该系统还提供可配置的tick rate,使用户能够自定义游戏速度。

最好的部分是,你不需要依赖于索引器。你可以快速从区块链上进行读取,而不必处理索引器不一致性问题。此外,你可以使用Go语言编写你的代码,而无需与受限的智能合约语言进行奋斗。

通过抽象层的支持,分片本质上是无感知的,因此你可以构建其他类型的分片结构,如一个稳定的游戏分片来补充你的基础游戏分片。你还可以构建带有自定义规则的NFT铸造分片,或专门用于NFT代表游戏身份的游戏身份分片,并允许游戏身份交易。由于不使用锁,游戏分片运行时不会阻塞主线程,尽可能保持可靠性,避免任何延迟。这种设计不再依赖加密经济结构。

每个分片可以有不同的数据可用性(DA)批处理压缩策略。你可以对分片进行地理定位,以减少游戏延迟。你还可以将游戏分片作为一个独立的游戏服务器运行,无需担心第一天的滚动上线。

Argus团队在Game Shard之上构建了各种游戏,比如Agar.io的克隆。他们还允许使用现有的游戏引擎框架(如Solidity)并与World Engine结合使用。在未来,你可以选择使用Argus团队提供的游戏堆栈构建,或根据自己的需求构建自己的游戏分片。这就像全链游戏的Kubernetes,在其中你可以混合和匹配乐高积木。

World Engine目前在他们的GitHub上开源,并欢迎新的贡献者。对于那些对构建自己的World Engine游戏感兴趣的人,他们将在今天举办研讨会。明天,他们还将举办游戏跟踪面板和关于全链游戏的讲座。

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

英文原文链接