deploy-scene

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Deploying to Genesis City

部署到 Genesis City

Deploy to specific parcels you own or have permission to deploy to.
Use the
/deploy
command
to deploy. It runs
npx @dcl/sdk-commands deploy
and handles the full process:
  1. Build the scene
  2. Upload assets to IPFS
  3. Deploy to the specified parcels
  4. Requires a wallet with LAND or deployment permissions
Deploying to a World instead? See the
deploy-worlds
skill for Worlds deployment (personal spaces using DCL NAMEs or ENS domains).
部署到你拥有或有权部署的特定地块。
使用
/deploy
命令
进行部署。它会运行
npx @dcl/sdk-commands deploy
,并处理完整流程:
  1. 构建场景
  2. 将资源上传到 IPFS
  3. 部署到指定地块
  4. 需要拥有 LAND 或部署权限的钱包
要改为部署 World 吗? 有关 Worlds 部署(使用 DCL NAME 或 ENS 域名的个人空间),请参阅
deploy-worlds
skill。

Pre-Deployment Checklist

部署前检查清单

Before deploying, verify:
  1. scene.json is valid:
    • ecs7: true
      and
      runtimeVersion: "7"
    • Correct
      parcels
      matching your LAND (for Genesis City)
    • Valid
      base
      parcel
    • main: "bin/index.js"
  2. Code compiles:
    bash
    npx tsc --noEmit
  3. Scene previews correctly: Use the
    preview
    tool to verify the scene works (or
    npx @dcl/sdk-commands start
    manually, optionally with
    --web
    to preview in the Bevy Web browser client). Test with multiple browser tabs to verify multiplayer behavior.
  4. Dependencies installed:
    bash
    npm install
  5. Assets are within limits — see the optimize-scene skill for full limit formulas per parcel count (triangles, entities, materials, textures, height). Keep scene load time under 15 seconds by optimizing assets.
  6. .dclignore
    covers all working files
    — Blender/FBX sources, concept art, spreadsheets, markdown docs, etc. must not be uploaded. See the
    .dclignore
    section below.
部署前,请确认:
  1. scene.json 有效:
    • ecs7: true
      且
      runtimeVersion: "7"
    • parcels
      与你的 LAND 正确匹配(适用于 Genesis City)
    • 有效的
      base
      地块
    • main: "bin/index.js"
  2. 代码可编译:
    bash
    npx tsc --noEmit
  3. 场景预览正常: 使用
    preview
    工具确认场景能够正常运行(也可手动运行
    npx @dcl/sdk-commands start
    ,并可选用
    --web
    在 Bevy Web 浏览器客户端中预览)。使用多个浏览器标签页进行测试,以验证多人游戏行为。
  4. 依赖已安装:
    bash
    npm install
  5. 资源未超出限制——有关按地块数量计算的完整限制公式(三角形、实体、材质、纹理、高度),请参阅 optimize-scene skill。通过优化资源,将场景加载时间保持在 15 秒以内。
  6. .dclignore
    覆盖所有工作文件
    ——Blender/FBX 源文件、概念设计稿、电子表格、Markdown 文档等不得上传。请参阅下方的
    .dclignore
    部分。

Deployment Process

部署流程

Using CLI

使用 CLI

bash
undefined
bash
undefined

Build first

Build first

npx @dcl/sdk-commands build
npx @dcl/sdk-commands build

Deploy (will open browser for wallet connection)

Deploy (will open browser for wallet connection)

npx @dcl/sdk-commands deploy
undefined
npx @dcl/sdk-commands deploy
undefined

Using Creator Hub

使用 Creator Hub

  1. Open Creator Hub
  2. Select your scene
  3. Click "Publish"
  4. Connect wallet
  5. Confirm transaction
  1. 打开 Creator Hub
  2. 选择你的场景
  3. 点击 "Publish"
  4. 连接钱包
  5. 确认交易

scene.json for Deployment

部署用的 scene.json

json
{
  "ecs7": true,
  "runtimeVersion": "7",
  "display": {
    "title": "My Awesome Scene",
    "description": "A description for the marketplace",
    "navmapThumbnail": "images/thumbnail.png"
  },
  "scene": {
    "parcels": ["0,0", "0,1"],
    "base": "0,0"
  },
  "main": "bin/index.js"
}
display.navmapThumbnail
sets the image shown for the scene on the Genesis City map — always provide one, and write a clear
display.description
for discovery.
json
{
  "ecs7": true,
  "runtimeVersion": "7",
  "display": {
    "title": "My Awesome Scene",
    "description": "A description for the marketplace",
    "navmapThumbnail": "images/thumbnail.png"
  },
  "scene": {
    "parcels": ["0,0", "0,1"],
    "base": "0,0"
  },
  "main": "bin/index.js"
}
display.navmapThumbnail
设置 Genesis City 地图上显示的场景图片——务必提供该图片,并编写清晰的
display.description
以便于用户发现场景。

