Building a Character Controller / by Areito Echevarria

I played The Last Guardian recently and despite really liking it was was disappointed with the game feel, I felt the unresponsive character and camera controls really let down an otherwise great game. This got me thinking pretty hard about 3rd person character control. I decided to try making a third person character controller that uses realistic animation while still being responsive to input and having great game feel. These design goals are pretty much orthogonal to each other and it has been quite challenging to get something that feels and looks right.

Recently I enjoyed playing through Horizon Zero Dawn. I think the character control is probably the best I've ever played, the animation looks fantastic and the control feels very precise and responsive. I have set out to make something that feels and looks as good!

I started out trying lots of third party character controllers, but none of them really felt right - if the animation looked good they were laggy and unresponsive to play with, or if they were responsive the animation looked unrealistic. I wanted to use mocap with root motion and not do an arcade style controller. Next I started going through all of the character controller tutorials I could find. I came across an old tutorial by John Mac, where he builds a Zelda Windwaker style controller from scratch. Despite the implementation being a little funky, this was really helpful and felt the best by far. Then a colleague pointed me to Paul van Grinsven's GDC talk on Player Traversal Mechanics in Horizon Zero Dawn, where he pretty much lays out the whole setup! Very exciting. I started building the controller again from scratch and have begun incorporating ideas from Paul's talk. This is where I am at so far, it feels a lot better already. Hair and Jacket are simulated in realtime with a PBD solver. Next I'll have a crack at vaulting and jumping. 

This has been a really fun excersise, it combines my interests in motion picture editing, simulation, and procedural systems. It's like building a realtime procedural editng system! Plus it's a computer graphics problem that is not related to optimization - a rarity these days.

Jon Mac tutorial:

https://goo.gl/sGpKdz

HZD Player Traversal GDC talk

http://www.gdcvault.com/play/1024699/Player-Traversal-Mechanics-in-the