deploy-worlds

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Deploying to Decentraland Worlds

部署到 Decentraland World

Worlds are personal 3D spaces not tied to LAND. They have no parcel limitations and are automatically listed on the Places page.
World 是不与 LAND 关联的个人 3D 空间。它们没有地块限制,并会自动列在 Places 页面中。

Requirements

要求

To publish to a World, the user must own either:
  • A Decentraland NAME (e.g.,
    my-name.dcl.eth
    )
  • An ENS domain (e.g.,
    my-name.eth
    )
The wallet signing the deployment must own the NAME, or have been granted permission via Access Control Lists (ACL).
要发布到 World,用户必须拥有以下之一:
  • 一个 Decentraland NAME(例如
    my-name.dcl.eth
    )
  • 一个 ENS 域名(例如
    my-name.eth
    )
签署部署的钱包必须拥有该 NAME,或已通过 Access Control Lists (ACL) 获得权限。

Storage Budget

存储预算

Scenes deployed to Worlds count against a storage budget shared across all Worlds owned by the same wallet. The budget is calculated dynamically from the wallet's holdings:
  • Each Decentraland NAME owned grants 100 MB (as well as a World).
  • Each LAND parcel owned grants an additional 100 MB.
  • Every 2,000 MANA held in the wallet grants another 100 MB.
  • ENS-domain Worlds have a fixed limit of 36 MB that cannot be expanded.
The budget can be distributed across multiple Worlds however the user likes. Check usage in the Manage section of the Creator Hub (click View Details for a breakdown), or in the Worlds tab of the Builder.
If the budget is exceeded (e.g. after selling/transferring assets), there is a 48-hour grace period to free space before Worlds become inaccessible. Regain access by acquiring more MANA/NAMEs/LAND or undeploying scenes.
部署到 World 的场景会占用同一钱包所拥有的所有 World 共享的存储预算。该预算会根据钱包持有的资产动态计算:
  • 每个已拥有的 Decentraland NAME 可增加 100 MB 存储空间(并获得一个 World)。
  • 每拥有一个 LAND 地块,可额外增加 100 MB 存储空间。
  • 钱包中每持有 2,000 MANA,可再增加 100 MB 存储空间。
  • ENS 域名的 World 固定上限为 36 MB,且无法扩展。
用户可以按需在多个 World 之间分配预算。可在 Creator Hub 的 Manage 部分查看使用情况(点击 View Details 查看明细),或在 Builder 的 Worlds 标签页中查看。
如果超出预算(例如在出售或转移资产后),World 不可访问之前会有 48 小时宽限期,用于释放空间。可以通过获取更多 MANA/NAME/LAND 或取消部署场景来恢复访问权限。

1. Configure scene.json

1. 配置 scene.json

Add a
worldConfiguration
section to
scene.json
:
json
{
  "worldConfiguration": {
    "name": "my-name.dcl.eth"
  }
}
The
name
field must match a Decentraland NAME or ENS domain owned by the deploying wallet.
在
scene.json
中添加
worldConfiguration
部分:
json
{
  "worldConfiguration": {
    "name": "my-name.dcl.eth"
  }
}
name
字段必须与部署钱包拥有的 Decentraland NAME 或 ENS 域名完全匹配。

Opt out of Places listing

选择退出 Places 列表

All Worlds are automatically listed on the Places page. To opt out:
json
{
  "worldConfiguration": {
    "name": "my-name.dcl.eth",
    "placesConfig": {
      "optOut": true
    }
  }
}
所有 World 都会自动列在 Places 页面 中。要选择退出,请执行:
json
{
  "worldConfiguration": {
    "name": "my-name.dcl.eth",
    "placesConfig": {
      "optOut": true
    }
  }
}

2. Deploy

2. 部署

Use the
/deploy
command
— it auto-detects the
worldConfiguration
in scene.json and deploys to the Worlds content server automatically.
Alternatively, deploy manually via CLI:
bash
npx @dcl/sdk-commands deploy --target-content https://worlds-content-server.decentraland.org
This will prompt the user to sign the deployment with their wallet. Validations run automatically to allow or reject the scene.
Files matched by
.dclignore
(at the project root) are excluded from the upload — keep working files like Blender sources, concept art, and markdown docs listed there so the World stays light. See the
.dclignore
section in the deploy-scene skill.
使用
/deploy
命令
——它会自动检测 scene.json 中的
worldConfiguration
,并自动部署到 Worlds 内容服务器。
也可以通过 CLI 手动部署:
bash
npx @dcl/sdk-commands deploy --target-content https://worlds-content-server.decentraland.org
系统会提示用户使用钱包签署部署。验证会自动运行,并据此允许或拒绝该场景。
与项目根目录中的
.dclignore
匹配的文件不会上传——请确保 Blender 源文件、概念图和 Markdown 文档等工作文件已列在该文件中,以使 World 保持轻量。请参阅 deploy-scene skill 中的
.dclignore
部分。

