mcpField
D
deploy-scene

deploy-scene

github.com/dcl-regenesislabsCloud & DevOps1737 installsUpdated 21w ago
Repository

About deploy-scene

A deployment skill for Decentraland Genesis City scene creators. It covers configuration checks, publishing to parcels with deployment permission through the CLI or Creator Hub, and troubleshooting common failures.

Key features

  1. 01Check scene.json configuration
  2. 02Verify code and scene preview
  3. 03Deploy through the CLI
  4. 04Publish with Creator Hub
  5. 05Troubleshoot deployment errors

Use cases

  1. 01Publish a scene to Genesis City parcels
  2. 02Check scene setup and assets before deployment
  3. 03Resolve wallet permission or deployment failures

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/dcl-regenesislabs/opendcl --skill deploy-scene

After installing, type/deploy-scenein Claude Code to confirm it loaded.

Details

From the project README

Deploying to 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).

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:

    npx tsc --noEmit
    
  3. Scene previews correctly: Use the preview tool to verify the scene works (or npx @dcl/sdk-commands start --bevy-web manually)

  4. Dependencies installed:

    npm install
    
  5. Assets are within limits — see the optimize-scene skill for full limit formulas per parcel count (triangles, entities, materials, textures, height)

Deployment Process

Using CLI
# Build first
npx @dcl/sdk-commands build

# Deploy (will open browser for wallet connection)
npx @dcl/sdk-commands deploy
Using Creator Hub
  1. Open Creator Hub
  2. Select your scene
  3. Click "Publish"
  4. Connect wallet
  5. Confirm transaction

scene.json for Deployment

{
  "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"
}
Scene Tipping (creator)

Let visitors send MANA tips to the scene creator. Add a creator field with the recipient's wallet address:

{
  "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. Also configurable via Creator Hub → scene Settings → Details → Creator wallet address.

Spawn Points

Configure where players appear when entering the scene:

{
  "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.

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 limitsCheck triangle count, file sizes, and texture counts against the limits table above. 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 emptymain field doesn't point to compiled outputEnsure 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
Genesis City vs 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.

Best Practices

  • Always preview locally before deploying
  • Use a thumbnail image (navmapThumbnail) for the Genesis City map
  • Write a clear description for discovery
  • Test with multiple browser tabs to verify multiplayer behavior
  • Keep scene load time under 15 seconds (optimize assets)

Comments

Markdown supported