Uncharted Animation: An In-depth Look at the Character Animation Workflow and Pipeline

Jeremy Yates & Judd Simantov – In-Game Animation Lead & Lead Character TD

After a fantastic opening to GDC 2008 with Ken Levine’s inciteful speech on Storytelling in Bioshock, this, my second GDC lecture was a feast of practical information for animators. The audio track of the presentation can be found here.

Early Considerations

Naughty Dog are traditionally known for cartoony games. A move from a stylised look to realism would necessitate a review of their approach. As such, they decided on integrating mocap from the start, employing the service of House of Moves.

The initial goals were to create a stable rig and pipeline. Previous games left cinematic and game skeletons incompatible, but for Drake’s Fortune the aim was to have a single skeleton shared across both disciplines.

Early on, they decided against Motionbuilder as their exporter was Maya only and they didn’t have the skillset to allow them to recreate their exporter inside Motionbuilder. As a result the entire workflow was created inside Maya with their importer/exporter running at around 300 frames per second.


They created a custom tool to reference characters. Maya already supports referencing but they improved upon this to allow character selection and easy replacement. They needed consistent namespaces for references and so the editor was used to better handle this.

The mocap and animation rig existed in the same file. The default setting for copying mocap onto the animation rig was one key every three frames.

The animation team employed an animation library, (named iToons), for easy pasting of poses, (body or hand), and pre-existing animations as well as a time-warp curve for easy adjustment of an entire animations timing. A layer manager was devised to allow for subdivisions in Maya’s pre-existing visual layers.

One interesting addition was a visual arc tool, much like Max’s (or Motionbuilder’s) trajectory display, that would show the trajectory of a point over the course of the animation, only the keyframed positions were colour-coded and could be manually edited to affect the actual trajectory of the animated element it represented. Of note, their FK rig was set up in a manner that allowed it to be be manipulated as if it were IK.

The Road To Realism

Their initial treatment of the character movement style was very agile and versatile, involving flips etc, but this was scaled back in favour of a more “everyman” approach to the main protagonist. They naturally found this difficult to mocap due to the limitations of real-world physics on an actor. To overcome this the keyframed over the mocap to afford much more exaggeration.

The entire project ended up being around 40% mocap vs 60% keyframe. Motion was captured at 120fps, (a high fidelity), but they noticed a difference between the mocap and keyframes. In order to smooth the discrepancy, they willfully lowered the mocap quality by reducing keyframes, sometimes to only the key poses from an action. In addition, they employed what they called “Poor Man’s mocap“ – (video reference), accentuating poses, adding “punch” to timing, snapping extreme poses and removing unnecessary pauses.

The closing section of the speech was the most interesting, focusing not on the process, but on what they did with the animations after they’d been implemented in the game engine.

First up were what they called “Partials”, essentially sets of bones that could be animated independently of the rest of the body. We’ve been seeing this for years, but when combined with the rest of the multiple animations played on the character the weapon-reloads really looked natural and flowed as Drake moved from one state to the next.

The second take-away idea was their imaginative use of additive animation, where they changed not the additive loop, but the underlying pose. With around 150 different poses for the cover state, they would change the player character’s posture based on various influences such as health, state-of-duress, as well as randomness.