> 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/scenes-sdk7/publicacion/publishing.md).

# Publicación

¿Cómo publico mi proyecto?

## Antes de comenzar

Asegúrate de lo siguiente:

* Tu scene cumple con todas las [limitaciones de la escena](/creator/content-creator-es/scenes-sdk7/optimizacion/scene-limitations.md). La mayoría de ellas se validan cada vez que ejecutas un preview de tu escena.
* Si quieres que tu escena funcione bien para los jugadores de móvil, prévisualízala y pruébala primero en un dispositivo real — consulta [Building for Mobile](/creator/content-creator-es/desarrollar-para-movil/cliente-movil/overview.md) y [Previsualización en móvil](/creator/content-creator-es/desarrollar-para-movil/desarrollar/preview-on-mobile.md). Una vez publicada, tu escena es accesible desde la app móvil de Decentraland de la misma manera que desde escritorio.
* Tienes una [MetaMask](https://metamask.io/) cuenta, con tus parcelas 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 [Marketplace](https://decentraland.org/shop/items?category=names).

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

{% hint style="danger" %}
**❗Advertencia**: Al planificar eventos en vivo, no hagas cambios de último momento en la escena justo antes del evento. Publica tu versión final al menos una hora antes de que comience el evento.

Después de cada publicación, un proceso interno optimiza todos los modelos 3D antes de que puedan renderizarse. Esto suele tardar solo unos segundos, pero puede tardar más en escenas muy grandes o cuando los servidores están ocupados. Hasta que termine, se les sirve a los jugadores la versión anterior de tu escena.
{% endhint %}

## Revisar los datos de la escena

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

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

* **title**: El título se muestra en la UI debajo del mini-mapa, cada vez que los jugadores entran en tu escena. También se muestra en el popup de teletransporte.
* **description**: Una descripción de lo que los jugadores encontrarán en tu escena. Esto se muestra en el popup de teletransporte.
* **navmapThumbnail**: Una imagen que representa tu escena. Esto se muestra en el popup de teletransporte. La imagen debe ser una *.png* o *.jpg* imagen con una proporción 16:9, de un tamaño recomendado de *1920x1080* píxeles. Mantén todo lo esencial dentro del cuadrado central de *1080x1080* , ya que algunas partes de la plataforma muestran un recorte cuadrado de ella. Consulta [miniatura de la escena](/creator/content-creator-es/scenes-sdk7/tipos-de-proyectos/scene-metadata.md#scene-thumbnail).
* **Parcels**: Las coordenadas de las parcelas que ocupará tu escena
* **Base**: Las coordenadas de la parcela que se considerará la coordenada \[0,0] de la escena. Si tu escena tiene varias parcelas, debe ser la parcela inferior izquierda (sudoeste).
* **spawnPoints**: Un conjunto de coordenadas dentro de la escena (relativas a la parcela base de la escena) donde aparecen los jugadores. De forma predeterminada, los jugadores aparecen en la *0,0,0* ubicación de la escena (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 superpongan entre sí cuando aparezcan por primera vez.
* **tags**: Un conjunto de etiquetas que describen tu escena. Estas ayudan a los jugadores a explorar Decentraland al facilitar la búsqueda del contenido que les interesa. [Consulta la lista de categorías disponibles](/creator/content-creator-es/scenes-sdk7/tipos-de-proyectos/scene-metadata.md#categories).
* **clasificación**: Esto se usa para clasificar el contenido de tu escena. Decentraland es una plataforma para mayores de 18, así que el valor a establecer es `Un` para Adultos. Consulta [Clasificación por edad](/creator/content-creator-es/scenes-sdk7/tipos-de-proyectos/scene-metadata.md#age-rating).

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

## Para publicar la escena

### Usar el Scene Editor en Creator Hub

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

1. Abre tu proyecto de escena.
2. Haz clic en el **Publicar** botón en la esquina superior derecha.
3. Aparecerá un mensaje preguntando si quieres publicar en un **WORLD** o en **LAND**.
   * Selecciona **PUBLICAR EN WORLD** para hacer que tu escena esté disponible en uno de tus [WORLDs](/creator/content-creator-es/scenes-sdk7/publicacion/publishing-options.md#decentraland-worlds). Luego selecciona a cuál de tus NAMEs o dominios ENS publicar.
   * Selecciona **PUBLICAR EN LAND** si eres propietario de land, o si un propietario te ha dado permisos de deploy. Luego selecciona las parcelas en el mapa donde quieres desplegarlo. Las parcelas en las que se te permite desplegar se muestran en rosa.
   * Selecciona **Servidores alternativos** para publicar en un [servidor personalizado](#custom-servers).

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-a9b358ccf604ec11addf4852ce36c321e35745e0%2Fpublish-options.png?alt=media\&token=8790912e-6224-459d-94da-4d3d86816f2e)

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

### A través de 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 escena.

{% 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, mostrando a qué parcelas vas a desplegar. Haz clic en **Firmar y desplegar**.
4. Metamask se abre, notificándote que se solicita tu firma. Haz clic en **Firmar** para confirmar esta acción.

{% hint style="info" %}
**💡 Consejo**: Si estás implementando un flujo de integración continua, donde los cambios en tu escena se despliegan automáticamente, entonces puedes establecer la `export DCL_PRIVATE_KEY` variable de entorno a 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 la escena en busca de errores de tipos 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 escena, puedes usar `npm run deploy -- --skip-build` para omitir el `npm run build` paso y desplegar la escena tal como está.
{% endhint %}

## Publicar en Worlds

Para publicar tu escena en un World de Decentraland, necesitas ser propietario de un NAME de Decentraland o un dominio ENS. Consulta [Opciones de publicación](/creator/content-creator-es/scenes-sdk7/publicacion/publishing-options.md#decentraland-worlds) para obtener información sobre cómo conseguir uno.

### Configura scene.json

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

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

El **name** especificado en el `scene.json` puede ser un Decentraland NAME o un dominio ENS. Debe pertenecer al Wallet que firma el despliegue, o a cualquier Wallet al que se le haya otorgado permiso mediante Access Control Lists (ACL).

Ten en cuenta lo siguiente:

* El Wallet que firma el despliegue debe ser propietario del NAME especificado en el `scene.json` archivo
* La escena 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 te excluyas, como se detalla a continuación

### Metadatos del World

Un World tiene su propio nombre, descripción y miniatura, separados de los metadatos de las escenas publicadas en él. Cuando publicas en un World vacío, o en un World que contiene una sola escena, los metadatos del World se actualizan para coincidir con los metadatos de la escena en cada publicación. Si el World contiene más de una escena, sus metadatos son independientes: publicar una escena no los cambia, y solo se pueden editar en la **sección Gestionar** sección de Creator Hub. Consulta [Metadatos de World vs metadatos de la escena](/creator/content-creator-es/scene-editor/publicar/publish-scene.md#world-metadata-vs-scene-metadata).

### Presupuesto de almacenamiento de Worlds

Las escenas desplegadas en Worlds cuentan contra un presupuesto de almacenamiento que se comparte entre todos los Worlds propiedad de tu Wallet. El presupuesto crece con tus holdings de Decentraland:

* Cada Decentraland NAME que posees otorga 100 MB.
* Cada parcela LAND que posees otorga 100 MB adicionales.
* Cada 2.000 MANA que tengas en tu Wallet otorga 100 MB adicionales.

Eres libre de distribuir este presupuesto entre tus Worlds como quieras. Por ejemplo, con un presupuesto de 500 MB podrías desplegar una escena de 300 MB y una escena de 200 MB, o cinco escenas de 100 MB. Los Worlds publicados en dominios ENS no consumen este presupuesto; en su lugar, tienen un límite fijo de 36 MB por World.

Puedes comprobar cuánto de tu presupuesto se usa y cuánto queda en dos lugares:

* El **sección Gestionar** sección de Creator Hub. Haz clic en **Ver detalles** para ver un desglose de cómo se suman tus tenencias de MANA, LAND y NAME.
* El **pestaña Worlds** de la [Builder](https://decentraland.org/builder/worlds).

Si superas tu presupuesto (por ejemplo, después de vender o transferir activos), tienes 48 horas para liberar espacio o aumentar tu presupuesto antes de que tus Worlds se vuelvan inaccesibles. Consulta [límites de tamaño de Worlds](/creator/content-creator-es/scenes-sdk7/tipos-de-proyectos/kinds-of-project.md#size-limits) para más detalles.

### Worlds multiescena

De forma predeterminada, al desplegar en un World mediante la CLI tu escena se tratará como un World de una sola escena. Si tu World ya contiene una escena, desplegar una nueva escena sobrescribirá esa escena anterior, incluso si las coordenadas son diferentes.

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

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

Cuando usas este parámetro, si la escena que estás publicando tiene coordenadas diferentes de las escenas existentes en ese World, todas esas escenas coexistirán.

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

### Excluirse del listado de Places

Si deseas excluirte de que tus Worlds 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
		}
	}
}
```

### Usar el Scene Editor en Creator Hub

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

### A través de 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á firmar el despliegue con tu Wallet y se ejecutará un conjunto de validaciones para permitir o rechazar la escena.

### Acceder a un World

Una vez que una escena se ha subido al 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 NAME de Decentraland 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 visible](/creator/content-creator-es/scenes-sdk7/publicacion/make-discoverable.md) para obtener más información sobre cómo hacer que tu World sea visible.

### Migrar un World a Genesis City

Si eres propietario de LAND y quieres desplegar una escena de World en Genesis City, puedes hacerlo volviendo a desplegar tu escena 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 los holdings) es distinta de la de las parcelas LAND (15 MB por parcela), así que asegúrate de que el tamaño de tu escena sea correcto para los despliegues en Genesis City.

## Publicar desde una hardware wallet

En lugar de almacenar tus tokens de LAND en una cuenta de MetaMask, puede que te resulte más seguro guardarlos en un dispositivo de hardware wallet, 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 hardware wallet a MetaMask para habilitar la firma de mensajes, mientras mantienes 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 hardware wallet pueda usarse a través de MetaMask, puedes publicar siguiendo los mismos pasos que si tus tokens estuvieran en una cuenta de MetaMask.

## Sobrescritura de scenes

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

Si una scene que ocupa varias parcelas solo es sobrescrita parcialmente por otra, todas sus parcelas quedan sobrescritas o eliminadas.

Supongamos que publicaste tu scene *Un* sobre dos parcelas *\[100, 100]* y *\[100, 101]*. Luego vendes la parcela *\[100, 101]* a un usuario que posee terreno adyacente y que publica una escena grande (*B*) en varias parcelas, incluida *\[100, 101]*.

Tu scene *Un* 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 scene *Un* que solo ocupe una parcela y publicarla 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 sistema de archivos direccionado 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 escenas 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 escenas.
2. El `npm run deploy` el comando vincula estos assets a la parcela LAND especificada en tu **scene.json** archivo. Cada vez que vuelves a desplegar tu escena, los content servers actualizan sus registros para apuntar las parcelas al contenido más reciente. El despliegue no implica ninguna transacción de blockchain; solo firmas la nueva entidad de la escena con tu Wallet para demostrar la propiedad.

La información de cada copia del servidor es verificable, ya que cada escena está firmada por el hash del propietario de la LAND. Esto significa que alguien que aloje 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 el DAO.

## Servidores personalizados

Puedes desplegar contenido en un servidor personalizado que no pertenezca a la red oficial de servidores catalyst mantenida por el DAO. Para ello, no necesitas poseer tokens LAND ni NAME, ya que puedes configurar el servidor para usar la 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 totalmente nuevo.

Consulta 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. Algunas validaciones de servicios como el [rewards server](/creator/content-creator-es/recompensas/getting-started.md) pueden fallar en estos contextos, ya que a menudo estos servicios requieren que la solicitud provenga de un servidor oficial.
{% endhint %}

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

### A través de la CLI

Para desplegar en un servidor personalizado, ejecuta:

`npm run deploy -- --target <CUSTOM SERVER DOMAIN>`

La URL para entrar en tu escena desplegada en tu servidor personalizado dependerá del dominio donde esté alojada.

## Verificar que la publicación fue exitosa

Una vez que hayas desplegado tu escena, estos cambios pueden tardar unos minutos en propagarse por los distintos content servers de la red. Si entras en Decentraland justo después de desplegar, puede que durante un momento aún veas la versión anterior de tu contenido.

Si usas la CLI para desplegar, 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 esos nombres de servidor a nombres de realm en la [pantalla de monitor de catalyst](https://decentraland.github.io/catalyst-monitor/).

La propagación es solo una parte de la historia: después de la carga, los modelos 3D de la escena se convierten en paquetes de assets optimizados para cada plataforma (Windows y Mac). Hasta que esa conversión termina, a los jugadores se les sirve deliberadamente la última versión completamente funcional de tu escena. Esto suele tardar solo unos segundos, pero puede tardar más en escenas muy grandes o cuando los servidores están ocupados. Puedes consultar el progreso de la conversión directamente; consulta [Comprueba el estado de la conversión](/creator/content-creator-es/scene-editor/publicar/publish-scene.md#check-the-conversion-status).

También puedes obtener la información de propagació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 escena en lugar de `0,0`. Si tu escena tiene varias parcelas, cualquiera de sus parcelas producirá la misma salida. Si las coordenadas empiezan con un número negativo, añade una `\` al inicio de las coordenadas para evitar que el `-` carácter se interprete mal en la línea de comandos.
{% endhint %}

## Despliegues automáticos

Si haces cambios con regularidad en el contenido de tu escena y quieres implementar una canalización de publicación más ágil, puedes automatizar el despliegue de tu escena mediante una acción de GitHub.

Para ello, primero debes almacenar tu escena 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 un merge en la `main` branch. El script instala cualquier dependencia, 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 escena
        run: |
          npm run build
      - name: Desplegar escena
        run: |
          npm run deploy
```

> Importante: para que este proceso se ejecute, debes establecer la clave privada de un Wallet como variable de entorno en GitHub, y 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 LAND, ya que eso supondría riesgos de seguridad importantes. En su lugar, delega los permisos de operador a un Wallet desechable que no posea tokens valiosos. Si alguna vez se filtra esta clave privada, puedes revocar fácilmente esos permisos de operador de la cuenta y configurar un nuevo 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
