Animation stuff

In my first post about Subsurface, I mentioned “a procedural animation system which takes care of animating the characters (which are ragdolls run by Farseer)”.

Early on I decided that I will be using ragdolls simulated by some physics engine to get the characters thrown around by water bursting through a hole in the wall or dragged around by water flowing from room to another. Letting the physics engine take control of the characters when a water current is too strong or a jet of water hits them hard enough, but how would I get the characters to react to the water when they’re controlled by the player, not a ragdoll thrown around by the physics engine?

I decided to let the physics engine be in control of the characters constantly: the characters are animated by applying varying amounts of forces to their limbs. Thanks to this, they automatically react to the world around them. For example, a water current exerts a force on the limbs that are underwater, making the characters struggle to move their legs against the current, and carrying something heavy affects the posture and walking speed of a character.

Here are some clips of the current state of the animation system. It’s still a work in progress – as you can see, the movement is still pretty comedic at times (QWOP, anyone?) and especially turning around looks really unnatural.

Here’s also a clip of our hero trying to shoot a placeholder monster with the placeholder turret he just loaded:



  1. Looks nice so far.

    Just wondering, is this framerate-independent? Seems like you need to apply a bunch of different forces for this to work, which might be difficult to do correctly if the game isn’t running at 60 FPS.

    1. I’m just multiplying all the forces by deltatime (the same way I did in SCP-CB). It keeps the animation consistent when the framerate is above ~25 FPS, but below that, the walking and running start to look a bit strange.

      I don’t think it’s a major issue, if the game doesn’t run above 25 FPS it’s going to look like crap no matter how consistently the animation is running.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>