Files

7.9 KiB

RigProbe findings

Captured with RigProbe v0.3.0 on 2026-09-24.

Player

  • Animation root: LocalPlayer/PlayerAnimator/Root, skeleton starts at Hips
  • Animator is Generic, not Humanoid (PlayerAControllerGenerated, 12 layers, 271 parameters). No character in the game uses a Humanoid avatar, so Unity retargeting is not available and body swaps need a manual bone map.
  • The visible body is head + arms (race system) + clothing (clothing system). There is no base body mesh.
  • Head has 2 expression blendshapes: 0 Angry, 1 Scared. ExpressionBlendsStartIndex is 0.
  • SkinnedMeshBoneRemapCache (Endnight.Animation) retargets meshes onto the player rig by bone path.

Races

PlayerRaceSystem._races holds 8 entries, applied by list index. Entry 6 (asset BlackBRace) has its race field set to BlackA, but it has its own head and works correctly in game.

Index Race Asset Head GUID Arms GUID
0 White WhiteRace c6b5d71936b7773418409c28fbedc0a4 3886900e0d13c3d4f97a4795c8d0f0bb
1 Black BlackRace 091aa8cb2ce206441b1ff4d1a3c02ab9 7b273beb092763143bab57f876dce75d
2 Latin LatinRace c60e9927531d33745b61950677621768 dca5d9c41251d324e9af4c916f91a049
3 Asian AsianRace a90a307a8c0607c40b68d376074715df 3ce89e7484ac88244b1df4b6ae8a4c6f
4 BlackA BlackARace ff992ec27e7740142a305730e65ec46a 7b273beb092763143bab57f876dce75d
5 WhiteA WhiteARace c67c50b0bbf49e244bb0d2ac839d9b69 3886900e0d13c3d4f97a4795c8d0f0bb
6 BlackB BlackBRace 2a66a9d5f2b53cc4185d37f4b8a59b37 b1e878151ef75294687db0e618ec4844
7 LatinA LatinARace 65c86538006018140835657ca528e0c1 b1cd63fc76d99f94694fe1fc73e67f9a

Clothing

Defaults are TacticalJacket, TacticalPants, TacticalBoots and Backpack.

Item Asset Slots
402 Backpack Back
444 TacticalRebreather Back
487 SilkPyjamas Torso, Legs, Feet, Overcoat
489 TacticalPants Legs
490 Hoodie Torso, Overcoat
491 OldJacket Torso, Overcoat
492 Tuxedo Torso, Legs, Feet, Overcoat
493 LeatherJacket Torso, Overcoat
495 TacticalJacket Torso, Overcoat
499 Wetsuit Torso, Legs, Feet, Overcoat
500 PuffyJacket Overcoat
501 TacticalBoots Feet
572 GoldenArmour Head, Torso, Legs, Hands, Feet, Overcoat
639 SpaceSuit Torso, Legs, Feet, Overcoat
703 PriestOutfit Torso, Legs, Feet, Overcoat
749 FlightAttendantUniform Torso, Legs, Feet, Overcoat

Rig families

Bone name overlap is against the player rig.

Family Members Bones Player match
3485f157 Player 205 100%
a240987b Player cutscene rigs 122 96%
09b012a0 TacticalSoldier A/B/D, BossMutantChopper 125 93%
02a67127 Robby cutscene 132 88%
1b02206c Robby (Kelvin) 93 86%
db3f3ed0 WorkerDude posers 94 86%
c59ddba4 GoldArmourSkeletonPosed 60 75%
007bf83f TimmysDad 141 70%
d31a5f4b TacticoolCaucasianPoserRig 158 65%
18772f39 Male cannibals, male carry body 91 0%
e5ab1cff Female cannibals (Angel, Brandy, Crystal, Destiny, Elise, MuddyFemale), female carry body 67 0%
fe742020 DeadMaleA/B/C, DeadFemaleC 89 0%
19b9a8ac DeadFemaleB (bar, pool, gym) 87 0%
fcd908ad HeavyMale, FacelessMale 86 0%
e53f4f23 FatMale, FatFemale 90 0%
f8c8bc7e Mr/Miss Puffy, Puffton bosses, puffy carry bodies 63 0%
f7fc845b Virginia 161 0%

Rig naming

Player style: Hips, Spine, Spine1, Spine2, Neck, Neck1, Head, LeftShoulder, LeftArm, LeftForeArm, LeftHand, LeftHandIndex1, LeftUpLeg, LeftLeg, LeftFoot, LeftToeBase.

