For the complete documentation index, see llms.txt. This page is also available as Markdown.

发布

如何发布我的项目?

开始之前

请确保以下内容:

  • 你的场景符合所有 场景限制。其中大多数都会在你每次运行场景预览时进行验证。

  • 如果你希望你的场景在移动端玩家那里运行良好,请先在真实设备上预览并测试——参见 为移动端构建 和 在移动端预览。发布后,你的场景可以像在桌面端一样,通过 Decentraland 移动应用访问。

  • 你有一个 Metamask 账户,并将你的 LAND 地块分配给它。

  • 你拥有所需数量的相邻 LAND 区块或一个 Decentraland NAME。否则,你可以在 市场 购买 LAND,或在 市场.

检查场景数据

在部署时,CLI 会从 scene.json 文件中读取信息,以确定要将你的场景部署到哪里。

打开你的场景的 scene.json 文件并补全以下数据:

  • 标题:每当玩家进入你的场景时,标题都会显示在小地图下方的 UI 上。它也会显示在传送弹窗中。

  • 描述:对玩家将在你的场景中看到什么的描述。它会显示在传送弹窗中。

  • navmapThumbnail:一张代表你场景的图片。它会显示在传送弹窗中。图片应为 .png 或 .jpg 图片,16:9 比例,推荐尺寸为 1920x1080 像素。请将任何关键内容保留在中心 1080x1080 方形区域内,因为平台的某些部分会显示其方形裁切。参见 场景缩略图.

  • 地块:你的场景将占用的地块坐标

  • 基点:将被视为场景 [0,0] 坐标的地块坐标。如果你的场景有多个地块,它应是左下角(西南)地块。

  • spawnPoints:场景内的一组坐标(相对于场景的基点地块),玩家会在这些位置生成。默认情况下,玩家会生成在场景的 0,0,0 位置(左下角)。使用它可以让玩家从特定位置开始,或设置一个区域以防止玩家首次出现时彼此重叠。

  • 标签:用于描述你场景的一组标签。这有助于玩家通过更容易找到他们感兴趣的内容来探索 Decentraland。 查看可用分类列表.

  • 分级:这用于对你场景的内容进行分类。Decentraland 是一个 18+ 平台,因此应设置的值为 一个 成人级别。参见 年龄分级.

要发布场景

在 Creator Hub 中使用 Scene Editor

Creator Hub 中的 Scene Editor 提供了一种轻松发布场景的方法。请确保你已经 安装了 Creator Hub.

  1. 打开你的场景项目。

  2. 点击 发布 按钮在右上角。

  3. 系统会提示你是否要发布到 WORLD 或 LAND.

    • 选择 PUBLISH TO WORLD ,将你的场景发布到你的某个 WORLDs中。然后选择要发布到哪个 NAME 或 ENS 域名。

    • 选择 PUBLISH TO LAND 如果你拥有地块,或者已由所有者授予部署权限。然后在地图上选择你想部署到的地块。允许你部署的地块会以粉色显示。

    • 选择 替代服务器 发布到 自定义服务器.


  1. 这会在你的浏览器中打开一个新标签页,显示有关上传的详情。使用你的钱包对部署进行签名。这只是一个用于证明所有权的签名,免费且不涉及任何区块链交易。

    • 对于 Metamask 浏览器账户上的 LAND,请确认部署。然后在 Metamask 浏览器扩展中签署消息。

    • 对于通过 Wallet Connect 可用的钱包所关联的 LAND,请点击 连接钱包,然后用你的移动设备扫描二维码并按照 Wallet Connect 上的步骤操作。

通过 CLI

  1. 使用与你在 Decentraland 中的地块关联的相同公共地址登录你的 Metamask 账户。

  2. 运行 npm run deploy 来自场景文件夹。

**💡 提示**:如果你的项目文件夹中有不想部署的文件,请在部署前将它们列在 _.dclignore_ 文件中。

  1. 浏览器标签页将会打开,显示你要部署到哪些地块。点击 签名并部署.

  2. Metamask 会打开,并通知你需要签名。点击 签名 以确认此操作。

💡 提示:如果你正在实现持续集成流程,使对场景的更改自动部署,那么你可以将 export DCL_PRIVATE_KEY 环境变量设置为拥有部署权限的账户私钥。

💡 提示: npm run deploy 会运行一个 npm run build,它会比运行 npm run start更严格地检查场景中的类型错误。如果这些错误无法避免(例如:它们发生在外部库中)并且不会影响场景,你可以使用 npm run deploy -- --skip-build 来跳过 npm run build 步骤并按原样部署场景。

发布到 Worlds

