> 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

## Antes de empezar

Asegúrate de lo siguiente:

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

{% hint style="warning" %}
\*\*📔 Nota\*\*: Las escenas de varias parcelas solo pueden desplegarse en parcelas adyacentes.
{% endhint %}

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

Después de cada publicación, un proceso interno optimiza todos los modelos 3D antes de que puedan ser renderizados. Esto tarda alrededor de 15 minutos. Si visitas la scene antes de que esto termine, es posible que la scene aparezca dañada. Este proceso se ejecuta incluso si todos los modelos 3D ya se publicaron anteriormente.
{% endhint %}

## Verificar 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 minimapa cada vez que los jugadores entran en tu escena. También se muestra en el popup de teleport.
* **description**: Una descripción de lo que los jugadores encontrarán en tu escena. Esto se muestra en el popup de teleport.
* **navmapThumbnail**: Una imagen que representa tu escena. Esto se muestra en el popup de teleport. La imagen debe ser un *.png* o *.jpg* imagen con un tamaño recomendado de *228x160* píxeles.
* **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, debería ser la parcela inferior izquierda (Suroeste).
* **spawnPoints**: Un conjunto de coordenadas dentro de la escena (relativas a la parcela base de la escena) donde aparecen los jugadores. Por defecto, 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 define 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 encontrar contenido que les interese. [Consulta la lista de etiquetas disponibles](/creator/content-creator-es/scenes-sdk7/tipos-de-proyectos/scene-metadata.md#tags).
* **rating**: Esto se usa para clasificar el contenido de tu escena según su idoneidad para distintos grupos de edad (`T` para Teens o `A` para Adults). Ayuda a filtrar contenido para los jugadores.

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

## Para publicar la escena

### Usando el Scene Editor en Creator Hub

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/comenzar/editor-installation.md).

1. Abre tu proyecto de escena.
2. Haz click en el **Publish** botón en la esquina superior derecha.
3. Se te preguntará si quieres publicar en un **WORLD** o en **LAND**.
   * Selecciona **PUBLISH TO WORLD** para hacer que tu escena esté disponible en uno de tus [WORLDs](/creator/content-creator-es/worlds/about.md). Luego selecciona a cuál de tus NAMEs o dominios ENS publicar.
   * Selecciona **PUBLISH TO LAND** si eres propietario de la tierra, o si te han dado permisos de despliegue por parte de un propietario. Luego selecciona las parcelas en el mapa donde quieres desplegarlo. Las parcelas donde tienes अनुमति para desplegar se muestran en rosa.
   * Selecciona **Servidores alternativos** para publicar en el [servidor de pruebas](#the-test-server) o un [servidor personalizado](#custom-servers).

![](/files/5138c3461c88ed60cf52f30b0863be50396eb069)

4. Esto abre una nueva pestaña en tu navegador, mostrando los detalles de la carga. Aprueba la transacción.
   * Para LAND en una cuenta de navegador de Metamask, confirma el despliegue. Luego aprueba la transacción en la extensión de 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.

### 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 estás desplegando. Haz clic en **Sign and Deploy**.
4. Metamask se abre notificando que se ha solicitado 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, en el que los cambios de tu escena se despliegan automáticamente, entonces puedes configurar la variable de entorno `export DCL_PRIVATE_KEY` con 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 para detectar errores de tipo de forma más estricta que al ejecutar `npm run start`. Si estos errores no pueden evitarse (por ejemplo: ocurren en una librería externa) y no afectan a la escena, puedes usar `npm run deploy --skip-build` para omitir el paso de `npm run build` y desplegar la escena tal como está.
{% endhint %}

## Publicar en Worlds

Para publicar tu escena en un Decentraland World, necesitas poseer 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.

### Configurar scene.json

Debes especificar bajo qué **nombre** se hará 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 un NAME de Decentraland o un dominio ENS. Debe pertenecer a la wallet que firma el despliegue, o a cualquier wallet a la que se le haya otorgado 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 escena no tiene limitaciones de parcelas (desde enero de 2023)
* Todos los Worlds se listan automáticamente en la página Places a menos que optes por no hacerlo, como se detalla a continuación

### Worlds de varias escenas

Por defecto, al desplegar a 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 de varias escenas, 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 escena que estás publicando tiene coordenadas diferentes a las escenas existentes en ese world, todas estas escenas coexistirán.

{% hint style="warning" %}
\*\*📔 Nota\*\*: Si tienes derechos de operador sobre un world que no posees, y solo se te han otorgado 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 %}

### Excluir de la lista de Places

