> For the complete documentation index, see [llms.txt](https://docs.decentraland.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.decentraland.org/creator/content-creator-es/escenas-sdk7/publicacion/publishing.md).

# Publicación

## Antes de comenzar

Asegúrate de lo siguiente:

* Tu escena cumple con todas las [limitaciones de la escena](/creator/content-creator-es/escenas-sdk7/optimizacion/scene-limitations.md). La mayoría de estas se validan cada vez que ejecutas una vista previa de tu escena.
* Si quieres que tu scene funcione bien para los jugadores móviles, prévisualízala y pruébala primero en un dispositivo real — mira [Building for Mobile](/creator/content-creator-es/escenas-sdk7/desarrollar-para-movil/building-for-mobile.md) y [Preview en mobile](/creator/content-creator-es/escenas-sdk7/desarrollar-para-movil/preview-on-mobile.md). Una vez publicada, tu scene será accesible desde la app móvil de Decentraland de la misma manera que desde desktop.
* Tienes una [Metamask](https://metamask.io/) account, con tus parcelas de LAND asignadas a ella.
* Posees la cantidad necesaria de parcelas de LAND adyacentes o un NAME de Decentraland. De lo contrario, puedes comprar LAND en el [Mercado](https://market.decentraland.org) o un NAME en el [Builder](https://decentraland.org/builder/names).

{% hint style="warning" %}
\*\*📔 Nota\*\*: Las scenes de múltiples parcelas solo pueden desplegarse en parcelas adyacentes.
{% endhint %}

{% hint style="danger" %}
**❗Advertencia**: Cuando planifiques eventos en vivo, asegúrate de no hacer cambios de último minuto en la escena justo antes del evento.

Después de cada publicación, un proceso interno optimiza todos los modelos 3D antes de que puedan renderizarse. Esto tarda alrededor de 15 minutos. Si visitas la escena antes de que esto termine, la escena puede parecer rota. Este proceso se ejecuta incluso si todos los modelos 3D ya se publicaron anteriormente.
{% endhint %}

## Ver datos de la scene

Al desplegar, la CLI lee información del *scene.json* archivo para determinar dónde desplegar tu scene.

Abre el *scene.json* archivo de tu scene y completa los siguientes datos:

* **title**: El título se muestra en la UI debajo del mini-map, cada vez que los jugadores entran en tu scene. También se muestra en el popup de teleport.
* **description**: Una descripción de lo que los jugadores encontrarán en tu scene. Esto se muestra en el popup de teleport.
* **navmapThumbnail**: Una imagen que representa tu scene. Esto se muestra en el popup de teleport. La imagen debe ser un *.png* ni *.jpg* imagen con un tamaño recomendado de *228x160* píxeles.
* **Parcels**: Las coordenadas de las parcelas que serán ocupadas por tu scene
* **Base**: Las coordenadas de la parcela que se considerará la coordenada \[0,0] de la scene. Si tu scene tiene múltiples parcelas, debería ser la parcela inferior izquierda (suroeste).
* **spawnPoints**: Un conjunto de coordenadas dentro de la scene (relativas a la parcela base de la scene) donde aparecen los jugadores. De forma predeterminada, los jugadores aparecen en la *0,0,0* ubicación de la scene (esquina inferior izquierda). Usa esto para iniciar a los jugadores en una ubicación específica, o establece una región para evitar que los jugadores se solapen entre sí cuando aparecen por primera vez.
* **tags**: Un conjunto de etiquetas que describen tu scene. Esto ayuda a los jugadores a explorar Decentraland facilitando encontrar el contenido que les interesa. [Ver la lista de categorías disponibles](/creator/content-creator-es/escenas-sdk7/tipos-de-proyectos/scene-metadata.md#categories).
* **rating**: Esto se usa para clasificar el contenido de tu scene. Decentraland es una plataforma para mayores de 18, así que el valor a establecer es `A` para Adultos. Ver [Age Rating](/creator/content-creator-es/escenas-sdk7/tipos-de-proyectos/scene-metadata.md#age-rating).

{% hint style="warning" %}
**📔 Nota**: Ver [scene metadata](/creator/content-creator-es/escenas-sdk7/tipos-de-proyectos/scene-metadata.md) para más detalles sobre cómo configurar estos parámetros.
{% endhint %}

## Para publicar la scene

### Usando el Scene Editor en Creator Hub

El Scene Editor en Creator Hub ofrece una forma sencilla de publicar tus scenes. Asegúrate de haber [instalado Creator Hub](/creator/content-creator-es/scene-editor/empezar/editor-installation.md).

1. Abre el proyecto de tu scene.
2. Haz clic en el **Publish** botón en la esquina superior derecha.
3. Aparecerá un aviso preguntándote si quieres publicar en un **WORLD** o en **LAND**.
   * Selecciona **PUBLICAR EN WORLD** para hacer que tu scene esté disponible en uno de tus [WORLDs](/creator/content-creator-es/escenas-sdk7/publicacion/publishing-options.md#decentraland-worlds). Luego selecciona en cuál de tus NAMEs o dominios ENS quieres publicar.
   * Selecciona **PUBLICAR EN LAND** si eres propietario de land, o si se te han otorgado permisos de despliegue por un propietario. Luego selecciona las parcelas donde quieres desplegarlo en el mapa. Las parcelas en las que puedes desplegar se muestran en rosa.
   * Selecciona **Servidores alternativos** para publicar en el [servidor de prueba](#the-test-server) o un [servidor personalizado](#custom-servers).

![](/files/5138c3461c88ed60cf52f30b0863be50396eb069)

4. Esto abre una nueva pestaña en tu navegador, mostrando detalles sobre la carga. Firma el despliegue con tu wallet. Esto es solo una firma para probar la propiedad; es gratis y no implica ninguna transacción en blockchain.
   * Para LAND en una cuenta de Metamask en el navegador, confirma el despliegue. Luego firma el mensaje en la extensión del navegador de Metamask.
   * Para LAND vinculado a una wallet que puedes usar mediante Wallet Connect, haz clic en **Connect wallet**, luego escanea el código QR con tu dispositivo móvil y sigue los pasos en Wallet Connect.

### Vía la CLI

1. Inicia sesión en tu cuenta de Metamask con la misma dirección pública asociada a tus parcelas en Decentraland.
2. Ejecuta `npm run deploy` desde la carpeta de la scene.

{% hint style="info" %}
\*\*💡 Consejo\*\*: Si hay archivos en la carpeta de tu proyecto que no quieres desplegar, inclúyelos en el archivo \_.dclignore\_ antes de desplegar.
{% endhint %}

3. Se abrirá una pestaña del navegador que mostrará a qué parcelas estás desplegando. Haz clic en **Sign and Deploy**.
4. Metamask se abrirá, notificándote que se solicita tu firma. Haz clic en **Sign** para confirmar esta acción.

{% hint style="info" %}
**💡 Consejo**: Si estás implementando un flujo de integración continua, donde los cambios en tu scene se despliegan automáticamente, entonces puedes establecer la variable de entorno `export DCL_PRIVATE_KEY` en la clave privada de una cuenta que tenga permisos de despliegue.
{% endhint %}

{% hint style="info" %}
**💡 Consejo**: `npm run deploy` ejecuta un `npm run build`, que comprueba los errores de tipo en la scene de forma más estricta que al ejecutar `npm run start`. Si estos errores no pueden evitarse (por ejemplo: ocurren en una biblioteca externa) y no afectan a la scene, puedes usar `npm run deploy -- --skip-build` para omitir el `npm run build` paso y desplegar la scene tal como está.
{% endhint %}

## Publicar en Worlds

Para publicar tu scene en un Decentraland World, necesitas poseer un Decentraland NAME o un dominio ENS. Ver [Publishing Options](/creator/content-creator-es/escenas-sdk7/publicacion/publishing-options.md#decentraland-worlds) para obtener información sobre cómo conseguir uno.

### Configurar scene.json

Necesitas especificar bajo qué **nombre** se realizará tu despliegue. Añade la siguiente sección en tu `scene.json`:

```json
{
	"worldConfiguration": {
		"name": "my-name.dcl.eth"
	}
}
```

El **nombre** especificado en el `scene.json` puede ser tanto un Decentraland NAME como un dominio ENS. Debe pertenecer a la wallet que firma el despliegue, o a cualquier wallet a la que se le haya concedido permiso mediante Access Control Lists (ACL).

Ten en cuenta lo siguiente:

* La wallet que firma el despliegue debe ser propietaria del NAME especificado en el `scene.json` archivo
* La scene no tiene limitaciones de parcelas (desde enero de 2023)
* Todos los Worlds se incluyen automáticamente en la página de Places, a menos que optes por no hacerlo, como se detalla a continuación

### Worlds de múltiples scenes

De forma predeterminada, al desplegar en un World vía la CLI, tu scene se tratará como un World de una sola scene. Si tu World ya contiene una scene, desplegar una nueva scene sobrescribirá esa scene anterior, aunque las coordenadas sean diferentes.

Para desplegar como un World de múltiples scenes, añade el parámetro `--multi-scene` al comando de despliegue:

`npm run deploy -- --multi-scene --target-content https://worlds-content-server.decentraland.org`

Al usar este parámetro, si la scene que publicas tiene coordenadas diferentes de las scenes existentes en ese World, todas esas scenes existirán juntas.

{% hint style="warning" %}
\*\*📔 Nota\*\*: Si tienes derechos de operador sobre un World que no te pertenece, y se te otorgan derechos solo sobre parcelas específicas de ese World, solo podrás publicar en esas parcelas y no podrás afectar el contenido de otras parcelas del World.
{% endhint %}

### No aparecer en la lista de Places

Si deseas que tus Worlds no se indexen en Places, puedes añadir la siguiente sección en tu `scene.json`:

```json
{
	"worldConfiguration": {
		"name": "my-name.dcl.eth",
		"placesConfig": {
			"optOut": true
		}
	}
}
```

### Usando el Scene Editor en Creator Hub

1. Abre el proyecto de tu scene.
2. Haz clic en el **Publish** botón en la esquina superior derecha.
3. Selecciona **PUBLICAR EN WORLD**.
4. Selecciona en cuál de tus NAMEs o dominios ENS quieres publicar.

### Vía la CLI

Usa el siguiente comando:

```bash
npm run deploy -- --target-content https://worlds-content-server.decentraland.org
```

Una vez que ejecutes el comando, se te pedirá que firmes el despliegue con tu wallet y se ejecutará un conjunto de validaciones para permitir o rechazar la scene.

### Acceder a un World

Una vez que una scene se ha cargado en el servidor de Worlds, puedes acceder a ella usando el Decentraland Explorer con la siguiente URL: `decentraland://?realm=NAME.dcl.eth`, donde `NAME` debe reemplazarse por el Decentraland NAME o el dominio ENS al que desplegaste.

Con Decentraland ya abierto, también puedes ir a un World escribiendo el `/goto NAME.dcl.eth` comando en el chatbox.

Consulta [Hacer descubrible](/creator/content-creator-es/escenas-sdk7/publicacion/make-discoverable.md) para más información sobre cómo hacer que tu World sea descubrible.

### Migrar un World a Genesis City

Si eres propietario de LAND y deseas desplegar una scene de World en Genesis City, puedes hacerlo volviendo a desplegar tu scene en la red descentralizada de Catalyst, que es el servidor de contenido para Genesis City.

Cosas que recordar:

* Elimina la `worldConfiguration` sección de `scene.json`
* La limitación de tamaño para Worlds (dinámica según las tenencias) es diferente de la de las parcelas de LAND (15 MB por parcela), así que asegúrate de que tu scene tenga el tamaño correcto para los despliegues en Genesis City.

## Publicar desde una hardware wallet

En lugar de almacenar tus tokens LAND en una cuenta de Metamask, quizá te resulte más seguro almacenarlos en un dispositivo de wallet de hardware, como un [Ledger](https://www.ledger.com/) o un [Trezor](https://trezor.io/), que está conectado físicamente a tu ordenador.

Si usas uno de estos dispositivos, puedes vincular la wallet de hardware a Metamask para habilitar la firma de mensajes, manteniendo los tokens más seguros. Consulta [este artículo de Metamask](https://metamask.zendesk.com/hc/en-us/articles/360020394612-How-to-connect-a-Trezor-or-Ledger-Hardware-Wallet) para obtener instrucciones para conectar tu cuenta.

Una vez que tu wallet de hardware pueda usarse a través de Metamask, puedes desplegar siguiendo los mismos pasos que si tus tokens estuvieran en una cuenta de Metamask.

## Sobrescritura de scene

Cuando se despliega una nueva escena, sobrescribe el contenido anterior que existía en las parcelas que ocupa.

Si otra escena sobrescribe solo parcialmente una escena que ocupa varias parcelas, todas sus parcelas quedan sobrescritas o eliminadas.

Supón que desplegaste tu escena *A* sobre dos parcelas *\[100, 100]* y *\[100, 101]*. Luego vendes la parcela *\[100, 101]* a un usuario que posee terrenos adyacentes y que despliega una escena grande (*B*) en varias parcelas, incluida *\[100, 101]*.

Tu escena *A* no puede renderizarse parcialmente en una sola parcela, así que *\[100, 100]* no mostrará ningún contenido. Debes crear una nueva versión de la escena *A* que ocupe solo una parcela y desplegarla solo en la parcela *\[100, 100]*.

## Qué son los content servers

Los content servers son una red de servidores propiedad de la comunidad con un filesystem cuyo contenido se direcciona por contenido, lo que significa que cada archivo se identifica por su contenido, no por un nombre de archivo arbitrario.

Usamos los content servers para alojar y distribuir todo el contenido de las scenes de una manera similar a BitTorrent, manteniendo distribuida la red de Decentraland.

1. Los content servers almacenan y distribuyen todos los assets necesarios para renderizar tus scenes.
2. El `npm run deploy` comando vincula estos assets a la parcela de LAND especificada en tu **scene.json** archivo. Cada vez que vuelves a desplegar tu scene, los content servers actualizan sus registros para apuntar las parcelas al contenido más reciente. Desplegar no implica ninguna transacción en blockchain; solo firmas la nueva entidad de la scene con tu wallet para probar la propiedad.

La información en cada copia del servidor es verificable, ya que cada scene está firmada por el hash del propietario de LAND. Esto significa que alguien que hospede una copia del servidor no podrá manipular el contenido para mostrar algo ilegítimo. La comunidad también puede votar para aprobar o eliminar cualquiera de estos servidores usando la DAO.

## El servidor de prueba

Puedes desplegar contenido en el servidor de prueba de catalyst para realizar pruebas completas con múltiples usuarios, las scenes circundantes y un entorno idéntico al de producción. El servidor de prueba es idéntico a todos los demás servidores catalyst. La diferencia es que el contenido desplegado en este servidor no se propaga a los demás. Sin embargo, el contenido desplegado en otros servidores sí se propaga a este servidor, por lo que las scenes circundantes deberían verse como lo harán en producción.

{% hint style="warning" %}
**📔 Nota**: Para desplegar en parcelas del servidor de prueba, debes tener los mismos permisos necesarios para desplegar en esas parcelas en la red principal.
{% endhint %}

A los jugadores nunca se les dirige a este servidor; la única forma de acceder a él es proporcionar explícitamente un parámetro URL para conectarse.

Si estás trabajando en un proyecto confidencial que no quieres revelar hasta el lanzamiento, ten en cuenta que el servidor de prueba está relativamente oculto para los jugadores, pero cualquiera que use explícitamente la URL del servidor de prueba podría encontrárselo.

### Vía la CLI

Para desplegar en el servidor de prueba, ejecuta:

`npm run deploy -- --target peer-testing.decentraland.org`

Para entrar al content server, añade `&CATALYST=peer-testing.decentraland.org` a la URL de Decentraland

*<https://play.decentraland.org/?CATALYST=peer-testing.decentraland.org>*

## Servidores personalizados

Puedes desplegar contenido en un servidor personalizado que no pertenece a la red oficial de servidores catalyst mantenida por la DAO. Para hacerlo, no necesitas poseer ningún token de LAND o NAME, ya que puedes configurar el servidor para usar cualquier lógica de validación que prefieras para controlar quién puede desplegar dónde. Los servidores personalizados pueden elegir incluir contenido de los servidores oficiales (que puedes sobrescribir), o empezar desde cero y publicar contenido completamente nuevo.

Ver el [repositorio catalyst-owner](https://github.com/decentraland/catalyst-owner) para más información sobre lo que puedes hacer con tu propio servidor y cómo configurarlo.

{% hint style="warning" %}
**📔 Nota**: Los jugadores tendrán que escribir manualmente una URL para acceder a tu servidor personalizado. Ciertas validaciones de servicios como el [servidor de recompensas](/creator/content-creator-es/recompensas/getting-started.md) podrían fallar en estos contextos, ya que a menudo estos servicios requieren que la solicitud provenga de un servidor oficial.
{% endhint %}

A los jugadores nunca se les dirige a este servidor; la única forma de acceder a él es escribir explícitamente la URL para conectarse a él.

### Vía la CLI

Para desplegar en un servidor personalizado, ejecuta:

`npm run deploy -- --target <DOMINIO DEL SERVIDOR PERSONALIZADO>`

La URL para entrar a tu scene desplegada en tu servidor personalizado dependerá del dominio donde se aloje.

## Verificar el éxito del despliegue

Una vez que hayas desplegado tu scene, estos cambios tardarán unos minutos en propagarse por los distintos content servers de la red. Si entras en Decentraland justo después de desplegar, puede que todavía veas la versión anterior de tu contenido, dependiendo del realm en el que entres.

Después de firmar para autorizar el despliegue de tu scene, la dapp de firma empezará a mostrar confirmaciones de que la nueva versión de tu contenido se ha propagado por todos los servidores de la red.

Verás una lista de cada uno de los servidores que componen la red de contenido de Decentraland. Para cada servidor, se especifica la marca de tiempo del último cambio cargado en esa parcela. Cada servidor corresponde a un realm diferente. Puedes ver cómo se asignan estos nombres de servidor a los nombres de realm en el [pantalla de monitorización de catalyst](https://decentraland.github.io/catalyst-monitor/).

También puedes obtener esta información en cualquier momento ejecutando el siguiente comando en la consola de línea de comandos:

`npx @dcl/opscli pointer-consistency --pointer 0,0`

{% hint style="warning" %}
**📔 Nota**: Usa las coordenadas de tu scene en lugar de `0,0`. Si tu scene tiene múltiples parcelas, cualquiera de sus parcelas producirá la misma salida. Si las coordenadas comienzan con un número negativo, añade una `\` al inicio de las coordenadas para evitar que el `-` carácter sea interpretado incorrectamente por la línea de comandos.
{% endhint %}

## Despliegues automáticos

Si realizas cambios con regularidad en el contenido de tu scene y quieres implementar un flujo de publicación ágil, puedes automatizar el despliegue de tu scene mediante una acción de GitHub.

Para ello, primero debes guardar tu scene en un proyecto de GitHub. Luego puedes configurar una [acción de GitHub](https://docs.github.com/en/actions) con el siguiente script, que se ejecuta cada vez que hay una fusión en la `main` rama. El script instala las dependencias, compila el proyecto y luego lo despliega en Decentraland.

```yaml
name: Desplegar en DCL PROD

on:
  push:
    branches:
      - main

env:
  DCL_PRIVATE_KEY: ${{ secrets.DCL_PRIVATE_KEY }}

jobs:
  deploy:
    name: Desplegar
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Instalar paquetes npm
        run: |
          npm install
      - name: Compilar scene
        run: |
          npm run build
      - name: Desplegar scene
        run: |
          npm run deploy
```

> Importante: Para que este proceso se ejecute, debes establecer la clave privada de una wallet como variable de entorno en GitHub, que se usará para firmar el despliegue. Como siempre, ten mucho cuidado de mantener seguras las claves privadas. NO uses la clave privada de la cuenta que realmente posee los tokens de land, ya que eso supondría importantes riesgos de seguridad. En su lugar, delega los derechos de operador a una wallet desechable que no posea tokens valiosos. Si esta clave privada llegara a filtrarse, puedes revocar fácilmente esos derechos de operador de la cuenta y configurar una nueva wallet.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.decentraland.org/creator/content-creator-es/escenas-sdk7/publicacion/publishing.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
