Deploying to Decentraland Worlds
Worlds are personal 3D spaces not tied to LAND. They have no parcel limitations and are automatically listed on the Places page.
Requirements
To publish to a World, the user must own either:
- A Decentraland NAME (e.g., )
- An ENS domain (e.g., )
The wallet signing the deployment must own the NAME, or have been granted permission via 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.
1. Configure scene.json
json
{
"worldConfiguration": {
"name": "my-name.dcl.eth"
}
}
The
field must match a Decentraland NAME or ENS domain owned by the deploying wallet.
Opt out of Places listing
All Worlds are automatically listed on the
Places page. To opt out:
json
{
"worldConfiguration": {
"name": "my-name.dcl.eth",
"placesConfig": {
"optOut": true
}
}
}
2. Deploy
Use the command — it auto-detects the
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
(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
section in the
deploy-scene skill.
Via Creator Hub
- Open the scene project in Creator Hub
- Click the Publish button (top-right corner)
- Select PUBLISH TO WORLD
- Choose which NAME or ENS domain to publish to
3. Access the World
After a successful deploy, the
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:
Full scene.json Example
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
Beyond
and
,
supports skybox and minimap customization:
json
"worldConfiguration": {
"name": "my-name.dcl.eth",
"skyboxConfig": {
"fixedTime": 43200
},
"placesConfig": {
"optOut": false
}
}
- — verified against the engine test scenes and current docs.
- , (//) — [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].
Values are seconds since midnight; a full day is
.
| Value | Time of day |
|---|
| Midnight |
| 6 AM (sunrise) |
| Noon |
| 6 PM (sunset) |
| Full day (maximum) |
Any value above
is interpreted as midnight. Omit
for a dynamic day/night cycle.
worldConfiguration.skyboxConfig.fixedTime
is verified working in the engine test scenes, and takes precedence over a top-level
if both are present. See the
lighting-environment skill for runtime control (the
component, which overrides either JSON value).
Multi-Scene Worlds
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
process — the publishing flow will let you select only the parcels you have access to.
Troubleshooting
| Error | Cause | Solution |
|---|
| "NAME not found" or "NAME not owned" | The wallet signing the deployment doesn't own the NAME/ENS in | Verify NAME ownership at https://builder.decentraland.org/names
. The wallet used for signing must own the exact NAME |
| ENS resolution fails | ENS domain not registered or expired | Check ENS registration at |
| "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 at the project root so they aren't uploaded — see the 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 | field misconfigured | Ensure is and code compiles |
| World not showing on Places | Propagation delay | Wait a few minutes after deployment. If opted out via , it won't appear |
Example scenes
- https://github.com/decentraland/sdk7-test-scenes/tree/main/scenes/3,0-skybox-world-json — a World scene setting a fixed skybox time via
worldConfiguration.skyboxConfig.fixedTime
, and reading it back with .
Deploying to Genesis City instead? See the deploy-scene skill.
Key Differences from 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