C1: style (cannibals, dead civilians, puffies): C1:c_hip_SC, C1:C_spine0_SC, C1:C_neck0_SC, C1:C_head0_SC, C1:L_armPrnt0_SC, C1:L_arm0_SC, C1:L_arm1_SC, C1:L_hand00_SC, C1:l_handAFingerA0_SC, C1:L_leg0_SC, C1:L_leg1_SC, C1:L_foot00_SC. Civilian dead bodies add twist and helper joints (_JNT).

Virginia uses a separate C1: rig with an A suffix (C1:C_spineAHip_SC, C1:R_armA0_SC) and face bones.

Female assets

  • LocalPlayer/CarryBody/FemaleCannibal exists on every player, vanilla included. Main mesh C1:Female_lp: 14209 verts, 67 bones, blendshapes 0 scared and 1 angry.
  • Civilian women exist only as scene posers: DeadFemaleBodyB/C with separate DeadFemaleHeadB/C, outfits for pool, gym and bar, and RichWomanCostume.
  • Virginia: C1:Virginia_body, 129 bones, 20 blendshapes, outfits camosuit, dress, leather suit, tracksuit, tutu.

Addressables catalog

Decoded from catalog.json into data/assets.tsv (5523 keys, 2917 entries). Race and clothing GUIDs resolve to prefabs, for example 65c86538006018140835657ca528e0c1 is Assets/Sons/Characters/PlayerA/Variations/LatinA/LatinAHead.prefab and c84bc6d4586c5f04b9eabc8d26ad54fe is Assets/Sons/Wearables/Clothing/TacticalJacket.prefab.

  • Loadable from anywhere: all player race heads and arms (including extra variants like WhiteHeadBalaclava, LatinArmsFull, AsianHeadNoHair), every clothing piece, Kelvin's full wardrobe (Assets/Sons/Characters/Robby/Robby*Addressable.prefab), Timmy and TimmysDad parts, FatFemaleCannibalSkin, FingersSkinAddressable, TwinsSkinAddressable, PlayerA/Poses/CultRobe*, playerARenderRig.fbx, VirginiaRig.fbx.
  • Not addressable: the dead civilian women (DeadFemaleBody/Head) and the female cannibal body meshes. They only exist when their scene or actor is loaded. The female carry body on the player is the reliable source.
  • In-game Locate with a wrapped string key returns nothing and walking the main catalog crashes the game, so use the offline decode.

Emotes

The player has no emote system. IPlayerState has no emote field, but the Bolt event updateMecanimRemoteState (layer, state hash, normalizedTime) tells other clients to play a state on a remote player, so any state that already exists in the player controller can be shown to vanilla clients.

Player controller PlayerAControllerGenerated: Generic avatar, 12 layers (Base Layer, AdditiveArms, upperBody, UpperBodyReactions, fullBodyActions, leftArm, spineAddititve2, ClientPredictionLayer, Inventory, InventoryUpperBody, Face, Blink), 1205 clips, 271 parameters. Pose and gesture states that exist on the player:

State Layer
couchIdle, seatedRockIdle fullBodyActions
injuredLoop, standUpIdle, standup, wakeUp fullBodyActions
checkArms, coldIdleVar1 upperBody
PlayerALighterLookAt Base Layer
PlayerAGuitar clips upperBody
PlayerAAngry, PlayerAScared Face

Kelvin (RobbyController, 86% bone match with the player) plays his emotes as full body states on Base Layer. Captured with rigwatch robby:

State Clip Short hash Full hash
ThumbsUp ThumbsUp 1712013045 -1646602863
ShakeHead ShakeHead -1770187688 27107153
(unnamed) RobbyEmoteYes 1721109824 1053072325
IdleScratchHead IdleScratchHead -628397148 1736991184
IdleSwatFly IdleSwatFly -331262521 476507385
IdleLookVar1 IdleLookVar1 336950523 -712749335

Other Kelvin emote clips: NodHead, RobbyEmoteHappy, RobbyEmoteSad, RobbyEmoteNo, RobbyEmoteConfused, RobbyPointIntro, RobbyPointLoop, RobbyPointOutro, HitHeadSmall, HitHeadBig, ShakeHeadStepBack. Virginia (VirginiaController): LaughWithPlayer, ThumbsUpReaction, PointStanding, VirginiaEmoteHappy, VirginiaEmoteSad, VirginiaEmoteYes, VirginiaEmoteNo, VirginiaEmoteConfused.

Kelvin and Virginia clips are not in the player controller, so playing them on a player (for example with a PlayableGraph clip overriding the player Animator) is only visible to modded clients.

Data layout

  • characters/ full rigprobe output: player, carry bodies, every actor prefab, live actors
  • scene/index.tsv and scene/rigfamilies.txt from rigscene
  • scene/samples/ one JSON per scene rig family
  • assets.tsv decoded Addressables catalog