Naughty Dog’s Animating Character System
Author of this post: Beth A. Dillon | About Blog Authors »Uncharted: Drake’s Fortune, developed by Naughty Dog, has an artistic style that I haven’t seen before. I know I’ve harped on it before, but there’s nothing like watching your character get his jeans wet in the water and it actually changes the appearance until he dries off over time. It’s real! Reeeeeal! Christian Gyrling, Animation Engineer, talked a bit about Naughty Dog’s approach to making believable characters at the recent Vancouver International Game Summit.
When the team first got together, they knew they were aiming for more action movie-like animation with over the top action. Since they knew they couldn’t focus on making absolutely everything better, they made important decisions about where to put their efforts.
Through observations during play sessions, they found that the player spent most of his/her time observing, traversing, covering, and in gunplay. After that, some in hand-to-hand, some hit reaction, and little death (well for people who don’t fall off of walls easily like I do anyway). Non-player characters, on the other hand, mostly experienced hit reaction, entering the fight (spawning), going for cover, and really primarily dying. Poor guys.
Based on these observations, they went for a system with what they call the “Animating Character,” that is, an autonomous character that contains AI that asks it perform actions rather than “play this animation.” With this perspective in mind, they worked on a system with animation assets, animation states, animation layers, and animation controllers.
Assets exist in all animations. In the Uncharted system, motion is extracted from a locator, which makes it easy to blend between animations. All assets are used in ‘action packs’ relative to objects. Action packs include things like correct hand/foot registration when using objects and object-relative animation play-back (for example, relative to cover or a ladder).
Because the NPCs alone had around 1,000 animations (not even sure how many the player had, but much more), they implemented animation states. States are centered on a character action and contain transitions to all other possible states. They ended up with a complex animation blend tree with these transitions, which are action based (such as walk, stop, stand), contain the next possible state, and include the blend time/curve.
For further blending, the team used layers. With layers, independent actions (e.g. moving, breathing, facial animations) are given blends between states during transitions until their final pose. Layers really brought the characters to life. They allowed more movement during base actions such as running, so the character can also at the same time bring down his shoulder, move his head in various ways, and perform other small actions that make him appear to be alert or dodging gunfire, for example.
Finally, controllers were used to control character (e.g. locomotion controller, aim controller). The controllers served as the ‘action’ interface, a kind of contract of making the character perform an action.
Overall, Uncharted used an additive approach to create cheap variations instead of using procedural animations. They simply had the animators create different poses for the head to be in relative to how the body is positioned. And how much did that suck up resources? Hardly at all (keeping in mind it was developed for PS3). For runtime, animation blending on the SPUs is very cheap. Animation compression leaves memory free. And in regards to creation time, the team found it only took a couple of minutes to put together a new pose.
Uncharted’s tricks like stylistic expression, variations in actions, and smooth believable blending really make a difference for the gameplay animation quality.















