Jump to content
  • Advertisement
Sign in to follow this  
wolfeinstein

Character's movement mechanism

This topic is 4621 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi everyone! 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.

Share this post


Link to post
Share on other sites
Advertisement
It would be nice if someone tells me how they converted sequence of movement delta to something physical (I mean guys in Remedy). I just was wondering about MaxPayne2 mechanism, where - I'am sure - raqdoll is only activated after death.
In other words, MaxPayne2 animation system has a delta-vector of character movement every gameframe. Then this data have to be used in any way, for example characterRigidBody->setVelocity(deltaVector / deltaTime); and it seems to be ok, but it doesn't work in jumps and stairs. So, my main question is what to do with this movement information? How to handle it? Does anyone know how this works in MaxPayne2?

Share this post


Link to post
Share on other sites
Hello Wolfeinstein,

To begin with, I haven't played Max Payne 2, so I wouldn't know exactly what you are talking about.
But I do know a little about animations in particular. Ever heard of Inverse Kinematics? It is a method to calculate the final pose of body with the help of some controlpoints and a solver. It is very good and quite easy to combine with ragdoll physics. I used it before and I really liked it. To give you an good image of what I am talking about, here is a link:
Editing keyframed animation (DivX AVI)

Look into this all and know a world goes open :D

Good luck,

Regards,

Xeile

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!