Spawn Points

出生点(Spawn Points)

Configure where players appear when entering the scene:
json
{
  "spawnPoints": [
    {
      "name": "spawn1",
      "default": true,
      "position": { "x": [1, 5], "y": [0, 0], "z": [2, 4] },
      "cameraTarget": { "x": 8, "y": 1, "z": 8 }
    }
  ]
}
Position ranges (e.g.,
[1, 5]
) spawn players randomly within the range. Use
cameraTarget
to orient the player's camera on spawn.
配置玩家进入场景时的出生位置:
json
{
  "spawnPoints": [
    {
      "name": "spawn1",
      "default": true,
      "position": { "x": [1, 5], "y": [0, 0], "z": [2, 4] },
      "cameraTarget": { "x": 8, "y": 1, "z": 8 }
    }
  ]
}
位置范围(例如
[1, 5]
)会让玩家在范围内随机出生。使用
cameraTarget
设置玩家出生时摄像机的朝向。

.dclignore — Exclude Files from Upload

.dclignore——排除上传文件

The
.dclignore
file, always at the project root, lists files and patterns that are NOT uploaded to the content server when deploying. Everything in the project folder that isn't matched by
.dclignore
gets uploaded, and the uploaded total counts against the per-parcel MB limits — so only files the running scene actually needs should be deployed.
Format: one glob pattern per line. The default from scene templates:
.*
package-lock.json
yarn-lock.json
build.json
export
tsconfig.json
tslint.json
node_modules
*.ts
*.tsx
.vscode
Dockerfile
dist
README.md
*.blend
*.fbx
*.zip
*.rar
*.md
src
Keep it up to date as the project grows. Whenever working files exist in the project — Blender or other 3D source files, draft models, concept art, PSDs, spreadsheets, markdown notes, reference photos — add them (or their extensions) to
.dclignore
so the deployed scene stays as light as possible. When creating or editing a scene, add these patterns proactively; don't wait for the deploy to fail. Common additions:
*.blend
*.blend1
*.fbx
*.psd
*.kra
*.xcf
*.md
*.csv
*.xlsx
drafts
concept-art
reference
If a deploy fails with "Scene is too large", checking
.dclignore
is the first step: working files are often the bulk of the excess, and excluding them reduces upload size with zero impact on the scene.
Never ignore files the scene needs at runtime:
bin/index.js
,
scene.json
,
assets/
(composites, .glb models, textures, sounds, video), thumbnails referenced in
scene.json
, or any file path referenced in code. Note the default ignores
*.ts
/
src
— only the compiled
bin/index.js
runs, so source code is never needed in the upload.
位于项目根目录的
.dclignore
文件会列出部署时不上传到内容服务器的文件和模式。项目文件夹中所有未被
.dclignore
匹配的内容都会被上传,而上传总量会计入每个地块的 MB 限制,因此只应部署运行场景实际需要的文件。
格式:每行一个 glob 模式。场景模板中的默认配置如下:
.*
package-lock.json
yarn-lock.json
build.json
export
tsconfig.json
tslint.json
node_modules
*.ts
*.tsx
.vscode
Dockerfile
dist
README.md
*.blend
*.fbx
*.zip
*.rar
*.md
src
随着项目扩展,请保持该文件为最新状态。 每当项目中存在工作文件时——例如 Blender 或其他 3D 源文件、草稿模型、概念设计稿、PSD、电子表格、Markdown 笔记或参考照片——都应将它们(或其扩展名)添加到
.dclignore
,让部署的场景尽可能轻量。创建或编辑场景时,应主动添加这些模式;不要等到部署失败后再处理。常见补充项如下:
*.blend
*.blend1
*.fbx
*.psd
*.kra
*.xcf
*.md
*.csv
*.xlsx
drafts
concept-art
reference
如果部署因 "Scene is too large" 而失败,应首先检查
.dclignore
:工作文件通常占超出部分的大部分,排除它们可以在不影响场景的情况下缩减上传大小。
切勿忽略场景运行时需要的文件:
bin/index.js
、
scene.json
、
assets/
(合成资源、
.glb
模型、纹理、声音、视频)、
scene.json
中引用的缩略图,或代码中引用的任何文件路径。请注意,默认配置会忽略
*.ts
/
src
——只有编译后的
bin/index.js
会运行,因此上传时不需要源代码。

