CS2 mechanicVERIFIED (T1 from 2026 demos)Updated 2026-07-28

CS2 networks a death ragdoll one tick after the kill — and bone 7 is the head

The impulse, hit position and damaged bone that shape a CS2 corpse are networked on the tick m_bClientSideRagdoll flips true — exactly 1 tick after the player_death event, never on it — and skeleton bone index 7 is the head on every current CS2 agent. Read those fields off the death event instead and you get the victim's PREVIOUS death: a different round, a different weapon, a different direction. The body itself is 15 rigid bodies joined by 14 cone-twist constraints, simulated on each viewer's client.

Extracted from the IEM Cologne Major 2026 falcons-vs-vitality demos (three maps, 441 kills) and from the current agent model's compiled physics block.

Seed arrives
+1 tick after player_death
Trigger field
m_bClientSideRagdoll flips true
Head bone index
7 (head_0)
Explosion damage bone
−1 (position = blast centre)
Explosion force magnitude
7,384–9,000
Burn and fall force
0 — no impulse at all
Rigid bodies
15 (total mass 272)
Joints
14 cone-twist
ragdoll gravity / friction scale
1 / 0.6
cl_player_ragdolls_collide
false
Watch a real pro CS2 match in 3D

Plays in your browser · no download · no account

How it was measured

This is a timing fact before it is a physics fact, and getting the timing wrong is invisible until you look closely. When a player dies the kill event fires first, and the ragdoll fields on the victim still hold whatever they held — which, for anyone who has died before in the same recording, is their last death. Sample at the event and every corpse is seeded from the wrong kill; on a player's first death you get zeroes, and the body drops straight down with no impulse.

The correct sample is defined by a flag rather than by an offset. m_bClientSideRagdoll flips true on the tick the client-side corpse is created, and the seed fields are networked with it. On the 2026 tournament corpus that flip lands one tick after the event on every kill that has a sample there — 430 of 430 — so +1 is the observed value while the flip is the rule.

The bone index is a separate trap. m_nRagdollDamageBone is a SKELETON index, not a hitgroup, and 7 is head_0: it matched the networked headshot flag on 76 of 76 headshot kills. A limb hit is not a low number — arms are 9 to 11 and 13 to 15, legs are 17, 20 and 21 — so any rule of the form "bone index at or above 6 means a headshot" mislabels roughly a fifth of all corpses. This value also survived being "corrected" to 6 by a measurement on an older recording; on a current-build demo it is 7.

Non-bullet deaths do not scale the same impulse down. An explosion reports bone −1 and puts the damage position at the blast centre, which can be over a thousand units from the body, at a force magnitude between 7,384 and 9,000. A fire or fall death reports zero force and a zero damage position — CS2 applies NO impulse to a burned or fallen body; it collapses under gravity. Any viewer that adds a little upward velocity to make such a death read better is inventing motion the game never applies.

The ragdoll being driven is authored, not generic: 15 rigid bodies with real masses summing to 272, 12 capsules and 3 spheres over the flesh surface property, and 14 cone-twist joints carrying authored swing and twist limits. Ragdolls run at full gravity, at 0.6 friction scale, and do not collide with each other at all.

The honest limit is the pose, and it is a hard limit rather than a gap. The corpse is client-side: the server never instantiates a ragdoll entity, so no demo of any build records the per-tick pose, and two CS2 clients watching the same demo are not guaranteed to draw the same corpse. A demo gives every INPUT to that simulation exactly; the trajectory it produces is not something this project claims to reproduce.

Every fact on this page, with its tier

The ragdoll seed is networked on the tick m_bClientSideRagdoll flips true, never at the death tick

Value
+1 tick (observed); the flip is the rule
Confidence tier
VERIFIED (T1 demo)
How it was derived
A per-tick sweep of the victim pawn around each kill, comparing the fields at the event against the fields at the flip — scanning for the flip rather than hardcoding the offset, because the flip is the definition.
Evidence
441 kills across three 2026 tournament maps; 430 had a sample at +1 and all 430 flip at +1. Sampling at the event yields the previous death instead.

m_nRagdollDamageBone is a SKELETON bone index, and 7 = head_0 on current CS2 agents (arms 9/10/11 and 13/14/15, legs 17/20/21)

Value
bone 7
Confidence tier
VERIFIED on 2026 data (T1)
How it was derived
The index was resolved against the agent model's own bone-name array, then cross-checked against the separately networked headshot flag rather than against a guess about hitgroups.
Evidence
Bone 7 on 76/76 headshot kills with the networked flag agreeing 76/76. An earlier pass on a pre-2026 recording read 6; that recording is a different build and the 2026 re-derivation restored 7.

Non-bullet deaths: an explosion reports bone −1 with the damage position at the blast centre and force 7,384–9,000; fire and fall deaths report ZERO force and a zero damage position

Value
7,384–9,000 (blast) / 0 (fire, fall)
Confidence tier
VERIFIED (T1 demo)
How it was derived
Read at the flip tick and separated by the networked ragdoll weapon name, which is the reliable discriminator between bullet, explosion, fire and fall.
Evidence
Consistent across two 2026 maps. The blast centre can sit over 1,000 units from the victim, so it is not a body-local hit point; the burn and fall zeroes are exact, which is what makes a hopping burn death invented motion.

The player ragdoll is 15 rigid bodies (total mass 272), 12 capsules and 3 spheres on the flesh surface property, and 14 cone-twist joints with authored swing and twist limits

Value
15 bodies / 14 joints
Confidence tier
VERIFIED (T1, compiled agent model)
How it was derived
Extracted from the physics block of the current build's compiled agent model — authored data, not inferred from motion.
Evidence
Masses: pelvis 50, spine 50, upper legs 35, lower legs 25, head 12, arm segments 7, hands and ankles 3. One agent model has been dumped; the values are expected to be shared but that has not been confirmed across agents.

ragdoll_gravity_scale 1, ragdoll_friction_scale 0.6, cl_player_ragdolls_collide false — CS2 corpses do not collide with each other

Value
1 / 0.6 / false
Confidence tier
VERIFIED (cvarlist, T2)
How it was derived
Read literally from the current build's convar list.
Evidence
Ragdoll-versus-ragdoll collision being off is a real simplification in the game itself, not one this project made.

Open questions — what is not known

The per-tick corpse pose is UNKNOWABLE from demos — not merely unmeasured.

The ragdoll classes are declared in the demo's server classes and instantiated zero times, and the server ragdoll origin is written once and then held constant. A ragdoll port can reach faithful transcription of its inputs and can never reach VERIFIED on its output.

Bullet force magnitudes are INDICATIVE and are therefore not published here.

The per-weapon impulse looks like a constant scaled on a headshot, but it was measured on one map, there is no authored field for it in the weapon data, and pinning it needs the server binary. No number for it appears on this page.

How the impulse is distributed across the 15 bodies is unresolved.

The magnitude, the application point and the damaged bone are all recorded; which bodies receive what share of it is a client-side detail that needs binary work. The victim's velocity at death is no help either — the pawn's absolute-velocity field reads zero on every recorded kill.

Other CS2 mechanics

Last updated 2026-07-28 — the date of the measurement, not of this page's rendering. What the confidence tiers mean. Memorin is not affiliated with or endorsed by Valve; Counter-Strike 2 is a trademark of Valve Corporation.