要将你的场景发布到 Decentraland World,你需要拥有一个 Decentraland NAME 或 ENS 域名。参见 发布选项 以了解如何获取一个。

配置 scene.json

你需要指定部署将要基于哪个 name 进行。请在你的 scene.json:

该 name 中指定的 scene.json 可以是 Decentraland NAME 或 ENS 域名。它必须归签署部署的钱包所有,或者归任何已通过访问控制列表(ACL)获得权限的钱包所有。

请记住以下几点:

  • 签署部署的钱包必须拥有在 scene.json 文件

  • 中指定的 NAME

  • 所有 World 默认都会列在 Places 页面中,除非你按下述方式选择退出

世界元数据

World 拥有自己独立的名称、描述和缩略图,与发布到其中的场景元数据分开。当你发布到一个空的 World,或一个只包含单个场景的 World 时,该 World 的元数据会在每次发布时更新为该场景的元数据。如果 World 包含多个场景,其元数据是独立的:发布场景不会更改它,而且它只能在 Creator Hub 的 管理 部分中编辑。参见 World 元数据与场景元数据.

World 存储预算

部署到 World 的场景会计入你的钱包所拥有的所有 World 共享的存储预算。该预算会随着你的 Decentraland 资产增加:

  • 你拥有的每个 Decentraland NAME 可获得 100 MB。

  • 你拥有的每个 LAND 地块可额外获得 100 MB。

  • 你的钱包中持有的每 2,000 MANA 可额外获得 100 MB。

你可以自由地在各个 World 之间分配这部分预算。例如,若预算为 500 MB,你可以部署一个 300 MB 的场景和一个 200 MB 的场景,或者五个 100 MB 的场景。发布到 ENS 域名的 World 不会使用这部分预算,它们每个 World 的固定限制为 36 MB。

你可以在两个地方查看已使用了多少预算以及还剩多少:

  • 该 管理 Creator Hub 的 查看详情 部分。点击

  • 该 Worlds 选项卡中,位于 Builder.

以查看你的 MANA、LAND 和 NAME 持有量如何合计。如果你超出预算(例如在出售或转移资产后),你有 48 小时来释放空间或增加预算,否则你的 World 将无法访问。参见 Worlds 大小限制 了解更多详情。

多场景 World

默认情况下,通过 CLI 将场景部署到 world 时,你的场景会被视为单场景 World。如果你的 World 已经包含一个场景,部署新场景会覆盖旧场景,即使坐标不同也是如此。

要作为多场景 World 部署,请在部署命令中添加参数 --multi-scene :

npm run deploy -- --multi-scene --target-content https://worlds-content-server.decentraland.org

使用该参数时,如果你发布的场景坐标与该 World 中已有场景的坐标不同,这些场景将会同时存在。

从 Places 列表中选择退出

如果你希望你的 World 不被索引到 Places 中,你可以在你的 scene.json:

在 Creator Hub 中使用 Scene Editor

  1. 打开你的场景项目。

  2. 点击 发布 按钮在右上角。

  3. 选择 PUBLISH TO WORLD.

  4. 选择要发布到哪个 NAME 或 ENS 域名。

通过 CLI

使用以下命令:

运行该命令后,系统会提示你使用钱包签署部署,并会执行一系列验证以允许或拒绝该场景。

访问 World

一旦场景上传到 Worlds 服务器,你就可以使用 Decentraland Explorer,通过以下 URL 访问它: decentraland://?realm=NAME.dcl.eth,其中 NAME 应替换为你部署到的 Decentraland NAME 或 ENS 域名。

在 Decentraland 已打开的情况下,你也可以通过在聊天框中输入 /goto NAME.dcl.eth 命令直接跳转到某个 World。

参见 使其可被发现 以了解如何让你的 World 可被发现的更多信息。

将 World 迁移到 Genesis City

如果你是 LAND 所有者,并希望将 World 场景部署到 Genesis City,你可以通过将场景重新部署到去中心化的 Catalyst 网络来实现,该网络是 Genesis City 的内容服务器。

需要记住的事项:

  • 移除 worldConfiguration 部分,来自 scene.json

  • World 的大小限制(会根据持有量动态变化)与 LAND 地块的限制(每地块 15MB)不同,因此请确保你的场景大小适合部署到 Genesis City!

使用硬件钱包发布

与其将你的 LAND 代币存储在 Metamask 账户中,你可能会觉得将它们存放在硬件钱包设备中更安全,例如 Ledger 或 Trezor,它是物理连接到你电脑上的。

如果你使用这些设备中的一种,你可以将硬件钱包链接到 Metamask,以便启用消息签名,同时更安全地保管代币。参见 Metamask 的这篇文章 了解如何连接你的账户。