Troubleshooting

故障排除

ErrorCauseSolution
"You don't have permission to deploy"Wallet doesn't own the target LAND/parcelsVerify LAND ownership on the marketplace, or get deployment permissions from the LAND owner
"Scene is too large"Assets exceed parcel size limitsFirst add all working files (Blender/FBX sources, concept art, docs) to
.dclignore
— see the
.dclignore
section above. Then check triangle count, file sizes, and texture counts against the limits. See optimize-scene skill
Wallet connection failsBrowser popup blocked or MetaMask lockedAllow popups, unlock MetaMask, refresh and try again
"Invalid scene.json"Missing required fields or malformed JSONVerify
ecs7: true
,
runtimeVersion: "7"
, valid
parcels
array, and
main: "bin/index.js"
Deploy succeeds but scene is empty
main
field doesn't point to compiled output
Ensure
main
is
"bin/index.js"
and run
npx @dcl/sdk-commands build
first
Catalyst rejectionContent violates Decentraland content policiesReview content guidelines at docs.decentraland.org
错误原因解决方案
"You don't have permission to deploy"钱包并不拥有目标 LAND/地块在 marketplace 中验证 LAND 所有权,或向 LAND 所有者获取部署权限
"Scene is too large"资源超过地块大小限制首先将所有工作文件(Blender/FBX 源文件、概念设计稿、文档)添加到
.dclignore
——见上方的
.dclignore
部分。然后根据限制检查三角形数量、文件大小和纹理数量。请参阅 optimize-scene skill
"Wallet connection fails"浏览器弹窗被阻止或 MetaMask 处于锁定状态允许弹出窗口、解锁 MetaMask,然后刷新并重试
"Invalid scene.json"缺少必填字段或 JSON 格式错误确认
ecs7: true
、
runtimeVersion: "7"
、有效的
parcels
数组,以及
main: "bin/index.js"
"Deploy succeeds but scene is empty"
main
字段未指向编译输出
确保
main
为
"bin/index.js"
,并先运行
npx @dcl/sdk-commands build
"Catalyst rejection"内容违反 Decentraland 内容政策查看 docs.decentraland.org 上的内容指南

Genesis City vs Worlds

Genesis City 与 Worlds

Genesis CityWorlds
RequirementOwn LAND parcelsOwn DCL NAME or ENS domain
Parcel limitsEnforced (entity/triangle budgets per parcel)Not constrained by LAND
VisibilityShown on the Genesis City mapListed on Places page (opt-out available)
Deploy targetDefault Catalyst network
--target-content https://worlds-content-server.decentraland.org
Best forPermanent installations, high-traffic scenesTesting, personal spaces, events
Deploying to a World instead? See the deploy-worlds skill.
Genesis CityWorlds
要求拥有 LAND 地块拥有 DCL NAME 或 ENS 域名
地块限制强制执行(每个地块的实体/三角形预算)不受 LAND 约束
可见性显示在 Genesis City 地图中列于 Places 页面(可选择不展示)
部署目标默认使用 Catalyst 网络
--target-content https://worlds-content-server.decentraland.org
适用场景永久性设施、高流量场景测试、个人空间、活动
要改为部署 World 吗? 请参阅 deploy-worlds skill。

Scene Tipping

场景打赏

Let visitors send MANA tips to the scene creator. Add a
creator
field to
scene.json
:
json
{
  "creator": "0x1234567890123456789012345678901234567890"
}
When set, a piggy bank icon appears in the top-left for visitors. Clicking it opens a MANA tip modal. If the address is linked to a Decentraland NAME, the name is shown in the modal. Creators receive an in-app notification for each tip.
Can also be configured via Creator Hub → scene Settings → Details → Creator wallet address.
允许访问者向场景创作者发送 MANA 打赏。在
scene.json
中添加
creator
字段:
json
{
  "creator": "0x1234567890123456789012345678901234567890"
}
设置后,访问者界面左上角会显示一个存钱罐图标。点击该图标会打开 MANA 打赏弹窗。如果该地址关联了 Decentraland NAME,弹窗中会显示该名称。创作者每收到一次打赏都会收到应用内通知。
也可通过 Creator Hub → scene Settings → Details → Creator wallet address 进行配置。