# Scenes

Las escenas son los [entities](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md) que producen comportamiento en diferentes partes de Decentraland. Pueden abarcar múltiples parcelas de LAND, y los jugadores que las atraviesen en un World Explorer ejecutarán código especial proporcionado por la escena.

Puedes encontrar un ejemplo completo de la vida real en [este manifiesto de la escena](https://peer.decentraland.org/content/contents/bafkreidihplrc5cxarjkji2enmzhicpjoa2vrlqyyffnholmxb3o2xft3u) en el servidor de contenido de la Foundation.

### Punteros <a href="#pointers" id="pointers"></a>

Las escenas tienen uno o más [pointers](https://github.com/decentraland/docs/blob/main/contributor/pointers/README.md) en forma de cadenas de coordenadas de parcela, como `"0,0"`. Cada parcela que ejecuta la escena estará listada en la [`pointers` array](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md#properties) del manifiesto de la entity, y todos esos pointers serán resueltos por el content server a esa escena.

En otras palabras, puedes elegir las coordenadas x/y de una parcela y localizar la escena que se está ejecutando consultando al content server por el `"<x>,<y>"` pointer. Esta es la forma en que los World Explorers deciden si habilitar el comportamiento de una escena mientras el jugador navega por el mundo.

Un típico `pointers` array se ve así:

```json
{
  "pointers": [
    "-113,-134",
    "-113,-133",
    "-113,-132",
  ],
  // ... otras propiedades de la entity
}
```

Estos datos también están disponibles en el `metadata.scene.parcels` campo detallado más abajo, en caso de que quieras guardar solo el objeto específico de la escena en el manifiesto.

### Campos de Metadata

Hay varias propiedades especiales para [entities](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md) de tipo `scene` ubicadas en el `metadata` campo de nivel superior.

| Campo                 | Valor                                                                                                                                                                  |
| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `owner`               | Información sobre el mantenedor de la escena.                                                                                                                          |
| `main`                | El [nombre de archivo interno](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md#files) de este archivo JavaScript principal de la escena. |
| `tags`                | Un array de etiquetas en forma de cadenas que describen esta escena.                                                                                                   |
| `display`             | Información sobre la escena que los Explorers mostrarán a los jugadores (ver más abajo).                                                                               |
| `scene`               | Las parcelas en las que esta escena está activa y su ubicación central (ver más abajo).                                                                                |
| `contact`             | Nombre y dirección de correo electrónico para contactar a los creadores o mantenedores de la escena (ver más abajo).                                                   |
| `spawnPoints`         | Ubicaciones y ángulos de cámara para los jugadores que entran en esta escena (ver más abajo).                                                                          |
| `requiredPermissions` | Permisos recomendados que los Explorers deben solicitar a los jugadores (ver más abajo).                                                                               |
| `featureToggles`      | Configuraciones para feature flags                                                                                                                                     |

{% hint style="info" %}
Recuerda que las entities y su metadata pueden tener campos personalizados. Puedes encontrar algunas propiedades que no están listadas aquí.
{% endhint %}

#### Display

En `metadata.display`, encontrarás propiedades que son útiles para informar a los jugadores sobre la escena antes de que entren.

| Campo             | Valor                                                                                                                                                                               |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `title`           | El nombre para mostrar de esta escena.                                                                                                                                              |
| `description`     | Una descripción extendida de esta escena.                                                                                                                                           |
| `favicon`         | *Obsoleto* El [nombre de archivo interno](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md#files) a un icono, mostrado cuando esta escena está activa. |
| `navmapThumbnail` | El [nombre de archivo interno](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md#files) a la miniatura de esta escena para el mapa mundial.             |

Un ejemplo:

```json
{
  "title": "my_cool_scene",
  "favicon": "favicon.png",
  "navmapThumbnail": "thumbnail.png"
}
```

#### Scene

El `metadata.scene` la propiedad es un objeto que describe la posición de esta escena en el mapa mundial.

| Campo     | Valor                                                            |
| --------- | ---------------------------------------------------------------- |
| `parcels` | Un array de pointers de parcelas que ejecutan esta escena.       |
| `base`    | El pointer de la parcela para el punto de origen de esta escena. |

En la práctica, se ve así:

```json
{
  "parcels": [
    "17,-112", 
    "17,-113"
  ],
  "base": "17,-112"
}
```

El `base` el campo siempre se incluye en la `parcels` array.

#### Contact

El `metadata.contact` el objeto contiene la información de contacto del owner o mantenedor de la escena.

| Campo   | Valor                                                          |
| ------- | -------------------------------------------------------------- |
| `name`  | Un nombre para este contacto.                                  |
| `email` | (Opcional) Una dirección de correo electrónico para contactar. |

En JSON:

```json
{
  "name": "cool_scene_maker",
  "email": "hello@decentraland.org"
}
```

Mientras que el `name` campo se rellena en cada escena, encontrarás que en la práctica el `email` campo suele ser una cadena vacía. Esta es una elección de privacidad hecha por el creador de la escena.

#### Spawn Points

El `metadata.spawnPoints` el campo define un array de puntos y direcciones de cámara que determinan dónde deben aparecer los jugadores que entran en la escena y hacia dónde deben mirar inicialmente. Debe haber al menos un spawn point definido.

Cada elemento en el array tiene varias propiedades:

| Campo          | Valor                                                                               |
| -------------- | ----------------------------------------------------------------------------------- |
| `name`         | Una etiqueta para identificar este spawn point.                                     |
| `position`     | La posición inicial en un `{ x, y, z }` objeto con coordenadas float.               |
| `cameraTarget` | La dirección inicial de la cámara en un `{ x, y, z }` objeto con coordenadas float. |
| `default`      | Si este spawn point se usa a menos que se especifique lo contrario.                 |

Por ejemplo:

```json
[
  {
    "name": "spawn1",
    "position": { "x": 10.02, "y": 5.27, "z": 15.23  },
    "cameraTarget": { "x": 10.02, "y": 6.27, "z": 31.23 },
    "default": true
  }
]
```

{% hint style="info" %}
**📔 Nota**: El Spawn Area y Camera Target se pueden configurar usando el Creator Hub. Para más información, ve a la [Spawn Area](https://github.com/decentraland/docs/blob/main/creator/scene-editor/build/spawn-areas.md) docs.
{% endhint %}

#### Required Permissions <a href="#permissions" id="permissions"></a>

En `metadata.requiredPermissions` encontrarás un array de cadenas conocidas que declaran qué permisos deben solicitarse al jugador antes de que el World Explorer permita ciertas acciones. Esto recae en el Explorer; otros clientes construidos para diferentes propósitos pueden elegir ignorarlo.

Este es el conjunto actual de permisos soportados:

| Permission                          | Purpose                                                                             |
| ----------------------------------- | ----------------------------------------------------------------------------------- |
| `USE_FETCH`                         | Permitir que la escena realice solicitudes HTTP externas.                           |
| `USE_WEBSOCKET`                     | Permitir que la escena use la API de WebSocket para establecer conexiones externas. |
| `OPEN_EXTERNAL_LINK`                | Permitir que la escena abra una URL (en una pestaña del navegador o vista web).     |
| `USE_WEB3_API`                      | Permitir que la escena se comunique con una wallet.                                 |
| `ALLOW_TO_TRIGGER_AVATAR_EMOTE`     | Permitir que la escena anime el avatar del jugador con un emote.                    |
| `ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE` | Permitir que la escena cambie la posición del jugador.                              |

#### Feature Toggles

El `metadata.featureToggles` el campo permite que una escena indique si ciertas features del World Explorer deben estar habilitadas o deshabilitadas.

El campo contiene un objeto de la forma `{ [featureName]: 'enabled' | 'disabled' }`, como este:

```json
{
  "voiceChat": "enabled"
}
```

Actualmente, `voiceChat` es la única feature flag comúnmente soportada.


---

# Agent Instructions: 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:

```
GET https://docs.decentraland.org/contributor/contributor-es/contenido/tipos-de-entity/scenes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