Via Creator Hub

通过 Creator Hub 部署

  1. Open the scene project in Creator Hub
  2. Click the Publish button (top-right corner)
  3. Select PUBLISH TO WORLD
  4. Choose which NAME or ENS domain to publish to
  1. 在 Creator Hub 中打开场景项目
  2. 点击右上角的 Publish 按钮
  3. 选择 PUBLISH TO WORLD
  4. 选择要发布到的 NAME 或 ENS 域名

3. Access the World

3. 访问 World

After a successful deploy, the
/deploy
command outputs a visit URL automatically. The World is also accessible at:
https://decentraland.zone/bevy-web?realm=NAME.dcl.eth
From inside Decentraland, use the chatbox command:
/goto NAME.dcl.eth
部署成功后,
/deploy
命令会自动输出访问 URL。也可以通过以下地址访问 World:
https://decentraland.zone/bevy-web?realm=NAME.dcl.eth
在 Decentraland 内,可以使用聊天框命令:
/goto NAME.dcl.eth

Full scene.json Example

完整 scene.json 示例

json
{
  "ecs7": true,
  "runtimeVersion": "7",
  "display": {
    "title": "My World",
    "description": "A personal 3D space"
  },
  "scene": {
    "parcels": ["0,0"],
    "base": "0,0"
  },
  "main": "bin/index.js",
  "worldConfiguration": {
    "name": "my-name.dcl.eth"
  }
}
json
{
  "ecs7": true,
  "runtimeVersion": "7",
  "display": {
    "title": "My World",
    "description": "A personal 3D space"
  },
  "scene": {
    "parcels": ["0,0"],
    "base": "0,0"
  },
  "main": "bin/index.js",
  "worldConfiguration": {
    "name": "my-name.dcl.eth"
  }
}

World Configuration Options

World 配置选项

Beyond
name
and
placesConfig
,
worldConfiguration
supports skybox and minimap customization:
json
"worldConfiguration": {
  "name": "my-name.dcl.eth",
  "skyboxConfig": {
    "fixedTime": 43200
  },
  "placesConfig": {
    "optOut": false
  }
}
  • skyboxConfig.fixedTime
    — verified against the engine test scenes and current docs.
  • skyboxConfig.textures
    ,
    miniMapConfig
    (
    visible
    /
    dataImage
    /
    estateImage
    ) — [UNVERIFIED: not present in the engine test scenes or the current scene-metadata docs; confirm against js-sdk-toolchain scene schema before relying on them].
skyboxConfig.fixedTime
values:
Values are seconds since midnight; a full day is
86400
.
ValueTime of day
0
Midnight
21600
6 AM (sunrise)
43200
Noon
64800
6 PM (sunset)
86400
Full day (maximum)
Any value above
86400
is interpreted as midnight. Omit
fixedTime
for a dynamic day/night cycle.
worldConfiguration.skyboxConfig.fixedTime
is verified working in the engine test scenes, and takes precedence over a top-level
skyboxConfig.fixedTime
if both are present. See the lighting-environment skill for runtime control (the
SkyboxTime
component, which overrides either JSON value).
除
name
和
placesConfig
外,
worldConfiguration
还支持 skybox 和 minimap 自定义:
json
"worldConfiguration": {
  "name": "my-name.dcl.eth",
  "skyboxConfig": {
    "fixedTime": 43200
  },
  "placesConfig": {
    "optOut": false
  }
}
  • skyboxConfig.fixedTime
    ——已对照引擎测试场景和当前文档进行验证。
  • skyboxConfig.textures
    、
    miniMapConfig
    (
    visible
    /
    dataImage
    /
    estateImage
    )——[未验证:引擎测试场景或当前 scene-metadata 文档中不存在;使用前请对照 js-sdk-toolchain 的 scene schema 确认]。
skyboxConfig.fixedTime
的值:
这些值表示从午夜起经过的秒数;一整天为
86400
。
值一天中的时间
0
午夜
21600
上午 6 点(日出)
43200
正午
64800
下午 6 点(日落)
86400
一整天(最大值)
任何高于
86400
的值都会被解释为午夜。若要使用动态昼夜循环,请省略
fixedTime
。
worldConfiguration.skyboxConfig.fixedTime
已在引擎测试场景中验证可用;如果两者同时存在,它优先于顶层
skyboxConfig.fixedTime
。有关运行时控制,请参阅 lighting-environment skill(
SkyboxTime
component 会覆盖任一 JSON 值)。

Multi-Scene Worlds

多场景 World

