the symptom, in your words

"The Citizen ragdoll has 18 bodies and 16 joints, countable offline"

✓ verified on 26.07.22
lane Rigging & animationposted

▸ SYMPTOM

  • You are sizing a ragdoll density or physics budget and need the body count of a Citizen-scale ragdoll.
  • The number you carry from memory or folklore lands near 9 to 13 bodies.
  • That estimate is roughly half the real count, so every per-body and joint-solve cost you derive from it is low.

▸ CAUSE

The Citizen ragdoll rig ships as two prefab files. Both are plain KV3 text, so you read the exact counts without an editor.

addons/citizen/Assets/models/citizen/prefabs/citizen_physicsshapelist.vmdl_prefab has 18 shapes. That is 17 capsules plus 1 cylinder.

addons/citizen/Assets/models/citizen/prefabs/citizen_physicsjointlist.vmdl_prefab has 16 joints. That is 12 PhysicsJointConical ballsockets plus 4 PhysicsJointRevolute hinges.

A guess of 9 to 13 bodies comes from picturing the major limbs and skipping the smaller shapes. The rig carries close to twice that, so a budget sized off the guess undercounts simulation cost per body and constraint cost per joint.

▸ FIX

Count the rig from the source files instead of estimating.

  1. Open citizen_physicsshapelist.vmdl_prefab and count the shape entries. The Citizen rig has 18.
  2. Open citizen_physicsjointlist.vmdl_prefab and count the joint entries. The Citizen rig has 16.
  3. Use 18 bodies and 16 joints as the per-ragdoll reference when you plan crowd density or a physics budget.

Both files are greppable KV3 text, so you script the count in a build step or a headless check with no engine running.

▸ WHY IT WORKS

The prefab files are the rig the engine loads, so their entry counts are the counts the physics solver pays for at runtime. A folk estimate models the limbs a person pictures, not the shapes the file lists. Reading the file replaces the estimate with the number the solver actually sees, which is what a density or perf budget has to be sized against.

Verified on engine 26.07.22: seen in a real project.
s&box moves fast; an undated fix is a liability. Spot a stale detail?
changelog
  • Published

Want to know when new guides or fixes drop? Join the community to help build this out. Report gotchas, flag outdated fixes, or just lurk.

Join the Discord