> For the complete documentation index, see [llms.txt](https://docs.otherside.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.otherside.xyz/odk-docs/odk-plugin/avatars.md).

# Avatars

As part of being part of the ODK ecosystem, you get some fairly extensive Avatar management out of the box. There's a few pieces to what's available, that we'll go through here.

#### What avatars are available?

Currently we've proved avatar implementation for the following collections:

1. Bored Ape Yacht Club
2. Meebits
3. Kodas
4. Moonbirds

There are also individual avatars meshes available for the following collections:

1. Mutant Ape Yacht Club
2. Voyagers (Otherside)

If you log into an experience with an account that has a wallet linked with a relevant token, you'll be able to select that avatar as your in-game character from the [Web Browser Avatar tab](/odk-docs/odk-plugin/web-browser.md).

Both the Koda and Moonbirds collections also have unique Animation Blueprints to allow custom animations (beyond the standard Otherside animations set).

More collections will be brought online as the ODK matures.

#### How are the avatars implemented?

To provide dynamic access to a vast array of dynamic characters, at runtime we download and encode the relevant character meshes from their [GLB](https://en.wikipedia.org/wiki/GlTF) definitions. This implementation allows us to utilize our Carnival renderer which allows us to scale the number of unique characters in a world at once to 10,000+ !

#### How is it implemented within the ODK?

Current supported avatar types are tracked within the `BPE_ODK_AvatarType` enum within Unreal.

The flow for selecting a player is as follows.

1. Retrieve the player's current selected avatar token via the KVStore within `BPC_ODK_PlayerProfileComponent` .
2. Once the avatar type has been verified, request the character load on `BPMC_ODK_AvatarComponent`. This component manages loading the specific GLB on the `M2M_CharacterAssetComponent` as well as replicating the avatar type information out to observing clients.
3. `BPMC_ODK_AvatarComponent` listens for avatar info updates, and then calls `RefreshAvatarTypeAnimState` on all clients whenever an update is observed. This functionality is currently responsible for setting the correct ABP + crowd details for the avatar.

If you're interested in observing when a player's avatar type changes, then bind to the `OnAvatarTypeUpdated` event on the `BPMC_ODK_AvatarComponent`.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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.otherside.xyz/odk-docs/odk-plugin/avatars.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.
