Metadata de la escena

Aprende cómo configurar una escena y configurar sus metadata.

Una escena es un proyecto de Decentraland que está delimitado espacialmente y está asignado a uno o varios parcels. Si una escena se despliega en el mapa de Genesis City de Decentraland, los jugadores pueden experimentarla visitando las coordenadas de la escena. Si una escena se despliega en un World, los jugadores pueden visitarla vía URL.

Ver Archivos en una escenaarrow-up-right para una lista de qué archivos se usan en un proyecto de escena.

Metadatos

Para editar los metadatos de una escena en el Scene Editor in Creator Hubarrow-up-right, abre una escena y haz clic en el icono de lápiz.



Esto abre el menú de la escena, donde puedes configurar múltiples propiedades.



Alternativamente, puedes editar directamente el scene.json archivo, donde se almacenan todos estos valores.

circle-exclamation

Título, descripción e imagen de la escena

Es muy importante dar a tu escena un título, una descripción y una imagen en miniatura para atraer a los jugadores y ayudarles a saber qué esperar.

Los jugadores verán esto mostrado en un modal cuando seleccionen los parcels de tu escena en el mapa. También lo verán en una pantalla de confirmación cuando sean teleportadosarrow-up-right allí por otra escena. Configurar datos atractivos aquí puede ayudar significativamente a dirigir tráfico a tu escena.

Cuando los jugadores navegan el mundo y entran en tu escena, pueden leer el título de la escena debajo del minimapa.



Agrega estos datos a través del menú de la escena en el Scene Editor.

La miniatura debe ser un .png imagen de un tamaño recomendado de 228x160 píxeles. El tamaño mínimo compatible es 196x143 píxeles. La imagen puede estirarse si las proporciones ancho-alto no coinciden 228x160.

La imagen en navmapThumbnail debe ser una ruta a un archivo de imagen en la carpeta del proyecto. También puede ser un enlace URL a una imagen alojada en otro lugar.

circle-exclamation

En caso de que quieras que otros desarrolladores puedan ponerse en contacto contigo, también puedes agregar información de contacto a tu escena.

Categorías

Puedes agregar categorías a tu escena para ayudar a los jugadores a explorar Decentraland. Estas se usan en la Decentraland Places dApparrow-up-right para categorizar cada lugar y facilitar que los jugadores encuentren lo que les interesa.

Categorías deben elegirse de una lista predefinida de opciones:

  • 🎨 Art

  • 🕹️ Game

  • 🃏 Casino

  • 👥 Social

  • 🎶 Music

  • 👠 Fashion

  • 🪙 Crypto

  • 📚 Education

  • 🛍️ Shop

  • 🏢 Business

  • 🏅 Sports

  • 🏃 Parkour

Una escena puede pertenecer a más de una categoría, con un máximo de 3 categorías listadas.

En el scene.json las categorías se listan en el tags array.

Estas son las categorías predefinidas:

  • art

  • game

  • casino

  • social

  • music

  • fashion

  • crypto

  • education

  • shop

  • business

  • sports

  • parkour

Por ejemplo, una escena podría etiquetarse como game y casino añadiendo lo siguiente a la scene.json

Después de eso, la escena aparece listada en la dApp Places bajo las game y casino categorías.

Clasificación por edad

La Clasificación por edad el campo se usa para clasificar el contenido de tu escena según su idoneidad para diferentes grupos de edad. Ayuda a filtrar contenido para los jugadores. Las siguientes opciones están disponibles:

  • 🟢 T para Teens (13+): Esta es la edad mínima requerida según lo especificado en los Terms of Usearrow-up-right. Opta por esta categoría si tu escena está limitada a violencia moderada, contenido sugestivo o de terror, juego simulado y lenguaje leve.

  • 🟡 A para Adults (18+): Elige esta categoría si tu escena presenta cualquiera de lo siguiente: lenguaje ofensivo intenso, violencia gráfica, contenido sexual explícito y/o desnudez, apuestas con dinero real, o sustancias como alcohol, tabaco y drogas.

Al editar la Clasificación por edad vía el scene.json, la clasificación es un código de una sola letra, escribe ya sea T para adolescentes, o A para adultos.



Contenido restringido

Hay una tercera categoría para escenas: 🔴 R para Restricted. Esta clasificación se aplica manualmente por los Moderadores de Contenido a escenas que violen la Content Policyarrow-up-right. Las violaciones pueden incluir, pero no están limitadas a:

  • Contenido sospechoso o spam

  • Contenido abusivo u odioso

  • Contenido sexual o degradante

  • Abuso infantil

  • Acoso o intimidación

  • Promoción del terrorismo/violencia

  • Infracción de IP/Derechos de autor