Si deseas excluir tus Worlds del indexado 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 tu proyecto de escena.
2. Haz click en el **Publish** botón en la esquina superior derecha.
3. Selecciona **PUBLISH TO 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 haya 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 sustituirse 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 descubrible](https://github.com/decentraland/docs/blob/main/creator/sdk7/projects/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 escena de World en Genesis City, puedes hacerlo redeplegando tu escena a la red descentralizada de Catalyst, que es el servidor de contenido para Genesis City.

Cosas a recordar:

* Elimina la `worldConfiguration` sección de `scene.json`
* El límite de tamaño para Worlds (dinámico según las holdings) es diferente del de las parcelas de LAND (15MB por parcela), así que asegúrate de que tu escena tenga el tamaño correcto para despliegues en Genesis City!

## Publicar desde una hardware wallet

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

Si estás usando uno de estos dispositivos, puedes vincular la hardware wallet a Metamask para habilitar la firma de mensajes, manteniendo al mismo tiempo 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 mediante 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 scene, sobrescribe el contenido antiguo 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 desplegaste tu scene *A* sobre dos parcelas *\[100, 100]* y *\[100, 101]*. Luego vendes la parcela *\[100, 101]* a un usuario que posee tierra adyacente y que despliega una scene grande (*B*) en varias parcelas, incluida *\[100, 101]*.

Tu scene *A* no puede renderizarse parcialmente solo en una parcela, así que *\[100, 100]* no mostrará ningún contenido. Debes crear una nueva versión de la scene *A* que solo ocupe 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 sistema de archivos con direccionamiento 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 la escena 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 de LAND especificada en tu **scene.json** archivo. Cada vez que vuelvas a desplegar tu escena, la CLI actualizará tu smart contract de LAND, si es necesario, para apuntar al contenido más reciente disponible en los content servers.

La información en cada copia del servidor es verificable, ya que cada escena está firmada por el hash del propietario de 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.

## El servidor de prueba

Puedes desplegar contenido en el servidor de prueba de Catalyst para ejecutar pruebas completas con múltiples usuarios, las escenas circundantes y un entorno idéntico al de producción. El servidor de pruebas es idéntico a todos los demás servidores de 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 escenas 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 requeridos para desplegar en esas parcelas en la red principal.
{% endhint %}

Los jugadores nunca son dirigidos a este servidor; la única forma de acceder es proporcionando explícitamente un parámetro URL para conectarse a él.

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 llegar a encontrárselo.

### A través de la CLI

Para desplegar en el servidor de pruebas, 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 de Catalyst mantenida por el DAO. Para hacerlo, no necesitas poseer ningún token 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 y dónde. Los servidores personalizados pueden optar por incluir contenido de los servidores oficiales (que puedes sobrescribir), o empezar desde cero y publicar contenido completamente nuevo.

Consulta [Cómo ejecutar tu propio Catalyst Node](https://github.com/decentraland/docs/blob/main/creator/tutorials/how-to-run-a-catalyst.md) 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](https://github.com/decentraland/docs/blob/main/creator/sdk7/rewards/getting-started.md) o el [quests server](https://github.com/decentraland/docs/blob/main/creator/sdk7/deprecated/quests/overview.md) podrían fallar en estos contextos, ya que a menudo estos servicios requieren que la request provenga de un servidor oficial.
{% endhint %}

Los jugadores nunca son dirigidos a este servidor; la única forma de acceder 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 <DOMINIO DEL SERVIDOR PERSONALIZADO>`

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

## Verificar el éxito del deployment

Una vez que hayas desplegado tu escena, 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, es posible que aún veas la versión anterior de tu contenido, dependiendo del realm al que entres.

Después de firmar para autorizar el despliegue de tu escena, 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 conforman 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 monitor 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 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 incorrectamente desde la línea de comandos.
{% endhint %}

## Despliegues automáticos

Si haces cambios con regularidad en el contenido de tu escena y quieres implementar un flujo de publicación optimizado, 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 una fusión en la `main` rama. El script instala las dependencias, construye el proyecto y luego lo despliega en Decentraland.

```yaml
name: Deploy to DCL PROD

on:
  push:
    branches:
      - main

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

jobs:
  deploy:
    name: Deploy
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Install npm packages
        run: |
          npm install
      - name: Build scene
        run: |
          npm run build:ci
      - name: Deploy scene
        run: |
          npm run deploy:prod
```

> Importante: Para que este proceso se ejecute, debes establecer la clave privada de una wallet como variable de entorno en GitHub, la cual se usa 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 tierra, ya que eso supondría riesgos de seguridad importantes. En su lugar, delega los derechos de operador a una wallet desechable que no posea tokens valiosos. Si esta clave privada se filtra alguna vez, 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/scenes-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.
