OverviewPacketsPlayerSkin
ID 0x5D · 93BothPlayer
PlayerSkin
Client skin update: full SerializedSkin with geometry, animations, persona pieces and tint colors.
player-skin.bin
struct PlayerSkin {
uuid.UUID Uuid;
SerializedSkinRef Skin;
string LocalizedNewSkinName;
string LocalizedOldSkinName;
}Structure
| Field | Type | Description |
|---|---|---|
| Uuid | uuid.UUID | |
| Skin | SerializedSkinRef | |
| Localized New Skin Name | string | |
| Localized Old Skin Name | string |
Structure of SerializedSkinRef
| Field | Type | Description |
|---|---|---|
| Id | string | |
| Play Fab Id | string | |
| Resource Patch | string | |
| Image Data | SkinImage | |
| Animated Image Data | varuint32 count + AnimatedImageData[] | Length-prefixed sequence. |
| Cape Image Data | SkinImage | |
| Geometry Data | string | |
| Geometry Data Min Engine Version | string | |
| Animation Data | string | |
| Cape Id | string | |
| Full Id | string | |
| Arm Size | ArmSizeType | |
| Skin Color | Color | |
| Persona Pieces | varuint32 count + SerializedPersonaPieceHandle[] | Length-prefixed sequence. |
| Piece Tint Colors | string | |
| Is Premium | bool | |
| Is Persona | bool | |
| Is Persona Cape On Classic Skin | bool | |
| Is Primary User | bool | |
| Overrides Player Appearance | bool | |
| Trusted Skin Flag | string | |
| Profile Hash | string |
Structure of SkinImage
| Field | Type | Description |
|---|---|---|
| Width | uint32 (LE) | |
| Height | uint32 (LE) | |
| Image Bytes | byte[] |
Structure of AnimatedImageData
SerializedSkinImpl::write writes the image inline rather than through a
| Field | Type | Description |
|---|---|---|
| Image Width | uint32 (LE) | |
| Image Height | uint32 (LE) | |
| Image Bytes | byte[] | |
| Type | uint32 (LE) | |
| Frames | float32 (LE) | |
| Animation Expression | uint32 (LE) |
Structure of SerializedPersonaPieceHandle
| Field | Type | Description |
|---|---|---|
| Piece Id | string | |
| Piece Type | string | |
| Pack Id | string | |
| Is Default Piece | bool | |
| Product Id | string |
Notes
- Servers should re-validate skin sizes and ids here — the client sends this on persona changes.