Las escenas con esta clasificación no se cargarán y nadie podrá interactuar con ellas. Si tu escena entra en esta categoría, deberías revisarla y actualizarla para cumplir con la Content Policyarrow-up-right.

Feature Toggles

Hay ciertas funciones que pueden deshabilitarse en escenas específicas para que los jugadores no las usen de forma abusiva. Configura estas en la Settings pestaña de la configuración de la escena.



Actualmente, solo la siguiente función se maneja de esta manera:

  • Voice Chat: Se refiere a los jugadores que usan sus micrófonos para tener conversaciones por voz con otros jugadores cercanos.

  • Desactivar Portable Experiences: Esta configuración establecerá el comportamiento de cualquier portable experience de un jugador mientras esté dentro de tu escena. Esto incluye no solo portable experiencesarrow-up-right sino también smart wearablesarrow-up-right. Con esta configuración, puedes elegir mantenerlas todas habilitadas (por defecto), deshabilitarlas u ocultar su UI. Esto es útil para escenas donde las portable experiences podrían dar una ventaja injusta a algunos jugadores, por ejemplo usar un jetpack en un desafío de parkour. También se recomienda prevenirlas en escenas donde se realicen transacciones blockchain y donde una portable experience maliciosa podría potencialmente suplantar la UI de la escena.

En el scene.json archivo, estos toggles se gestionan bajo featureToggles. Las funciones correspondientes están habilitadas por defecto, a menos que se especifiquen como disabled en el scene.json archivo.

Si una featureToggles propiedad no existe en tu scene.json archivo, créala a nivel raíz en el árbol json.

Propinas

Puedes recibir propinas de los jugadores que visiten tu escena. Para habilitar las propinas, ve a la pestaña Details pestaña en la configuración de la escena y proporciona una dirección de Ethereum en Creator wallet address.

También puedes proporcionar la dirección de propinas (tipping) de tu escena en el scene.json archivo, bajo el creator campo.

Cuando un jugador visita tu escena, verá un icono de hucha en la parte superior izquierda de la pantalla. Al hacer clic en él se abre un modal donde pueden enviarte una propina. Este menú también se puede acceder abriendo la información de tu escena en el mapa.

El modal de propina permite al jugador seleccionar la cantidad de MANA que desea enviar. El jugador debe poseer MANA en su wallet para enviar una propina. Si la dirección que proporcionaste está vinculada a un Decentraland NAME, este modal mostrará el nombre del dueño de la wallet junto a la dirección de Ethereum.

Recibirás una notificación en la pestaña de notificaciones de Decentraland cada vez que un jugador te envíe una propina.

Ubicación de spawn

La Configuración de spawn en el Settings la pestaña define dónde aparecen los jugadores cuando acceden directamente a tu escena, ya sea escribiendo directamente las coordenadas en el navegador o teletransportándose.



Tu escena puede tener objetos que bloqueen el movimiento de los jugadores si aparecen encima de ellos, como árboles o escaleras. Tu escena también puede tener terreno elevado. Para prevenir que los jugadores aparezcan en ubicaciones donde no puedan moverse, puedes establecer múltiples posiciones de spawn en ubicaciones específicas.

La posición consiste en coordenadas dentro de la escena. Estos números se refieren a una posición dentro del parcel, similar a lo que usarías en el código de la escena en un componente Transform para position an entityarrow-up-right.

circle-exclamation

Marca la casilla Random Offset para desplazar aleatoriamente a los jugadores que aparecen alrededor del punto de spawn. Esto evita que todos los jugadores aparezcan superpuestos cuando hacen spawn, lo que se ve especialmente mal en escenas concurridas. El Max Offset valor es la distancia máxima posible desde el punto de spawn original, tanto en los ejes X como Z.

Establece el Camera Target para controlar la dirección hacia la que miran los jugadores cuando entran en tu escena. Esto te da mejor control sobre su primera impresión y puede ayudar a guiarlos hacia una dirección específica. Por defecto esto apunta a {x: 8, y:1, z:8}, que es el centro de la escena para escenas de un solo parcel, o el centro del parcel inferior-izquierda para escenas más grandes.

Haz clic en Agregar punto de aparición para listar tantos puntos de spawn como quieras. Los jugadores aparecerán aleatoriamente en uno de ellos.

Puntos de spawn en JSON

Los puntos de spawn también pueden configurarse vía el scene.json archivo, en el spawnPoints campo.

