# Publish a Scene

## Before you begin

Make sure of the following:

* Your scene complies with all of the [scene limitations](https://docs.decentraland.org/creator/scenes-sdk7/optimizing/scene-limitations). Most of these are validated each time you run a preview of your scene.
* You have a [Metamask](https://metamask.io/) account, with your LAND parcels or NAME assigned to it.
* You own the necessary amount of adjacent LAND parcels or a Decentraland NAME. Otherwise you can purchase LAND in the [Market](https://market.decentraland.org) or a NAME in the [Builder](https://decentraland.org/builder/names).

{% hint style="warning" %}
**📔 Note**: Multi-parcel scenes can only be deployed to adjacent parcels.
{% endhint %}

Check your [scene's details](https://docs.decentraland.org/creator/get-started/scene-editor-essentials#scene-details), make sure you provide an appealing name, description, thumbnail, categories, etc.

{% hint style="danger" %}
**❗Warning**: When planning live events, make sure you don't make last minute changes to the scene right before the event.

After each publish, an internal process optimizes all 3D models before they can be rendered. This takes around 15 minutes. If you visit the scene before this is done, the scene may appear broken. This process runs even if the 3D models were all previously published.
{% endhint %}

## Publish your scene

To publish your scene:

1. Open your scene in the Scene Editor and click **Publish**. This opens a browser tab, showing details.
2. Select if you want to publish to LAND or to a WORLD. See [Kinds of projects](https://docs.decentraland.org/creator/scenes-sdk7/kinds-of-projects/kinds-of-project) to better understand the different options.

![](https://45449780-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-a9b358ccf604ec11addf4852ce36c321e35745e0%2Fpublish-options.png?alt=media)

3. If publishing to LAND, select the location on the map. You'll see your eligible parcels marked in red. If publishing to a WORLD, you'll see your eligible NAMEs in a dropdown.

{% hint style="info" %}
**💡 Tip**: If you don't see your parcels or NAMEs, make sure you're connected to the Creator Hub using the right user account. Otherwise exit the project and click the user settings icon on the top-right corner, then select **Sign Out** and sign back in again.
{% endhint %}

4. The next screen shows all of the files you're currently uploading and their sizes, confirm the operation.
5. The publication process will then start. Stages **1** and **2** are necessary for your scene to be playable, once done a **Jump In** button appears. You don't need to wait for **Stage 3** to try out your scene. ![](https://45449780-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-0c1d4b674dee7a4aaff9a5f5948d2e09d9697290%2Fdeploy-steps.png?alt=media)

\*\*📔 Note\*\*: The three stages of the deployment involve: - \*\*1. Uploading\*\*: Uploading the files to the servers. - \*\*2. Converting\*\*: The scene's 3D models are compressed into Asset Bundles for faster rendering. This may take 15 minutes or less. It may delay more for very large scenes, or if the servers are currently busy converting other scenes. - \*\*3, Optimizing\*\*: Low Level of Detail (LOD) versions of your assets are generated. These are only used to render your scene from far away, meaning you don't need to wait for this to finish to jump in and test your scene.

## Managing Worlds

The Creator Hub enables World management via the **Manage** tab in its main panel. The **Manage** tab allows World tracking and editing. From here, you can edit World Settings, Permissions, and Scenes.

### World Settings

A World Owner can edit its settings by going into the desired World **Settings** under the **Manage** panel, or by accessing it during the publishing process by clicking on *Settings*\* if **Multi-Scene World (advanced)** is enabled.

![](https://45449780-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-bb63a11fbdb554c529ac25574c8759d1b3dcd226%2Fworld-manage-settings.png?alt=media)

* **Details**: World's general information:
  * World Title
  * Description
  * Age Rating
  * Categories

The information added in **Details** will be shown in Decentraland Places and in the in-world World information once it is published.

* **Layout**: Only accessible in Multi-Scene Worlds. Contains information about all the World's published scenes.
  * Remove individual scenes by clicking the three dots and selecting **Remove from World**.
  * **World Map** shows the World layout and identifies parcels with content and the remaining free parcels.

![](https://45449780-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-39454de29b1b60186f5efdea84d63d78c647b73e%2Fworld-layout.png?alt=media)

* **Misc**: Other useful World configurations:
  * World Spawn Position: This sets up the Parcel (X,Y) in which the user will spawn inside the World. The scene located in that Parcel determines the exact position the user will spawn (for example, Parcel 1,1 is the World Spawn, and the scene in 1,1 has a Spawn point of 1,0,1 **inside that scene**).
  * Skybox settings

{% hint style="info" %}
**📔 Note**: World Settings are only accessible to the World Owner (the address that minted the NAME). For more details about how to obtain a NAME, check the [Marketplace NAMEs section](https://decentraland.org/marketplace/names/claim).
{% endhint %}

### Multi-Scene Worlds

A World can have multiple scenes, published by the World Owner or by other creators. This enables a collaborative environment where each parcel can be managed by different Collaborators.

#### Making a World Multi-Scene

A World Owner can choose to make the World Multi-Scene by toggling **Multi-Scene World (advanced)** when publishing to a single-scene World.

![](https://45449780-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-8baacaaf79f2179539df9961b903d1af1f087797%2Fmulti-scene-owner-first-deploy.png?alt=media)

Once the Multi-Scene World is published, the World Owner can publish additional scenes or add Collaborators to publish within the World.

{% hint style="info" %}
**📔 Note**: A Multi-Scene world size adapts automatically to contain all the published scenes, growing and shrinking dynamically on each publish. The space left between different scenes in the Multi-World is filled with environment.
{% endhint %}

#### Adding Collaborators to a Multi-Scene World

In the **Manage** panel, a World Owner can access the World's **Permissions** by clicking on the three dots. The World Owner can manage collaborators under the **Collaborators** tab.

![](https://45449780-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-e9812621dfd6eb0c624791622ad74281b0a25bbf%2Fworld-settings-collaborators.png?alt=media)

A Collaborator can have deploy rights to All Parcels or to specific Custom Coordinates. Custom Coordinates can be selected and confirmed through an interactive World map, similar to the one in the World Settings.

![](https://45449780-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-bc1f6c8194c28afc1d0d3ca9866ea71fe49df2d5%2Fmulti-scene-custom-coordinates.png?alt=media)

#### Deploying to a Multi-Scene World as a Collaborator

World Collaborators cannot edit its Settings or Permissions. In the **Manage** tab, a creator can see the World they are a Collaborator in but cannot access **Settings** or **Permissions**.

![](https://45449780-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-e48c7da68cdca099b9345fd8b337f77d40eacadc%2Fworld-manage-collaborator.png?alt=media)

When going through the publishing process, the creator can select to publish only to the parcels they are a Collaborator in (as set by the World Owner).

In the **Collaborators** section, if the World Owner set **Custom Coordinates** for the creator, only the assigned parcels will be available for publishing. If access was set to **All Parcels**, the creator will be able to select any parcel in the World to publish their scene.

{% hint style="warning" %}
**📔 Note**: Collaborators with **All Parcels** publishing access can overwrite any scene from the world, even if it was published by the owner or other collaborators.
{% endhint %}

![](https://45449780-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-faffdbc6d04d9b63b2e997d3fb9472720e14dd68%2Fmulti-scene-publish-collaborator.png?alt=media)

### Private Worlds

A WORLD can have different **Access** settings. It can be accessible to anyone, or be restricted in different ways.

#### Setting the Access of a WORLD

In the **Manage** panel, a World Owner can access the World's **Permissions** by clicking on the three dots. The World Owner can manage access restrictions under the **Access** tab.

**Access Types**

A World Owner can choose between three types of **World Access**:

**Public**

Anyone can access the World. This is the default setting of a World.

**Password Protected**

Only users with the password can enter the World.

Passwords must be at least 8 characters long and contain at least 2 numbers. Once created, the password won't be accesible, so make sure to keep a copy.

**Invitation Only**

Only addresses and Communtiies added in the **Approved Addresses** can access the World.

To add new addresses or communities to the **Apporved Addresses**, follow these steps:

1. Click on the **+ New Invite** button.
2. You can add addresses in three different ways:

* **Wallet Address**: Add individual wallets, one at a time.
* **Community**: Search and add any Public Community. This adds **all Community addresses** to the **Addresses Approved**.

![](https://45449780-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-f0c84176bbec94ad9f5409b847c483853a970fa7%2Fworld-access-community.png?alt=media)

* **Import CSV**: Use an existing CSV with a list of addresses or community IDs to add to **Approved Addresses**. The structure is one wallet per line, for example:

```
0x3bA7fD92eC4a1F6B8d2E9c5A7b1D3f6C8e4A2d9F
0xA1c9E4b7D2f6C8a3B5e9F1d4A7c2E6b8D3f9C5a1
```

Once imported, it tracks each Address individually, as sown in the image.

![](https://45449780-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-9552f2e65be4cc8087ea38e5a005e5858ac70b27%2Fworld-access-csv.png?alt=media)

3. After confirming, the address/es are in the **Approved Addresses**.
4. With a new **+ New Invite**, addresses are added to the existing list, helping the World Owner manage and extend the list if needed.

![](https://45449780-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-094bf2e664f45a4618dc31ebd221a514f1fa9327%2Fworld-access-all.png?alt=media)

5. Individual Addresses or set of Addresses (in case of a Community) can be removed by selecting **Delete** on the three dots in the **Approved Addresses** section.

{% hint style="warning" %}
**📔 Note**: If you change the **Access** type from **Invitation Only**, your **Approved Addresses** list will be removed. Make sure to have a copy in case you need it in the future.
{% endhint %}

#### Jumping into Private Worlds

There are different scenearios if a user jumps into a World that doesn't bave **Public** access:

* Their address in the **Approved Addresses**: Will be able to join normally. If not, they will get information that the World is **Invitation Only**.

![](https://45449780-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-fcdb2aa86495de97a3a1ef1edf4bcfe72b28e39f%2Fworld-invitation-only-modal.png?alt=media)

* The World is **Password Protected**: Users will be able to write the password. The maximum limit is ten (10) attempts.

![](https://45449780-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-3a5d3989994f31bc075862fd7d7bc280f78d6860%2Fworld-password-modal.png?alt=media)

## Publish from a hardware wallet

Instead of storing your LAND tokens in a Metamask account, you may find it more secure to store them in a hardware wallet device, such as a [Ledger](https://www.ledger.com/) or a [Trezor](https://trezor.io/), that's physically plugged in to your computer.

If you're using one of these devices, you can link the hardware wallet to Metamask to enable signing messages, while keeping the tokens more secure. See [this article from Metamask](https://metamask.zendesk.com/hc/en-us/articles/360020394612-How-to-connect-a-Trezor-or-Ledger-Hardware-Wallet) for instructions to connect your account.

Once your hardware wallet can be used via Metamask, you can deploy following the same steps as if your tokens were on a Metamask account.

## Scene overwriting

When a new scene is deployed, it overwrites older content that existed on the parcels it occupies.

If a scene that takes up multiple parcels is only partially overwritten by another, all of its parcels are either overwritten or erased.

Suppose you deployed your scene *A* over two parcels *\[100, 100]* and *\[100, 101]*. Then you sell parcel *\[100, 101]* to a user who owns adjacent land and that deploys a large scene (*B*) to several parcels, including *\[100, 101]*.

Your scene *A* can't be partially rendered in just one parcel, so *\[100, 100]* won't display any content. You must build a new version of scene *A* that only takes up one parcel and deploy it to only parcel *\[100, 100]*.

## Alternative servers

### The test server

You can deploy content to the test catalyst server to run full tests with multiple users, the sourrounding scenes, and an environment that is identical to production. The test server is identical to all other catalyst servers, the difference is that the content that is deployed to this server isn't propagated to the others. Content deployed to other servers on the other hand does get propagated to this server, so surrounding scenes should look as they will in production.

{% hint style="warning" %}
**📔 Note**: To deploy to parcels in the test server, you must have the same permissions required to deploy to those parcels in the main network.
{% endhint %}

Players are never directed to this server, the only way to access it is to explicitly provide a URL parameter to connect to it.

If you're working in a confidential project that you don't want to unveil until launch, note that the test server is relatively hidden from players, but anyone explicitly using the test server's URL could potentially run into it.

To publish to the test server, click the **Publish** button normally, then select **Publish to a different server** on the bottom. Then select **Test Server** from the dropdown.

![](https://45449780-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-0eefca17a4e8dfdd4e263b15e1d427370835b58f%2Fpublish-to-test-server.png?alt=media)

## Publish to granted land

If you're publishing to land owned by the Decentraland Foundation that was granted to you via a grant, click the **Publish** button normally, then select **Publish to a different server** on the bottom. Then select **Custom Server** from the dropdown and enter the following server address: `http://linker-server.decentraland.org`.

{% hint style="warning" %}
**📔 Note**: You must first manually set the coordinates of your scene in the advanced tab of the Layout settings. See [Scene Settings](https://docs.decentraland.org/creator/configure/scene-settings#layout) for more info.
{% endhint %}

## Custom servers

You can deploy content to a custom server that doesn't belong to the official DAO-maintained network of catalyst servers. To do this, you don't need to own any LAND or NAME tokens, as you can configure the server to use any validation logic you prefer to control who can deploy where. Custom servers can chose to have content from the official servers, that you can overwrite, or start from a blank slate and publish entirely new content.

To publish to a custom server, click the **Publish** button normally, then select **Publish to a different server** on the bottom. Then select **Custom Server** from the dropdown and enter the address of the server.

See [How to run your own Catalyst Node](https://github.com/decentraland/docs/blob/main/creator/scene-editor/tutorials/how-to-run-a-catalyst.md) for more info on what you can do with your own server and how to set it up.

{% hint style="warning" %}
**📔 Note**: Players will need to manually type in a URL to access your custom server. Certain validations from services like the [rewards server](https://github.com/decentraland/docs/blob/main/creator/scene-editor/rewards/gatting-started.md) or the [quests server](https://github.com/decentraland/docs/blob/main/creator/scene-editor/deprecated/quests/overview.md) might fail in these contexts, as often these services require that the request comes from an official server.
{% endhint %}

Players are never directed to this server, the only way to access it is to explicitly type in the URL to connect to it.

## Verify deployment success

Once you deployed your scene, these changes will take a few minutes to be propagated throughout the various content servers in the network. If you enter Decentraland right after deploying, you might still see the previous version of your content, or that 3D models are missing entirely.

After you sign to authorize the deployment of your scene, the signing dapp will start displaying confirmations that the new version of your content has been propagated throughout all of the servers in the network,

You'll see a list of each of the servers that make up Decentraland's content network. For each server, it specifies the timestamp of the last uploaded change on that parcel. Each one of these servers refers to a different realm, you can reference how these server names map to realm names in the [catalyst monitor screen](https://decentraland.github.io/catalyst-monitor/).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.decentraland.org/creator/scene-editor/publish/publish-scene.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
