Profiles
Profiles are the basic description of a player, with information such as their in-world name and avatar.
They are available in content servers as regular entities, though World Explorers usually leverage the comms system to get up-to-date versions on the fly.
The system is prepared to allow for multiple identities with the same owner, all included as avatars in the entity manifest. In practice though, the vast majority of players have only one.
Pointers #
Profile pointers are the Ethereum address of the owner, without any prefix or suffix. For example:
0x210c4415d6a71195af76beef9b85dd0eb43f35df
Metadata Fields #
Field | Value |
---|---|
avatars |
An array of descriptions for each of the owner’s avatars (see below). |
Avatars #
Each avatar in metadata.avatars[]
represents an identity with the same owner, and has a number of properties that allow clients to display profiles, render avatars in-world and contact the owner.
Field | Value |
---|---|
userId |
The pointer that resolves (or used to resolve) to this profile. |
name |
The display name of this player. |
email |
(Optional) An email address for this player. |
description |
(Optional) Text chosen by the player to describe themselves. |
ethAddress |
The ethereum address of this player (currently equal to their userId ). |
hasClaimedName |
Whether the name field is a claimed ENS name. |
unclaimedName |
A temporary name for users without an ENS name (e.g. guests). |
tutorialStep |
The progress of the tutorial for this player. |
avatar |
Properties of the player’s in-world avatar (see below). |
An example:
{
"userId": "0x210c4415d6a71195af76beef9b84dd0eb43f35da",
"name": "Bob",
"email": "",
"hasClaimedName": false,
"description": "",
"ethAddress": "0x210c4415d6a71195af76beef9b84dd0eb43f35da",
"avatar": {
// See below
}
}
Avatar Field #
The metadata.avatars[].avatar
field has all the information a World Explorer (or other clients, such as a standalone avatar editor) require to render a player.
Field | Value |
---|---|
bodyShape |
The pointer to the avatar’s body shape entity. |
snapshots |
An object with images for this avatar (see below). |
eyes |
An object with a color in the form of an { r, g, b } object for the avatar’s eyes. |
hair |
An object with a color in the form of an { r, g, b } object for the avatar’s hair. |
skin |
An object with a color in the form of an { r, g, b } object for the avatar’s skin. |
wearables |
An array of wearable pointers in use by the avatar. |
To illustrate:
{
"bodyShape": "urn:decentraland:off-chain:base-avatars:BaseMale",
"snapshots": {
// See below
},
"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 #
The metadata.avatars[].avatar.snapshots
field contains file identifiers for images (included in the content
top-level field). Each property is an image kind, and there are currently two: face256
(a thumbnail) and body
(a full-sized version).
For example:
{
"face256": "bafkreidvjwc3gqqdqk646rqnxnqzpsyjsjafqfc76zenfgjnm2ahbvrtsd",
"body": "bafkreigclygt6vzzu7myzg3weifapb3a5uec245lzndg4f53y4vfb3cmwm"
}