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.

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 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_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_ProfileOverlayHandling .

  2. Once the avatar type has been verified, request the character load on BPMC_AvatarInfo. This component manages loading the specific GLB on the M2M_CharacterAssetComponent as well as replicating the avatar type information out to observing clients.

  3. BPM_ODK_PlayerCharacterBase listen 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 AvatarTypeUpdated event on the BPMC_AvatarInfo component.

If you're interesting in modifying the default avatar behaviour on clients, then overriding the RefreshAvatarTypeAnimState on your ODK character will allow you to react to the default avatar behaviour.

Last updated