SiN Episodes and the USK - Part 2

In this installment, we’re going to be talking about changes to ragdoll physics in “SiN Episodes.” You can read the previous installment about unarmed enemies and civilians here.

Before I start on this one, I need to talk about the two types of ragdolls available in “SiN Episodes” and the Source engine: server and client.

A client-side ragdoll is the most common type of ragdoll in Source. What happens is when an enemy dies, the server entity associated with that enemy is deactivated and anything server-side doesn’t believe that the entity exists anymore. The client-side then handles all of the ragdoll physics, but can only collide against brush geometry and static model collision geometry. This is why you’ll occasionally see ragdolls blow through doors. The doors may start as brush geometry, but they get turned into models during the level compilation process, and ragdolls don’t interact with models. Once a client-side ragdoll is no longer in an area where it can be viewed, it gets tagged for deletion on the client side and gets deleted when it needs to create a new ragdoll or when there is too much processor time being spent processing ragdolls.

A server-side ragdoll is used only when we need a ragdoll to interact with something else in the world. For example, the body that goes flying out of the reception area in Intro 01 is a server-side ragdoll. Server-side ragdolls have all of their collisions handled on the server-side and are never deleted automatically. They also collide with anything that the server has knowledge of, like doors, moving walkways, etc. As a result, they are performance hogs. We only use a few server-side ragdolls in “SiN Episodes.”

When we received our initial USK report back, there were complaints that people could essentially have lots of fun with the ragdoll bodies in the game. One example that was used was someone using a shotgun to “sweep” a body across the floor. We were a bit confused by this, since our ragdoll physics were identical to “Half-Life 2.” This was not something that we saw as an issue when comparing ourselves to games that had shipped in the area, but it was an issue that we had to address before we could ship.

The number of dead bodies that can be handled by the USK version is much higher than that of the original release.
We discussed many alternatives, but finally settled on making it so that once a client-side ragdoll comes to rest, it locks into place and cannot be affected by weapon fire or explosions. We also forced ragdoll collections when changing visibility zones. This had two effects for the USK release. First, the USK release performed a little better during large-scale battles than the U.S. version because of fewer physics calculations going on. Second, the USK release actually became more macabre than the US version in some ways.

Because of how expensive even client-side ragdolls were, generally no more than 8-12 client-side ragdolls could be active at any one time before they started getting collected. With this change, the number of ragdolls that could be active at any one time increased exponentially. We had over 500 ragdolls going on at one time in one battle.

Personally, I prefer the end result of the USK version. Call me crazy if you want, but shooting a body after the life has left it just doesn’t do anything for me.

Related Links:
· SiN Episodes game section
· SiN Episodes forum
· Official SiN Episodes website