# Profiles

Perfis são a descrição básica de um jogador, com informações como seu nome no mundo e avatar.

Eles estão disponíveis em servidores de conteúdo como [entities](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md), embora os World Explorers geralmente utilizem o sistema de comms para obter versões atualizadas dinamicamente.

O sistema está preparado para permitir múltiplas identidades com o mesmo proprietário, todas incluídas como avatares no manifest da entidade. Na prática, porém, a grande maioria dos jogadores possui apenas uma.

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

Perfil [pointers](https://github.com/decentraland/docs/blob/main/contributor/pointers/README.md) são o endereço Ethereum do proprietário, sem prefixo ou sufixo. Por exemplo:

```
0x210c4415d6a71195af76beef9b85dd0eb43f35df
```

### Campos de Metadata

| Campo      | Valor                                                                          |
| ---------- | ------------------------------------------------------------------------------ |
| `avatares` | Um array de descrições para cada um dos avatares do proprietário (ver abaixo). |

### Avatares

Cada avatar em `metadata.avatars[]` representa uma identidade com o mesmo proprietário, e possui várias propriedades que permitem aos clientes exibir perfis, renderizar avatares no mundo e contatar o proprietário.

| Campo            | Valor                                                                                                                                                |
| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `userId`         | O [pointer](https://github.com/decentraland/docs/blob/main/contributor/pointers/README.md) que resolve (ou que costumava resolver) para este perfil. |
| `name`           | O nome exibido deste jogador.                                                                                                                        |
| `email`          | (Opcional) Um endereço de e-mail deste jogador.                                                                                                      |
| `description`    | (Opcional) Texto escolhido pelo jogador para descrever-se.                                                                                           |
| `ethAddress`     | O endereço ethereum deste jogador (atualmente igual ao seu `userId`).                                                                                |
| `hasClaimedName` | Se o `name` campo é um nome ENS reclamado.                                                                                                           |
| `unclaimedName`  | Um nome temporário para usuários sem um nome ENS (por exemplo, convidados).                                                                          |
| `tutorialStep`   | O progresso do tutorial para este jogador.                                                                                                           |
| `avatar`         | Propriedades do avatar do jogador no mundo (ver abaixo).                                                                                             |

Um exemplo:

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

#### Campo do Avatar

O `metadata.avatars[].avatar` campo tem todas as informações que um World Explorer (ou outros clientes, como um editor de avatar independente) requer para renderizar um jogador.

| Campo       | Valor                                                                                                                                                     |
| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `bodyShape` | O [pointer](https://github.com/decentraland/docs/blob/main/contributor/pointers/README.md) para a entidade body shape do avatar.                          |
| `snapshots` | Um objeto com imagens para este avatar (ver abaixo).                                                                                                      |
| `eyes`      | Um objeto com um `color` na forma de um `{ r, g, b }` objeto para os olhos do avatar.                                                                     |
| `hair`      | Um objeto com um `color` na forma de um `{ r, g, b }` objeto para o hair do avatar.                                                                       |
| `skin`      | Um objeto com um `color` na forma de um `{ r, g, b }` objeto para o skin do avatar.                                                                       |
| `wearables` | Um array de [wearable pointers](https://github.com/decentraland/docs/blob/main/contributor/entity-types/wearables/README.md#pointers) em uso pelo avatar. |

Para ilustrar:

```json
{
  "bodyShape": "urn:decentraland:off-chain:base-avatars:BaseMale",
  "snapshots": {
    // Veja abaixo
  },
  "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

O `metadata.avatars[].avatar.snapshots` campo contém [identificadores de arquivo](https://github.com/decentraland/docs/blob/main/contributor/filesystem/README.md#identifiers) para imagens (incluídas no [`content` campo de nível superior](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md#properties)). Cada propriedade é um tipo de imagem, e atualmente existem dois: `face256` (uma miniatura) e `body` (uma versão em tamanho real).

Por exemplo:

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