Una sola escena puede tener múltiples puntos de spawn. Esto es especialmente útil en escenas grandes. Para tener muchos puntos de spawn, simplemente enlístalos como un array.

Cuando hay múltiples puntos de spawn, se selecciona el que esté más cercano a las coordenadas indicadas por el jugador.

Si un punto de spawn está marcado como default, siempre se usará, independientemente de si es el más cercano. Si múltiples puntos de spawn están marcados como default, se selecciona el más cercano.

Regiones de spawn

Puedes establecer toda una región en la escena para que actúe como punto de spawn. Al especificar un array de dos números para cualquier dimensión de la posición, los jugadores aparecerán en una ubicación aleatoria dentro de ese rango. Esto ayuda a prevenir que los jugadores que entran se superpongan.

En el ejemplo anterior, los jugadores pueden aparecer en cualquier lugar del cuadrado cuyas esquinas están en 1,1,2 y 5,1,4.

Una escena también puede tener múltiples regiones de spawn, al igual que puede tener múltiples puntos de spawn.

Rotación

También puedes especificar la rotación de los jugadores cuando aparecen, de modo que miren en una dirección específica.

Simplemente añade un cameraTarget campo a los datos del punto de spawn. El valor de cameraTarget debe referenciar una ubicación en el espacio, con x, y y z coordenadas relativas a la escena, igual que la position campo.

Este ejemplo hace aparecer a un jugador en 5, 1, 4 mirando hacia el Este hacia 10, 1, 4. Si la posición de spawn es un rango, la rotación del jugador siempre coincidirá con el objetivo indicado. Si hay múltiples puntos de spawn, cada uno puede tener su propio objetivo separado.

Permisos requeridos

La requiredPermissions la propiedad gestiona varias funciones controladas que podrían usarse de forma abusiva y dañar la experiencia del jugador.

circle-exclamation

Estas funciones están bloqueadas para su uso en la escena a menos que el permiso sea solicitado en el scene.json archivo.

Actualmente, los siguientes permisos se gestionan en smart wearables y portable experiences:

  • ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE: Se refiere a mover a un Playerarrow-up-right

  • ALLOW_TO_TRIGGER_AVATAR_EMOTE: Se refiere a Reproducir emotes en el avatar del jugadorarrow-up-right

  • USE_WEB3_API: Se refiere a interactuar con las wallets del navegador del jugador, para hacer transacciones o firmar mensajes.

  • USE_FETCH: Se refiere a enviar solicitudes http a servidores de terceros, usando fetch o signedFetch

  • USE_WEBSOCKET: Se refiere a abrir conexiones websocket con servidores de terceros

  • OPEN_EXTERNAL_LINK: Se refiere a solicitar al jugador que abra enlaces a sitios externos

Si una requiredPermissions propiedad no existe en tu scene.json archivo, créala a nivel raíz en el árbol json.

Parcels de la escena

Cuando desplegandoarrow-up-right una escena, el contenido se sube a las coordenadas asignadas en la configuración de la escena. Una escena puede incluir un solo parcel, o una lista de hasta docenas de ellos.

Edita esto en la segunda pestaña del menú de la escena en el Scene Editor.



Usa los dropdowns y haz clic en Apply Layout para cambiar las dimensiones de tu escena. También puedes hacer clic en cada parcel individual para desactivarlo de tu diseño.



La escena por defecto tiene sus coordenadas establecidas en 0,0. No necesitas cambiar esto mientras desarrollas una escena offline, a menos que necesites ocupar múltiples parcels. Deberás cambiar esto antes de desplegar en coordenadas donde tengas permisos de despliegue.

También puedes cambiar las coordenadas de la escena en el scene.json archivo:

La base el campo define qué parcel considerar como parcel base. Si tu escena tiene un solo parcel, la base debe ser ese parcel. Si tu escena tiene múltiples parcels, la base debe ser el parcel inferior-izquierda (South-West). Todas las posiciones de las entidades se miden relativas a la esquina South-West de este parcel.

Para mostrar múltiples parcels en la vista previa de la escena, enumera tantos parcels como pretendas usar. No necesitan ser los parcels exactos a los que desplegarás, pero deben ser todos adyacentes y estar dispuestos en las mismas posiciones relativas.

circle-exclamation

Establecer parcels vía línea de comandos

Puedes establecer los parcels en tu escena ejecutando el npx update-parcels comando en la carpeta de tu escena. Esto es especialmente útil para escenas grandes, ya que no necesitas listar cada parcel involucrado.

Parcel único

Pasa un solo argumento con las coordenadas de la escena. Esta coordenada también se establece como el parcel base.