A World can host multiple independent scenes, each at different coordinates. The World grows and shrinks dynamically as scenes are added or removed, and gaps between scenes are filled with environment.
Enable via Creator Hub: When publishing, toggle Multi-Scene World (advanced) on the first publish.
Deploy via CLI:
bash
npm run deploy -- --multi-scene --target-content https://worlds-content-server.decentraland.org
After enabling, the World Owner can:
  • Publish additional scenes to different parcels of the same World
  • Add Collaborators with deploy rights (all parcels or specific coordinates)
  • Manage layout via the Layout tab in World Settings (remove scenes, view the World map)
  • Set a World Spawn Position (which parcel players enter on)
Collaborator note: Collaborators with "All Parcels" access can overwrite any scene in the World, including those published by the owner.
To deploy as a collaborator, use the normal
deploy
process — the publishing flow will let you select only the parcels you have access to.
一个 World 可以承载多个彼此独立的场景,每个场景位于不同坐标。随着场景的添加和移除,World 会动态扩展和收缩,场景之间的空隙会由 environment 填充。
通过 Creator Hub 启用: 首次发布时,打开 Multi-Scene World (advanced)。
通过 CLI 部署:
bash
npm run deploy -- --multi-scene --target-content https://worlds-content-server.decentraland.org
启用后,World Owner 可以:
  • 将更多场景发布到同一 World 的不同地块
  • 添加拥有部署权限的 Collaborators(所有地块或特定坐标)
  • 通过 World Settings 中的 Layout 标签页管理布局(移除场景、查看 World 地图)
  • 设置 World Spawn Position(玩家进入 World 时所在的地块)
Collaborator 注意事项: 拥有“All Parcels”访问权限的 Collaborators 可以覆盖 World 中的任何场景,包括 World Owner 发布的场景。
要以 Collaborator 身份部署,请使用常规的
deploy
流程——发布流程会让你选择自己有权访问的地块。

Troubleshooting

故障排查

ErrorCauseSolution
"NAME not found" or "NAME not owned"The wallet signing the deployment doesn't own the NAME/ENS in
worldConfiguration.name
Verify NAME ownership at
https://builder.decentraland.org/names
. The wallet used for signing must own the exact NAME
ENS resolution failsENS domain not registered or expiredCheck ENS registration at
https://app.ens.domains
"Scene too large"Scene exceeds the World storage budget (see Storage Budget above)First add all working files (Blender/FBX sources, concept art, docs) to
.dclignore
at the project root so they aren't uploaded — see the
.dclignore
section in deploy-scene. Then reduce asset sizes. Check remaining budget in the Creator Hub Manage tab or the Builder Worlds tab
Deploy succeeds but world is empty
main
field misconfigured
Ensure
main
is
"bin/index.js"
and code compiles
World not showing on PlacesPropagation delayWait a few minutes after deployment. If opted out via
placesConfig.optOut
, it won't appear
错误原因解决方案
“NAME not found”或“NAME not owned”签署部署的钱包不拥有
worldConfiguration.name
中的 NAME/ENS
在
https://builder.decentraland.org/names
验证 NAME 所有权。用于签名的钱包必须拥有完全匹配的 NAME
ENS 解析失败ENS 域名未注册或已过期在
https://app.ens.domains
检查 ENS 注册状态
“Scene too large”场景超出 World 存储预算(见上文存储预算)首先将所有工作文件(Blender/FBX 源文件、概念图、文档)添加到项目根目录的
.dclignore
中,避免上传——请参阅 deploy-scene 中的
.dclignore
部分。然后缩减资源大小。可在 Creator Hub 的 Manage 标签页或 Builder 的 Worlds 标签页查看剩余预算
部署成功但 World 为空
main
字段配置错误
确保
main
为
"bin/index.js"
,且代码可正常编译
World 未显示在 Places 中传播延迟部署后等待几分钟。如果已通过
placesConfig.optOut
选择退出,则不会显示

Example scenes

示例场景

Deploying to Genesis City instead? See the deploy-scene skill.
改为部署到 Genesis City? 请参阅 deploy-scene skill。

Key Differences from Genesis City

与 Genesis City 的主要区别

  • No parcel limitations — Worlds are not constrained by LAND ownership
  • NAME/ENS required — must own a Decentraland NAME or ENS domain instead of LAND
  • Different deploy target — uses
    --target-content https://worlds-content-server.decentraland.org
  • Auto-listed on Places — unless opted out via
    placesConfig.optOut
  • 无地块限制——World 不受 LAND 所有权约束
  • 必须使用 NAME/ENS——必须拥有 Decentraland NAME 或 ENS 域名,而不是 LAND
  • 部署目标不同——使用
    --target-content https://worlds-content-server.decentraland.org
  • 自动列在 Places 中——除非通过
    placesConfig.optOut
    选择退出