Skip to main content

Character Customization Flow

How a skin picked in the Locker ends up on every party member's screen and in the match.

The Pieces​

PieceRole
WB_LockerThe locker room UI where the player picks a character and variation.
CharacterDataAsset instancesDefine each character: mesh variations map (string key → mesh), portraits, anim BP, unique Skin Type Key. See Character Data Asset.
BPC_CharacterCustomizationApplies a skin to its owning character (menu avatar or game character).
BPC_PlayerDataPersists the chosen skin locally + Steam Cloud.
Steam lobby member dataShares the chosen skin with other party members.

Two string keys describe any skin: Skin Type Key (which character, e.g. Manny/Quinn) and Skin Variation Key (which mesh variation of that character).

Selection Flow (Menu)​

  1. Player opens the Locker (WB_Locker) and clicks a character/variation.
  2. The selection is saved through PDATA_SavePlayerCharacterData (local save + cloud).
  3. The keys are written into the local player's lobby member data.
  4. On every member, HandleOnLobbyDataUpdate → Character Data Update reads the new keys, resolves the mesh through Get Skin Mesh with Anim (from BP_SPM_Library, using the CharacterDataAsset), and applies it to that member's avatar via BPC_CharacterCustomization → Set Character Skin and Color. Meshes are soft references loaded async with BPML_Components → LoadAndSetSkeletalMesh.

Validation​

Because members may come from different builds, Validate Skin Type checks the received Skin Type Key against All Characters in DA_PM_Settings. Unknown skins fall back to default via Reset Skin Type, so a modified client can't crash the menu.

In-Match Flow​

BP_GameCharacter also carries BPC_CharacterCustomization (Character Type = Game Character). In the match (a real replicated level), the component uses the Refresh RepNotify (OnRep_Refresh) to replicate skin application: the server sets the skin keys from the player's data, and each client applies the mesh in the RepNotify.

Component Details​

BPC_CharacterCustomization functions:

FunctionPurpose
Set Character Skin and Color / Get Character Skin and ColorApply/read the current skin keys on the owner.
Set Spot Index / Get Spot IndexWhich party spot this avatar belongs to.
Get User Steam IDWhich Steam user this avatar represents.
Set Menu Avatar VisibilityShow/hide the avatar (used when spots empty).
Get Used As AvatarWhether the owner is a menu avatar vs game character.
OnRep_RefreshRepNotify handler that reapplies the skin on clients.

Name plate placement is adjusted with the Name Plate X/Y/Z Offset variables (see Character Customization).

Adding Your Own Character​

  1. Create a new CharacterDataAsset instance in DataAssets/Characters/ with a unique Skin Type Key, your mesh variations map, portraits and anim BP.
  2. Add it to All Characters in DA_PM_Settings.
  3. Done. The Locker, avatars and validation all read from that array.