# Perfiles

Los perfiles son la descripción básica de un jugador, con información como su nombre en el mundo y su avatar.

Están disponibles en los content servers como [entidades](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md), aunque los World Explorers normalmente aprovechan el sistema de comms para obtener versiones actualizadas al vuelo.

El sistema está preparado para permitir múltiples identidades con el mismo propietario, todas incluidas como avatares en el manifiesto de la entidad. En la práctica, sin embargo, la gran mayoría de jugadores solo tiene una.

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

Perfil [pointers](https://github.com/decentraland/docs/blob/main/contributor/pointers/README.md) son la dirección de Ethereum del propietario, sin prefijo ni sufijo. Por ejemplo:

```
0x210c4415d6a71195af76beef9b85dd0eb43f35df
```

### Campos de metadata

| Campo      | Valor                                                                                    |
| ---------- | ---------------------------------------------------------------------------------------- |
| `avatares` | Un array de descripciones para cada uno de los avatares del propietario (ver más abajo). |

### Avatares

Cada avatar en `metadata.avatars[]` representa una identidad con el mismo propietario y tiene varias propiedades que permiten a los clientes mostrar perfiles, renderizar avatares en el mundo y contactar al propietario.

| Campo            | Valor                                                                                                                                      |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `userId`         | El [pointer](https://github.com/decentraland/docs/blob/main/contributor/pointers/README.md) que resuelve (o solía resolver) a este perfil. |
| `name`           | El nombre para mostrar de este jugador.                                                                                                    |
| `email`          | (Opcional) Una dirección de correo electrónico de este jugador.                                                                            |
| `description`    | (Opcional) Texto elegido por el jugador para describirse a sí mismo.                                                                       |
| `ethAddress`     | La dirección ethereum de este jugador (actualmente igual a su `userId`).                                                                   |
| `hasClaimedName` | Si el `name` campo es un nombre ENS reclamado.                                                                                             |
| `unclaimedName`  | Un nombre temporal para usuarios sin un nombre ENS (p. ej., invitados).                                                                    |
| `tutorialStep`   | El progreso del tutorial de este jugador.                                                                                                  |
| `avatar`         | Propiedades del avatar del jugador en el mundo (ver más abajo).                                                                            |

Un ejemplo:

```json
{
  "userId": "0x210c4415d6a71195af76beef9b84dd0eb43f35da",
  "name": "Bob",
  "email": "",
  "hasClaimedName": false,
  "description": "",
  "ethAddress": "0x210c4415d6a71195af76beef9b84dd0eb43f35da",
  "avatar": {
    // Ver abajo
  }
}
```

#### Campo de Avatar

El `metadata.avatars[].avatar` el campo tiene toda la información que un World Explorer (u otros clientes, como un editor de avatares independiente) requiere para renderizar a un jugador.

| Campo       | Valor                                                                                                                                                         |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `bodyShape` | El [pointer](https://github.com/decentraland/docs/blob/main/contributor/pointers/README.md) al entity de body shape del avatar.                               |
| `snapshots` | Un objeto con imágenes para este avatar (ver más abajo).                                                                                                      |
| `eyes`      | Un objeto con un `color` en la forma de un `{ r, g, b }` objeto para los ojos del avatar.                                                                     |
| `hair`      | Un objeto con un `color` en la forma de un `{ r, g, b }` objeto para el hair del avatar.                                                                      |
| `skin`      | Un objeto con un `color` en la forma de un `{ r, g, b }` objeto para el skin del avatar.                                                                      |
| `wearables` | Un arreglo de [wearable pointers](https://github.com/decentraland/docs/blob/main/contributor/entity-types/wearables/README.md#pointers) en uso por el avatar. |

Para ilustrar:

```json
{
  "bodyShape": "urn:decentraland:off-chain:base-avatars:BaseMale",
  "snapshots": {
    // Ver abajo
  },
  "eyes": {
    "color": { "r": 0.37109375, "g": 0.22265625, "b": 0.1953125 }
  },
  "hair": {
    "color": { "r": 0.234375, "g": 0.12890625, "b": 0.04296875 }
  },
  "skin": {
    "color": { "r": 0.80078125, "g": 0.609375, "b": 0.46484375 }
  },
  "wearables": [
    "urn:decentraland:off-chain:base-avatars:eyes_00",
    "urn:decentraland:off-chain:base-avatars:eyebrows_00",
    "urn:decentraland:off-chain:base-avatars:mouth_00",
    "urn:decentraland:off-chain:base-avatars:m_mountainshoes.glb",
    "urn:decentraland:off-chain:base-avatars:sport_jacket",
    "urn:decentraland:off-chain:base-avatars:brown_pants",
    "urn:decentraland:off-chain:base-avatars:aviatorstyle",
    "urn:decentraland:off-chain:base-avatars:casual_hair_03",
    "urn:decentraland:off-chain:base-avatars:Mustache_Short_Beard"
  ]
}
```

#### Snapshots

El `metadata.avatars[].avatar.snapshots` el campo contiene [identificadores de archivo](https://github.com/decentraland/docs/blob/main/contributor/filesystem/README.md#identifiers) para imágenes (incluidas en el [`content` campo de nivel superior](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md#properties)). Cada propiedad es un tipo de imagen, y actualmente hay dos: `face256` (una miniatura) y `body` (una versión de tamaño completo).

Por ejemplo:

```json
{
  "face256": "bafkreidvjwc3gqqdqk646rqnxnqzpsyjsjafqfc76zenfgjnm2ahbvrtsd",
  "body": "bafkreigclygt6vzzu7myzg3weifapb3a5uec245lzndg4f53y4vfb3cmwm"
}
```
