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

原文作者:@hiCaptainZ

原文来源:Twitter

注:原文来自@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。

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

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

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

转载声明:本文 由CoinON抓取收录,观点仅代表作者本人,不代表CoinON资讯立场,CoinON不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。若以此作为投资依据,请自行承担全部责任。

声明:图文来源于网络,如有侵权请联系删除

风险提示:投资有风险,入市需谨慎。本资讯不作为投资理财建议。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2023年7月31日 下午5:32
下一篇 2023年7月31日 下午5:32

相关推荐

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

星期一 2023-07-31 17:32:18

注:原文来自@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。

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

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

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