Sony has given an in-depth explanation of how the devs at Naughty Dog were able to give the characters in The Last of Us 2 (opens in new tab) such true-to-life facial expressions.
With The Last of Us 2, it's easy to forget you're playing a video game at times, and part of that is due to the lifelike facial animations. Over at the PlayStation Blog (opens in new tab), Naughty Dog animator Keith Paciello talks about just what goes into making video game characters emote so faithfully to real life. Using Ellie's look of immersion when studying a painting as an example, Paciello explains that different player interactions trigger relevant facial animations.
"You as a player are aiming with the controller for Ellie to look at the painting, which is triggering a 'look at target' placed by a designer. On top of that, I animated small eye darts (saccades) within the character's facial idles to try and indicate an overall thought process. So animated eye saccades sitting on top of the eye-aim, work together to create what looks like focus and thought process."
There are about 20 different emotional states for the 25 key characters in The Last of Us 2, and they're utilized during gameplay sequences to reflect the situation. Main and supporting characters, and even Infected, will change their facial expressions as a reaction to script beats, dialogue, encounters, and ambient moments.
"We were looking at and talking about how to make a blade of grass even better [in game]. In doing so, we panned up, and there was this blank face on the character. I was like, 'Oh.' It was then I wondered how we could simply, across the entire game, add these emotional beats to the characters, so at any point, you can tell what that character is feeling," Paciello explains.
Of course, certain gameplay sequences required their very own, unique facial animations, like a moment from a flashback where Ellie sees a t-rex statue, and that encounter on the beach. But let's not think about that.
Did you know The Last of Us 2 mo-capped adults for the baby (opens in new tab)?