# Starknet 游戏引擎 Dojo：链游的起点

By [jiewan.eth](https://paragraph.com/@jiewan) · 2023-11-01

---

截至 2023 年，全球游戏市场价值达 [2450 亿美元](https://www.mordorintelligence.com/industry-reports/global-gaming-market)，是全球娱乐行业最大的细分市场之一。区块链游戏承诺实现无限的互操作性，为游戏世界提供了一个比当前场景更令人兴奋的入口。如同多人游戏为游戏生态系统增加全新可能性，链上游戏可以变得更加有趣且有价值。

但这一承诺却不得不面对区块链「交易贵且慢」的现实。这是游戏里应该规避的两个问题。正因为如此，创造成功的链上游戏几乎不可能实现。

但随着「有效性证明 rollup」 技术的成熟，链上游戏的承诺终于得以兑现。

在本文中，我们将了解由 **Starknet** 提供的高 TPS 如何实现链上游戏的承诺。我们还将了解首个社区构建的可验证游戏引擎 **Dojo** 如何使用 Starknet 为创作者赋能。最后，还将探讨 Dojo 的未来及其以及它为区块链游戏带来的乐趣。

**加密游戏**
========

当我们谈论区块链游戏时，区块链支持的两种最流行的理念是**游戏内资产的所有权和互操作性。**

**游戏内资产所有权**是指游戏资产属于用户拥有的钱包。换句话说，游戏资产它们不属于游戏开发者，也不属于某个电子邮件帐户，这些账户可能存储在中心化服务器上，而且游戏开发者可以远程删。在区块链游戏中，你创造或赚取的资产真正属于你。

一旦这些资产属于_你_，游戏就可以实现**互操作性**。通过互操作性，一款游戏中的角色和资产可以转移到不同的游戏或世界。如果你在一款游戏中投入了数百个小时，但决定不再玩这款游戏，你可以将这些来之不易的资产转移到你选择的新游戏中。

为了实现这两个概念，游戏必须建立在**链上**。这意味着所有游戏内资产、玩家采取的所有操作以及任何其他状态更改都_必须在区块链上以交易的形式进行_（每个操作可以单独进行，也可以是定期推送的聚合交易）。在一个相当去中心化的区块链上，单笔交易的成本可能是几美分_到几百美元_（在网络拥堵时），并且需要花费几分钟或更长时间。显然，这使得在此类平台上运营大型游戏基础设施变得极其昂贵、缓慢且不切实际。

**Starknet 和低成本计算**
===================

但随着 Starknet 等「有效性证明 rollup」 的出现，这一切都在改变。

Starknet 是 [StarkWare](https://starkware.co/starknet/) 开发的「有效性证明 rollup」 L 2 （通常称为 ZK-Rollup）。它使用称为 STARK 的加密系统来大幅降低计算和存储成本。 （要了解有关 Starknet 上的加密证明的更多信息，[请查看此文](https://mirror.xyz/starknet-zh.eth/uZH5Qw444rASCz2s5KA0X71x2K86iJUY8oItvSAPGD4)。）

Starknet（以及 Starknet 的智能合约语言 Cairo）允许 dApp 在利用以太坊的安全性的同时，可以以极低的成本处理高 TPS。这些低价而快速的交易正是实现区块链游戏承诺的必备条件。这些游戏现在可以完全上链、运行快速且经济实惠。

但即使具备链上能力，区块链游戏要蓬勃发展，还需要第二个关键构建模块：可证明的游戏引擎。

**什么是游戏引擎**
===========

**游戏引擎**是一种软件框架，它可以在您喜爱的游戏中实现精美的设置、迅捷的游戏行动和逼真的角色行为。游戏引擎通常包括为开发人员提供框架的库和支持程序，这样他们就不必从头开始重新创建每款游戏的基本系统（例如物理、图形和游戏机制）。游戏引擎还可以包括音频和视频处理、3D 效果渲染和 AI 功能。

游戏引擎是构建游戏的基础。

我们喜欢玩的大多数游戏都得益于世界上最流行的两个游戏引擎：Unity 和 Unreal Engine。由 Epic Games 开发的 Unreal Engine 已用于《堡垒之夜》、《街头霸王 V》和《战争机器》系列等热门游戏。 另一位游戏引擎行业的重要玩家 Unity，则赋予了《炉石传说》、《奥日与黑暗森林》和《Pokémon Go》等游戏以生命力。

由于 Starknet 实现了加密游戏的承诺，一大批项目已经开始在 Starknet 上构建游戏。但目前仍然缺少加密游戏引擎，让开发者无需为基本的物理、逻辑和游戏机制编写自定义代码就能构建游戏，并且所有这些都保持在链上。

**Dojo 是首个可证明的游戏引擎**
====================

[**Dojo**](https://github.com/dojoengine) 就是这个加密游戏引擎，它是一个社区构建的、可证明的游戏引擎和工具链，用于构建链上游戏和自治世界。让加密游戏的承诺变为现实。

Starknet 上使用 Dojo 的游戏数量正在快速增长。其中最受欢迎的包括：

*   [《Influence》](https://www.influenceth.io/)— 一款大型战略 MMO，游戏背景设定在遥远的小行星带，玩家拥有开放的经济。用户可以购买 NFT 来探索和开发小行星。所有的小行星同处一个世界中，玩家之间互动。
    
*   [《Realms》](https://linktr.ee/BibliothecaDAO)— 一款策略游戏，拥有 8,000 张具有特定名称、形式、大小和地理特征的土地地图，为用户（土地的所有者）提供链上效用，如资源生成和可交易的住房基础组件，玩家之间可以进行经济贸易。
    
*   [《CafeCosmos》](https://www.cafecosmos.io/)— 一款全链的土地游戏，用户必须有效地管理资源，包括收集资源、耕种和饲养动物、制作器具和家具、交易资产等等。
    

**Dojo 组件**
===========

Dojo 生态系统包含以下组件：

*   用 [Cairo](https://github.com/starkware-libs/cairo) 编写的 ECS（实体组件系统）
    
*   Sozo 迁移规划器
    
*   Torii 网络和索引堆栈
    
*   Katana RPC 开发网络
    

我们来逐个解释。

**ESC 系统**属于游戏开发中的设计模式，让代码更易于维护。ESC 系统允许游戏开发者赋予游戏对象（实体）独特功能（组件），并允许整个场景作为集成系统运作。这样使得在区块链上构建复杂、动态的游戏成为可能，支持多种游戏机制和交互的同时，还利用了区块链技术透明、去中心化的优势。

此外，由于 Dojo 采用 Cairo 编写，能最大程度提高需被证明的代码的效率。（了解更多有关 Cairo 复杂性和可证明含义请参阅[这篇文章](https://mirror.xyz/starknet-zh.eth/TTQly2Tpd_Yk0UqmRcOjyMjVTfmY0zzBtoIM_c_FrAM)。）

**Sozo** 是专门用于构建和迁移计划的工具链。简而言之，Sozo 可以用于将开发的游戏部署到 Starknet。通过简单的 `sozo migrate` 命令完成在链上部署游戏「世界」的示例。Sozo 仅作为命令行接口 (CLI) 工具，图形用户界面仍处于开发阶段。

**Torii** 是 Dojo 世界中的综合索引和网络层。Torii 系统构建在 Dojo 上，因此设计成用于检索部署在链上游戏世界中的任意事件。Torii 能系统组织 Dojo 世界状态，使客户端的数据查询更方便高效。鉴于游戏中包含许多状态变化，设想每次点击都是一次状态变化 ，所以高效的检索系统成为 Dojo 堆栈上的重要功能。可在 Torii 上使用 [GraphQL](https://www.apollographql.com/blog/graphql/basics/what-is-graphql-introduction/) 进行查询。

**Katana** 是高速的本地 Starknet 节点，用于支持 Dojo 本地开发。Katana 允许开发者在 devnet 上测试应用程序，实现高效本地开发。开发者可以采用 Katana 网络测试游戏中发送交易。Katana 能提供便捷的 RPC 方式，根据需求更改网络配置（例如，更改区块时间或允许 0 gas 交易等）。此外，Katana 还支持 Starknet JSON-RPC 规范 v0.3.0 版本（截止 2023 年 6 月的最新版本）。原生 Starknet JSON 调用，如 `starknet_getTransactionReceipt`、`starknet_getStorageAt` 都可以在 Katana 使用。

**展望 Dojo 和加密游戏的未来**
====================

Dojo 社区将持续研究和建设，以推动加密游戏发展。除改进现有组件外，开发者正在进行以下工作：

*   专属游戏的 L3
    
*   乐观更新
    
*   客户端证明
    
*   跨链资产转移
    

来探讨一下这每一项对全链游戏的意义。

**属于游戏的 L3** — Dojo 正在研究在 Starknet 上开发 L3 游戏的可行性。这意味着要在 Starknet 上部署一条单独的链，该链定期证明其交易的执行情况，并将证明提交至 Starknet（L2）。 Starknet 将此证明与网络上的其他交易汇总，并将证明提交给以太坊 L1，并进行验证。[该解决方案可以将游戏的可扩展性提高数倍。](https://mirror.xyz/starknet-zh.eth/-5oiKxwShIOzGUwuQJzIl070wopcPjqBcypVjRvyC1E) （作为额外的步骤，请考虑如果每次玩家尝试游戏中的一个关卡时，都会在游戏层上构建一个一次性使用的新层的情况。）

**乐观更新** — 我们有多少次默默地等待钱包中的「交易正在进行中…」的文字变成绿色并显示交易「已验证」？答案是：经常。如果玩家在游戏中采取的每一步都作为单独的交易发送，则玩家将浪费大量时间等待交易被接受。

乐观更新（Dojo 正在努力将其作为额外功能添加到其堆栈中）通过在客户端（在浏览器本身）乐观地运行交易，让玩家继续游戏，从而摆脱这个问题。如果由于某种原因，交易的结果与浏览器中运行的结果不同，游戏会加以调节。

**客户端证明** — 除了在客户端运行的乐观更新外，Dojo 还在探索客户端证明部分上链交易的可能性。这将允许建立在 Dojo 上的游戏有效地隐藏用户传递的某些输入，因为可以在客户端创建接收这些输入的零知识证明 (ZK proof)。反过来，这个零知识证明可以发送到链上的排序器，排序器执行其余交易。

**利用存储证明 —** 存储证明是利用加密学存储区块链信息实现跨链信息共享。与预言机类似，存储证明提供信息真实性的证明。但与预言机不同的是，存储证明不需要信任第三方来证明。有了存储证明，信任是内置于存储中的。存储证明还可以证明建立在以太坊之上的其他链或其他层的状态的有效性。

Dojo 正在与 [Herodotus](https://www.herodotus.dev/) 团队合作，在 Dojo 中实现存储证明，从而不再需要跨链资产_转移_。来自不同链上的资产的所有权可以通过存储证明来证明，用户可以在不同链或不同层上的不同游戏中使用他们的资产。（请参阅上文讨论的关于在 Starknet 上建立独立的 L3 游戏的部分。）

**结语**
======

Dojo 是世界上首个可证明的游戏引擎，其它的实现得益于 Starknet 和 Cairo 的可用性。有了像 Dojo 这样的可证明游戏引擎，真正的链上加密游戏开始崭露头角。 「互操作性和所有权」的承诺正在逐步实现。

---

*Originally published on [jiewan.eth](https://paragraph.com/@jiewan/starknet-dojo)*
