# Emotes

Los emotes son los [entidades](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md) que contienen animaciones para los avatares de los jugadores.

Incluyen archivos en formato GLB para diferentes body shapes.

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

Los emotes tienen exactamente un asociado [pointer](https://github.com/decentraland/docs/blob/main/contributor/pointers/README.md), que indica la colección a la que pertenecen y su índice dentro de ella. Son URNs de esta forma:

```
urn:decentraland:matic:collections-v2:<dirección de la colección>:<índice del elemento>
```

Para ilustrar, el `pointers` array para un emote se ve así:

```json
{
  "pointers": [
    "urn:decentraland:matic:collections-v2:0x2d9560df9dd8ba8b2dc3746bc1d217698d258fb5:0"
  ],
  // ... otras propiedades de la entidad
}
```

### Campos de metadata

Los emotes comparten la mayoría de sus campos básicos con [wearables](https://github.com/decentraland/docs/blob/main/contributor/entity-types/wearables/README.md). El `emoteDataADR74` propiedad es donde se encuentra la información específica del emote.

| Campo               | Valor                                                                                                                                                           |
| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`                | El [pointer](https://github.com/decentraland/docs/blob/main/contributor/pointers/README.md) que resuelve (o solía resolver) a este emote.                       |
| `name`              | El título para mostrar de este emote en un [collection](https://github.com/decentraland/docs/blob/main/contributor/collections/README.md).                      |
| `description`       | Una descripción extendida para este emote.                                                                                                                      |
| `imagen`            | El [nombre de archivo interno](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md#files) con una imagen para este emote.             |
| `miniatura`         | El [nombre de archivo interno](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md#files) para una versión de 256x256 de la `imagen`. |
| `rareza`            | Uno de `común`, `poco común`, `raro`, `épico`, `legendario`, `exótico`, `mítico` o `único`.                                                                     |
| `i18n`              | Un array de traducciones para el campo `name` del.                                                                                                              |
| `collectionAddress` | La dirección de Ethereum de la colección que contiene este emote.                                                                                               |
| `metrics`           | Algunas mediciones útiles sobre las animaciones (ver abajo).                                                                                                    |
| `emoteDataADR74`    | Los metadatos extendidos para este emote, como se define en [ADR-74](https://adr.decentraland.org/adr/ADR-74) (ver abajo).                                      |

Así es como luce un JSON típico:

```json
{
  "id": "urn:decentraland:matic:collections-v2:0x2d9560df9dd8ba8b2dc3746bc1d217698d258fb5:0",
  "name": "Funny Dance",
  "description": "Move around like a champ",
  "image": "image.png",
  "thumbnail": "thumbnail.png",
  "rarity": "rare",
  "i18n": [
    { "code": "es", "text": "Danza Graciosa" }
  ],
  "collectionAddress": "0x2d9560df9dd8ba8b2dc3746bc1d217698d258fb5",
  "metrics": {
    // Objeto de mediciones (ver abajo).
  },
  "emoteDataADR74": {
    // Metadatos extendidos definidos en ADR-74 (ver abajo).
  }
}
```

### Métricas

En la `metadata.metrics` objeto, encontrarás algunas mediciones simples para la animación empaquetada con este emote. Un ejemplo:

```json
{
  "triangles": 0,
  "materials": 0,
  "textures": 0,
  "meshes": 0,
  "bodies": 0,
  "entities": 1
}
```

### Emote Data ADR-74

Este objeto contiene los campos que los World Explorers (u otras aplicaciones gráficas) necesitan para animar modelos con este emote.

| Campo             | Valor                                                                                          |
| ----------------- | ---------------------------------------------------------------------------------------------- |
| `category`        | Uno de `dance`, `stunt`, `greetings`, `fun`, `poses`, `reactions`, `horror` o `miscellaneous`. |
| `representations` | Un array de archivos de animación asociados a diferentes body shapes.                          |
| `tags`            | Un array de etiquetas (strings) descriptivas de este emote.                                    |
| `loop`            | `true` si la animación debe repetirse una vez que termina.                                     |

Un poco de JSON para mayor claridad:

```json
{
  "category": "dance",
  "representations": [
    // Información sobre la animación para diferentes body shapes (ver abajo).
  ],
  "tags": [ "carnaval", "dance" ],
  "loop": true
}
```

#### Representaciones

Cada elemento en el `metadata.emoteDataADR74.representations` campo define los archivos de animación apropiados para cada body shape.

| Campo        | Valor                                                                                                                                              |
| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `bodyShapes` | Un array de body shape aplicables [pointers](https://github.com/decentraland/docs/blob/main/contributor/pointers/README.md).                       |
| `mainFile`   | El [nombre de archivo interno](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md#files) para el archivo GLB principal. |
| `contents`   | Todos los archivos, incluyendo `mainFile` y cualquier adicional que pueda referenciar.                                                             |

Por ejemplo, una `representation` entrada:

```json
{
  "bodyShapes": [ "urn:decentraland:off-chain:base-avatars:BaseMale" ],
  "mainFile": "male/funnydance.glb",
  "contents": [
    "male/funnydance.glb"
  ]
}
```

Comúnmente encontrarás dos entradas de representation, una para `BaseMale` y una para `BaseFemale`.
