> 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 publicar mi proyecto?

## Antes de comenzar

Asegúrate de lo siguiente:

* Tu Scene cumple con todas las [limitaciones de la Scene](/creator/content-creator-es/scenes-sdk7/optimizing/scene-limitations.md). La mayoría de estas se validan cada vez que ejecutas un Preview de tu Scene.
* Si quieres que tu Scene funcione bien para jugadores móviles, primero prévisualízala y pruébala en un dispositivo real; consulta [Building for Mobile](/creator/content-creator-es/crear-para-movil/cliente-movil/overview.md) y [Preview on mobile](/creator/content-creator-es/crear-para-movil/desarrollar/preview-on-mobile.md). Una vez publicada, se puede acceder a tu Scene desde la aplicación móvil de Decentraland de la misma manera que desde una computadora de escritorio.
* Tienes una cuenta de [Metamask](https://metamask.io/) , con tus parcels de LAND asignados a ella.
* Posees la cantidad necesaria de parcels de LAND adyacentes o un NAME de Decentraland. De lo contrario, puedes comprar LAND en el [Market](https://market.decentraland.org) o un NAME en el [Marketplace](https://decentraland.org/shop/items?category=names).

{% hint style="warning" %}
\*\*📔 Nota\*\*: Las Scenes de varios parcels solo se pueden implementar en parcels adyacentes.
{% endhint %}

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

Después de cada Publish, un proceso interno optimiza todos los modelos 3D antes de que se puedan Render. Esto suele tardar solo unos segundos, pero puede tardar más para Scenes muy grandes o cuando los servers están ocupados. Hasta que termine, los jugadores reciben la versión anterior de tu Scene.
{% endhint %}

## Comprueba los datos de la Scene

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

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

* **título**: El título se muestra en la UI debajo del minimapa, cuando los jugadores entran en tu Scene. También aparece en la ventana emergente de Teleport.
* **descripción**: Una descripción de lo que los jugadores encontrarán en tu Scene. Esta se muestra en la ventana emergente de Teleport.
* **navmapThumbnail**: Una imagen que representa tu Scene. Esta se muestra en la ventana emergente de Teleport. La imagen debe ser una imagen *.png* o *.jpg* con una relación de aspecto de 16:9 y 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 Scene](/creator/content-creator-es/scenes-sdk7/tipos-de-proyectos/scene-metadata.md#scene-thumbnail).
* **Parcels**: Las coordenadas de los parcels que ocupará tu Scene
* **Base**: Las coordenadas del parcel que se considerará la coordenada \[0,0] de la Scene. Si tu Scene tiene varios parcels, debe ser el parcel inferior izquierdo (suroeste).
* **spawnPoints**: Un conjunto de coordenadas dentro de la Scene (en relación con el parcel 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 superpongan al aparecer por primera vez.
* **etiquetas**: Un conjunto de etiquetas que describen tu Scene. Estas ayudan a los jugadores a explorar Decentraland facilitando la búsqueda de contenido que les interese. [Consulta la lista de categorías disponibles](/creator/content-creator-es/scenes-sdk7/tipos-de-proyectos/scene-metadata.md#categories).
* **clasificación**: Esto se utiliza para clasificar el contenido de tu Scene. Decentraland es una plataforma para mayores de 18 años, por lo que el valor que debes establecer es `A` para adultos. Consulta [Age Rating](/creator/content-creator-es/scenes-sdk7/tipos-de-proyectos/scene-metadata.md#age-rating).

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

## Para publicar la Scene

### Uso de Scene Editor en Creator Hub

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

1. Abre el proyecto de tu Scene.
2. Haz Click en el Button **Publish** en la esquina superior derecha.
3. Un mensaje te preguntará si quieres publicar en un **WORLD** o en **LAND**.
   * Selecciona **PUBLISH TO WORLD** para que tu Scene esté disponible en uno de tus [WORLDs](/creator/content-creator-es/scenes-sdk7/publicacion/publishing-options.md#decentraland-worlds). Luego selecciona en cuál de tus NAMEs o ENS Domains publicar.
   * Selecciona **PUBLISH TO LAND** si posees LAND o si un propietario te ha concedido permisos de Deploy. Luego selecciona en el mapa los parcels donde quieres implementarla. Los parcels donde tienes permiso para implementar se muestran en rosa.
   * Selecciona **Servers alternativos** para publicar en un [server 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)

4. Esto abre una nueva Tab en tu browser, que muestra detalles sobre la carga. Firma la implementación con tu Wallet. Esto es solo una firma para demostrar la propiedad; es gratuita y no implica ninguna transacción de Blockchain.
   * Para LAND en una cuenta de browser de Metamask, confirma la implementación. Luego firma el mensaje en la extensión de browser de Metamask.
   * Para LAND vinculado a una Wallet que puedas usar mediante Wallet Connect, haz Click en **Connect wallet**, luego escanea el código QR con tu dispositivo móvil y sigue los pasos en Wallet Connect.

### Mediante la CLI

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

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

3. Se abrirá una Tab del browser que mostrará en qué parcels estás implementando. Haz Click en **Sign and Deploy**.
4. Metamask se abre y te notifica que se solicita tu firma. Haz Click 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 implementan automáticamente, puedes establecer la variable de entorno `export DCL_PRIVATE_KEY` en la clave privada de una cuenta que tenga permisos de Deploy.
{% endhint %}

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

## Publicar en Worlds

Para publicar tu Scene en un World de Decentraland, debes poseer un NAME de Decentraland o un dominio ENS. Consulta [Publishing Options](/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é **nombre** se realizará tu implementación. Agrega 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 ENS Domain. Debe ser propiedad de la Wallet que firma la implementación, o de cualquier Wallet a la que se le haya concedido permiso mediante Access Control Lists (ACL).

Ten en cuenta lo siguiente:

* La Wallet que firma la implementación debe poseer el NAME especificado en el `scene.json` archivo
* La Scene no tiene limitaciones de parcels (desde enero de 2023)
* Todos los Worlds se incluyen automáticamente en la página 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, independientes de los metadatos de las Scenes publicadas en él. Cuando publicas en un World vacío, o en un World que contiene una sola Scene, los metadatos del World se actualizan para coincidir con los metadatos de la Scene en cada Publish. Si el World contiene más de una Scene, sus metadatos son independientes: publicar una Scene no los cambia y solo se pueden editar en la sección **Manage** de Creator Hub. Consulta [Metadatos del World frente a metadatos de la Scene](/creator/content-creator-es/scene-editor/publish/publish-scene.md#world-metadata-vs-scene-metadata).

### Presupuesto de almacenamiento de Worlds

Las Scenes implementadas en Worlds cuentan para un presupuesto de almacenamiento compartido entre todos los Worlds propiedad de tu Wallet. El presupuesto aumenta con tus posesiones de Decentraland:

* Cada NAME de Decentraland que posees otorga 100 MB.
* Cada parcel de LAND que posees otorga 100 MB adicionales.
* Cada 2000 MANA que tengas en tu Wallet otorga 100 MB adicionales.

Puedes distribuir este presupuesto entre tus Worlds como quieras. Por ejemplo, con un presupuesto de 500 MB podrías implementar una Scene de 300 MB y una de 200 MB, o cinco Scenes 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 utiliza y cuánto queda en dos lugares:

* El **Manage** de Creator Hub. Haz Click en **View Details** para ver un desglose de cómo se suman tus posesiones de MANA, LAND y NAME.
* El **Worlds** Tab del [Builder](https://decentraland.org/builder/worlds).

Si excedes tu presupuesto (por ejemplo, después de vender o transferir assets), tienes 48 horas para liberar espacio o aumentar tu presupuesto antes de que tus Worlds sean 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 de varias Scenes

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

Para implementar como un World de varias Scenes, agrega el parámetro `--multi-scene` al comando de Deploy:

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

Al usar este parámetro, si la Scene que estás publicando tiene coordenadas diferentes de las Scenes existentes en ese World, todas estas Scenes coexistirán.

{% hint style="warning" %}
\*\*📔 Nota\*\*: Si tienes derechos de operador en un World que no posees y solo se te conceden derechos sobre parcels específicos de ese World, solo podrás publicar en esos parcels y no podrás afectar el contenido de otros parcels del World.
{% endhint %}

### Excluirse de la lista de Places

Si deseas excluir tus Worlds de la indexación en Places, puedes agregar la siguiente sección en tu `scene.json`:

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

### Uso de Scene Editor en Creator Hub

1. Abre el proyecto de tu Scene.
2. Haz Click en el Button **Publish** en la esquina superior derecha.
3. Selecciona **PUBLISH TO WORLD**.
4. Selecciona en cuál de tus NAMEs o ENS Domains publicar.

### Mediante 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 la implementación 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 carga en el server de Worlds, puedes acceder a ella mediante Decentraland Explorer con la siguiente URL: `decentraland://?realm=NAME.dcl.eth`, donde `NAME` debe reemplazarse por el NAME de Decentraland o ENS Domain donde implementaste.

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

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

### Migrar un World a Genesis City

Si eres propietario de LAND y deseas implementar una Scene de World en Genesis City, puedes hacerlo volviendo a implementar tu Scene en la red descentralizada de Catalyst, que es el server de contenido de Genesis City.

Aspectos que debes recordar:

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

## Publicar desde una hardware wallet

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

Si usas uno de estos dispositivos, puedes vincular la hardware wallet a Metamask para habilitar la firma de mensajes y mantener 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 puedas usar tu hardware wallet mediante Metamask, puedes implementar siguiendo los mismos pasos que si tus Tokens estuvieran en una cuenta de Metamask.

## Sobrescritura de Scenes

Cuando se implementa una nueva Scene, sobrescribe el contenido anterior que existía en los parcels que ocupa.

Si una Scene que ocupa varios parcels es sobrescrita solo parcialmente por otra, todos sus parcels se sobrescriben o se borran.

Supongamos que implementaste tu Scene *A* en dos parcels *\[100, 100]* y *\[100, 101]*. Luego vendes el parcel *\[100, 101]* a un usuario que posee LAND adyacente e implementa una Scene grande (*B*) en varios parcels, incluido *\[100, 101]*.

Tu Scene *A* no puede Render parcialmente en un solo parcel, así que *\[100, 100]* no mostrará ningún contenido. Debes construir una nueva versión de la Scene *A* que ocupe solo un parcel e implementarla únicamente en el parcel *\[100, 100]*.

## Qué son los servers de contenido

Los servers de contenido son una red de servers propiedad de la comunidad con un sistema de Files direccionado por contenido, lo que significa que cada File se identifica por su contenido, no por un nombre de File arbitrario.

Usamos los servers de contenido para alojar y distribuir todo el contenido de las Scenes de forma similar a BitTorrent, manteniendo distribuida la red de Decentraland.

1. Los servers de contenido almacenan y distribuyen todos los assets necesarios para Render tus Scenes.
2. El `npm run deploy` El comando vincula estos assets al parcel de LAND especificado en tu archivo **scene.json** . Cada vez que vuelves a implementar tu Scene, los servers de contenido actualizan sus registros para dirigir los parcels al contenido más reciente. La implementación no implica ninguna transacción de Blockchain; solo firmas la nueva Entity de la Scene con tu Wallet para demostrar la propiedad.

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

## Servers personalizados

Puedes implementar contenido en un server personalizado que no pertenezca a la red oficial de servers Catalyst mantenida por la DAO. Para hacerlo, no necesitas poseer ningún Token LAND ni NAME, ya que puedes configurar el server para usar cualquier lógica de validación que prefieras a fin de controlar quién puede implementar dónde. Los servers personalizados pueden elegir incluir contenido de los servers oficiales (que puedes sobrescribir) o comenzar 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 server y cómo configurarlo.

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

Los jugadores nunca son dirigidos a este server; la única forma de acceder a él es escribir explícitamente la URL para conectarse.

### Mediante la CLI

Para implementar en un server personalizado, ejecuta:

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

La URL para entrar en tu Scene implementada en tu server personalizado dependerá del dominio donde se aloje.

## Verifica el éxito de la implementación

Una vez que implementes tu Scene, estos cambios pueden tardar unos minutos en propagarse por los distintos servers de contenido de la red. Si entras en Decentraland justo después de implementar, es posible que aún veas brevemente la versión anterior de tu contenido.

Si utilizas la CLI para implementar, la dapp de firma comenzará a mostrar confirmaciones de que la nueva versión de tu contenido se ha propagado por todos los servers de la red.

Verás una lista de cada uno de los servers que componen la red de contenido de Decentraland. Para cada server, se especifica la marca de tiempo del último cambio cargado en ese parcel. Cada server se refiere a un Realm diferente. Puedes ver cómo estos nombres de server se asignan a nombres de Realm en la [pantalla del monitor de Catalyst](https://decentraland.github.io/catalyst-monitor/).

La propagación es solo una parte del proceso: después de la carga, los modelos 3D de la Scene se convierten en paquetes de assets optimizados para cada plataforma (Windows y Mac). Hasta que finalice esa conversión, los jugadores reciben deliberadamente la última versión completamente funcional de tu Scene. Esto suele tardar solo unos segundos, pero puede tardar más para Scenes muy grandes o cuando los servers están ocupados. Puedes consultar directamente el progreso de la conversión; consulta [Comprueba el estado de la conversión](/creator/content-creator-es/scene-editor/publish/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 Console 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 varios parcels, cualquiera de sus parcels producirá la misma salida. Si las coordenadas comienzan con un número negativo, agrega una `\` al comienzo de las coordenadas para evitar que el carácter `-` se interprete erróneamente en la línea de comandos.
{% endhint %}

## Implementaciones automáticas

Si realizas cambios regularmente en el contenido de tu Scene y quieres implementar un flujo de publicación optimizado, puedes automatizar la implementación de tu Scene mediante una GitHub action.

Para ello, primero debes almacenar tu Scene en un proyecto de GitHub. Luego puedes establecer una [GitHub action](https://docs.github.com/en/actions) con el siguiente script, que se ejecuta cada vez que hay una fusión en la rama `main` . El script instala las dependencias, construye el proyecto y luego lo implementa 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
      - name: Deploy 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 utiliza para firmar la implementación. 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 riesgos de seguridad significativos. En su lugar, delega 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 desde 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.