一旦你的硬件钱包可通过 Metamask 使用,你就可以像代币存放在 Metamask 账户中一样按相同步骤进行部署。

场景覆盖

当新场景部署时,它会覆盖其所占区块上原有的旧内容。

如果一个占用多个区块的场景只被另一个场景部分覆盖,那么它的所有区块都会被覆盖或清除。

假设你部署了你的场景 一个 占用两个区块 [100, 100] 和 [100, 101]。然后你把区块 [100, 101] 卖给了一个拥有相邻土地并部署了大型场景(B)到多个区块的用户,其中包括 [100, 101].

你的场景 一个 无法仅在一个区块中部分渲染,因此 [100, 100] 不会显示任何内容。你必须创建场景 一个 的新版本,使其只占用一个区块,并将其部署到仅区块 [100, 100].

什么是内容服务器

内容服务器是由社区拥有的服务器网络,文件系统采用内容寻址,这意味着每个文件都通过其内容而非任意文件名来识别。

我们使用内容服务器以类似 BitTorrent 的方式托管和分发所有场景内容,从而保持 Decentraland 网络的分布式特性。

  1. 内容服务器存储并分发渲染你的场景所需的所有资源。

  2. 该 npm run deploy 命令会将这些资源链接到你在 scene.json 文件中指定的 LAND 地块。每当你重新部署场景时,内容服务器都会更新记录,将这些地块指向最新内容。部署不涉及任何区块链交易,你只需使用钱包对新的场景实体进行签名以证明所有权。

服务器每个副本中的信息都是可验证的,因为每个场景都由 LAND 所有者的哈希进行签名。这意味着托管服务器副本的人无法篡改内容以显示不合法的内容。社区还可以通过 DAO 投票批准或移除这些服务器中的任意一个。

自定义服务器

你可以将内容部署到一个不属于官方 DAO 维护的 catalyst 服务器网络的自定义服务器。为此,你不需要拥有任何 LAND 或 NAME 代币,因为你可以将服务器配置为使用你喜欢的任何验证逻辑,以控制谁可以在何处部署。自定义服务器可以选择包含官方服务器中的内容(你可以覆盖它),或者从零开始发布全新的内容。

参见 catalyst-owner 仓库 了解更多关于你可以用自己的服务器做什么以及如何进行设置。

玩家绝不会被引导到这台服务器,访问它的唯一方式是显式输入 URL 进行连接。

通过 CLI

要部署到自定义服务器,请运行:

npm run deploy -- --target <CUSTOM SERVER DOMAIN>

在你的自定义服务器上输入已部署场景的 URL 将取决于其托管所在的域名。

验证部署成功

一旦你部署了场景,这些更改可能需要几分钟才能传播到网络中的各个内容服务器。如果你在部署后立刻进入 Decentraland,可能会短暂地仍然看到你内容的旧版本。

如果使用 CLI 部署,签名 dapp 将开始显示确认信息,表示你内容的新版本已传播到网络中的所有服务器。

你会看到构成 Decentraland 内容网络的各个服务器列表。对于每个服务器,它会指定该地块上最后上传更改的时间戳。每个服务器对应不同的 realm。你可以在 catalyst 监控屏幕.

传播只是其中一部分:上传后,场景的 3D 模型会被转换为针对各个平台(Windows 和 Mac)优化的资源包。在转换完成之前,玩家会被有意提供你场景最后一个可正常运行的版本。这通常只需几秒钟,但对于非常大的场景或服务器繁忙时可能会更久。你可以直接查询转换进度,参见 检查转换状态.

你也可以随时通过在命令行控制台运行以下命令来获取传播信息:

npx @dcl/opscli pointer-consistency --pointer 0,0

自动部署

如果你经常更改场景内容,并希望实现更简化的发布流程,你可以通过 GitHub Actions 自动部署你的场景。

为此,你必须首先将你的场景存储在一个 GitHub 项目中。然后你可以设置一个 GitHub action ,使用以下脚本,它会在每次合并到 main 分支时运行。该脚本会安装所有依赖项、构建项目,然后将其部署到 Decentraland。

重要提示:要运行此流程,你必须在 GitHub 中将某个钱包的私钥设置为环境变量,该私钥将用于签署部署。和往常一样,请务必小心保护私钥安全。请不要使用实际拥有土地代币的账户私钥,因为这会带来重大的安全风险。相反,应将操作员权限委托给一个不持有任何有价值代币的一次性钱包。如果这个私钥曾经泄露,你可以轻松地从该账户撤销这些操作员权限,并设置一个新钱包。

最后更新于