关于 deploy-scene
面向 Decentraland Genesis City 场景创作者的部署技能,说明如何检查场景配置并将场景发布到有权限的地块。内容涵盖命令行和 Creator Hub 流程、部署前检查及常见故障处理。
主要功能
- 01检查 scene.json 配置
- 02验证代码与场景预览
- 03通过命令行部署
- 04使用 Creator Hub 发布
- 05排查部署错误
适用场景
- 01将场景发布到 Genesis City 地块
- 02部署前核对场景配置和资源
- 03处理钱包权限或部署失败
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ dcl-regenesislabs/ opendcl --skill deploy-scene安装后在 Claude Code 中输入/deploy-scene确认已加载。
详细介绍
部署到 Genesis City
部署到你拥有或获准部署的特定地块。
使用 /deploy 命令进行部署。它会运行 npx @dcl/sdk-commands deploy 并处理整个流程:
- 构建场景
- 将资源上传到 IPFS
- 部署到指定地块
- 需要拥有 LAND 或部署权限的钱包
要部署到 World? 查看
deploy-worlds技能,了解 Worlds 部署(使用 DCL NAME 或 ENS 域名的个人空间)。
部署前检查清单
部署前,请确认:
-
scene.json 有效:
ecs7: true且runtimeVersion: "7"parcels与你的 LAND 相符(针对 Genesis City)base地块有效main: "bin/index.js"
-
代码可编译:
npx tsc --noEmit -
场景预览正常: 使用
preview工具验证场景是否正常运行(或手动运行npx @dcl/sdk-commands start --bevy-web) -
已安装依赖:
npm install -
资源符合限制——请参阅 optimize-scene 技能,了解按地块数量计算的完整限制公式(三角形、实体、材质、纹理、高度)
部署流程
使用 CLI
# Build first
npx @dcl/sdk-commands build
# Deploy (will open browser for wallet connection)
npx @dcl/sdk-commands deploy
使用 Creator Hub
- 打开 Creator Hub
- 选择你的场景
- 点击“Publish”
- 连接钱包
- 确认交易
用于部署的 scene.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"
}
场景打赏(creator)
允许访客向场景创建者打赏 MANA。添加 creator 字段并填入收款方的钱包地址:
{
"creator": "0x1234567890123456789012345678901234567890"
}
设置后,访客会在左上角看到存钱罐图标。点击后会打开 MANA 打赏窗口。如果该地址关联了 Decentraland NAME,窗口中会显示此名称。每收到一笔打赏,创建者都会收到应用内通知。也可以通过 Creator Hub → 场景 Settings → Details → Creator wallet address 配置。
出生点
配置玩家进入场景时出现的位置:
{
"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 设置玩家出生时摄像头的朝向。
故障排除
| 错误 | 原因 | 解决方案 |
|---|---|---|
| "You don't have permission to deploy" | 钱包不拥有目标 LAND/地块 | 在市场确认 LAND 所有权,或向 LAND 所有者获取部署权限 |
| "Scene is too large" | 资源超出地块大小限制 | 对照上方限制表检查三角形数量、文件大小和纹理数量。请参阅 optimize-scene 技能 |
| 钱包连接失败 | 浏览器弹窗被拦截或 MetaMask 已锁定 | 允许弹窗、解锁 MetaMask,刷新后重试 |
| "Invalid scene.json" | 缺少必填字段或 JSON 格式错误 | 确认 ecs7: true、runtimeVersion: "7"、parcels 数组有效,且 main: "bin/index.js" |
| 部署成功但场景为空 | main 字段未指向编译输出 | 确保 main 为 "bin/index.js",并先运行 npx @dcl/sdk-commands build |
| Catalyst 拒绝部署 | 内容违反 Decentraland 内容政策 | 在 docs.decentraland.org 查看内容指南 |
Genesis City 与 Worlds
| Genesis City | Worlds | |
|---|---|---|
| 要求 | 拥有 LAND 地块 | 拥有 DCL NAME 或 ENS 域名 |
| 地块限制 | 强制执行(每个地块有实体/三角形预算) | 不受 LAND 限制 |
| 可见性 | 显示在 Genesis City 地图上 | 列于 Places 页面(可选择退出) |
| 部署目标 | 默认 Catalyst 网络 | --target-content https://worlds-content-server.decentraland.org |
| 适用场景 | 永久装置、高流量场景 | 测试、个人空间、活动 |
要部署到 World? 请参阅 deploy-worlds 技能。
最佳实践
- 部署前务必在本地预览
- 使用缩略图(
navmapThumbnail)显示在 Genesis City 地图上 - 编写清晰的描述,便于用户发现
- 使用多个浏览器标签页进行测试,以验证多人游戏行为
- 将场景加载时间控制在 15 秒以内(优化资源)