Recently I've been exploring one of the most popular TPS (from my point of view of corse) - MaxPayne2 and trying to find and understand how it works. Well, I've found lots of interesting things, but now I'd like to discuss character's movement mechanism.
As I understand, guys from Remedy used special character animations, which contain information of movement in addition to ordinary bone tracks. Then this movement information is taken from animation system and used by physics engine (Havok). As the result we have character's moving synchronous to character's animation, which is quite good, no doubt.
Anyway, it's a nice idea to move information of movement from code to content (and animators can rather easier control it).
Although, I'm not quite sure about how to use (how to interpret) such information in game. Wheither it better to directly convert it to calls of physics engine (like physics_engine::RigidBody::setPosition(), setVelocity(), addImpulse(), addForce() etc.) or handle it in a different way?
What's better to do if, for example, during a complex somersault animation a character get a side kick?
And how to handle if during the jump the player keep pressed left-right keys and wish to move his character a bit?
It's interesting to know you opinion about this.