npx update-parcels <parcel>

Por ejemplo:

npx update-parcels 15,-26

Múltiples parcels

Pasa dos argumentos: los parcels South-West y North-East. El parcel South-West también se establece como parcel base.

npx update-parcels <parcel> <parcel>

circle-info

💡 Consejo: El parcel South-West es siempre el que tiene los números más bajos en ambas coordenadas X y Y .

Por ejemplo:

npx update-parcels 15,-26 17,-24

Este comando genera una escena 3x3, con su parcel base en 15,-26.

Personalizar parcel base

Pasa tres argumentos: los parcels South-West y North-East, y el parcel a usar como parcel base.

npx update-parcels <parcel> <parcel> <parcel>

circle-exclamation

Escenas no cuadradas

Los comandos anteriores generan escenas de forma rectangular. Las escenas de Decentraland pueden tener formas en L u otras configuraciones. Puedes generar un cuadrado más grande con npx update-parcels y luego eliminar manualmente los parcels excedentes del scene.json archivo.

circle-exclamation

Hora del día del Skybox

Puedes establecer una hora fija del día para tu escena. Todos los jugadores verán la escena con esta hora del día, y el skybox no seguirá el ciclo día/noche.

Abre la configuración de la escena y haz clic en la Settings pestaña para encontrar la sección Skybox Desmarca la opción Auto opción y establece la hora del día que desees.

También puedes establecer la hora del día del skybox en el código de tu escena. Para hacer esto, añade la siguiente sección a tu scene.json a nivel raíz:

El número se refiere a la cantidad de segundos desde el inicio del día, que va de 0 (representando 00:00) a 86400 (representando 24:00). Cualquier número mayor que 86400 también se interpreta como medianoche.

Aquí hay algunos ejemplos más de valores válidos:

  • 0 segundos => 00:00

  • 21600 segundos => 06:00

  • 43200 segundos => 12:00

  • 64800 segundos => 18:00

  • 86400 segundos => 24:00

Configuración de World

Al publicar en un Decentraland Worldarrow-up-right, puedes configurar varias opciones específicas de World en tu scene.json archivo usando el worldConfiguration objeto.

Configuración básica de World

Para publicar en un World, debes especificar el NAME o dominio ENS en tu scene.json:

La name lo especificado puede ser ya sea un NAME de Decentraland o un dominio ENS y debe ser propiedad de la wallet que firma el despliegue (o de cualquier wallet a la que se le haya dado permiso vía Access Control Lists).

Configuración del servicio de comunicación

La fixedAdapter la propiedad indica qué Communication Service debería ser usado por la escena. Por el momento, solo se permite el valor offline:offline . Cuando se establece, la escena no tendrá ningún Communication Service, y cada usuario que se una a ese world siempre estará solo. Si no se establece, el servidor de contenido de Worlds generará un valor adecuado según cómo esté configurado.

Configuración del listado en Places

Todos los Worlds se listan automáticamente en la página Places a menos que optes por no participar. Si deseas optar por no indexar tus Worlds en Places, puedes añadir lo siguiente:

Ejemplo completo

Aquí hay un ejemplo completo con todas las opciones de configuración de World:

Ver Publicar en Worldsarrow-up-right para más información sobre desplegar en Worlds.

Obtener metadatos desde el código de la escena

Scene API Referencearrow-up-right

Puede que necesites el código de tu escena para acceder a campos de los metadatos de la escena, como los parcels a los que la escena está desplegada, o las posiciones de los puntos de spawn. Esto es especialmente útil para escenas que están pensadas para ser replicadas, o para código que se reutilizará en otras escenas. También es muy útil para librerías que necesitan saber dónde están los límites de la escena.

Para acceder a estos datos, primero importa la getSceneInformation función:

Luego puedes llamar a la getSceneInformation() función, que devuelve un objeto JSON que incluye la mayoría del contenido del archivo scene.json. El ejemplo a continuación muestra cómo acceder a varios de los campos más comunes de la respuesta de esta función:

circle-exclamation

El objeto devuelto por getSceneInformation() incluye lo siguiente:

  • baseUrl: La URL base donde se aloja el contenido de la escena

  • content: Un array con todos los archivos de la escena, incluyendo su hash, que puede usarse junto con la baseUrl para recuperarlos.

  • metadataJson: El contenido completo del scene.json de la escena, como una cadena. Debes parsearlo para obtener valores específicos.

  • urn: El urn único para la escena en su conjunto.

El ejemplo a continuación parsea el contenido de metadataJson para obtener valores de propiedades en el archivo scene.json

Última actualización