Locomotion - best approach

So I would like to create a new project (third person) and I don’t know which locomotion method to choose.
Is it better to:

  1. use full Root Motion or
  2. play an in-place animation depending on the capsule movement (Root Motion only in montages).
    I never used Root Motion before. Will the first workflow cause strange problems in the future?
    On the other hand isn’t the second option too restrictive in creating a fluid movement system?
    Thank you for any help or advice.

well, interesting question) maybe someone can help me too with that)

If anything the first option would be more restrictive because the animations would dictate the movement of the capsule. Personally I think having the animation and gameplay decoupled for locomotion (eg. no root motion) is useful because you can change the movement behavior in the character movement component without changing all of your animations. If you make root motion animations for your movement and later want to change how the character moves you would have to replace the animations.

That being said you could have root motion animations for stuff like attacks that change your character position (lunges or whatever) in combination with a move in place animation system. It really depends on the game though, root motion would be pretty good for a game like Dark Souls with lots of “physicality” with the attacks, rolls and whatnot. It would be good for fighting games too where the moves are based on the animations themselves. It wouldn’t be as good in a game where the animation just needs to be eyecandy and you want the capsule to move in a very specific way without having to worry about each animation.

So basicly if a game isn’t heavily based on movement, it is better to split the animations into two types because full root motion isn’t worth it.

Thank you for the great explanation. I really appreciate it.

As already mentioned the best is usually to mix the two and not make them mutual exclusive.

Normal animations are easiest to use for normal actions. Like walking/running and also fighting for example swordfighting. However some moves where you need the character to make a movement RM is the easiest way to go. Rather than trying to sync a force pushing the Character in a natural speed and direction according to the animation.

An example would be that normal sword attacks is enough with normal animations because the Character doesn’t move the whole body that much for the attack. But then you come to the point where you want a 2handed attack combo where the character takes two steps forward.

It would look stupid if the Character stood in place while air-walking and swinging the sword. Instead you use a RM variation of the same animation and now you could easily make that move push other Characters if they are “in the way”. While also easily cancel the attack move if the Character gets too blocket to perform, or continue, it.

Which to use depends on the kind of game you plan on making. The main issue with using Root Motion is it’s event driven where in-place is reactive to changes as driven by the movement component and is required for any game that is network compatible where it’s the capsule that is replicated.

If a network component is required things get technically more complicated as to tracking players in real time with in 3d space and since RM is event driven then you would have to replicate the event and like physics would be difficult to replicate the same requirements that the MC provides. You could trigger an RM event and not know where it’s going from client to client unless you make your own tracker.

Will the first workflow cause strange problems in the future?

The simple answer is yes you will have problems between coders and content creators as the movement component provides everything that the coder requires as far as creating the necessary game physics and movement with out having the necessary root motion as it’s the RM that moves the player and not the capsule of the movement component.

RM does produce the better result as far as a visual, and a good choice for single player games, but with out the movement component would limit you game to single player only.

Oh that’s interesting. Does that mean that even action animations like attack or dodge shouldn’t be based on RM in multiplayer games?

It should work with Root Motion from Montages Only. I mean the character movement component has more stuff you need to replicate compared to using root motion.

Good question.

I don’t think it’s a matter of if RM will work over network, because it does, but rather an issue of trust as in do you trust a feature that does not have a proven track record as compared to sticking with what is known to work since forever. The sequencer demo for example will play, including the InfiltratorDemo, with 2 clients running which does prove that attack,s dodge, or even movement will trigger over a network as an event so to make a player move one would have to replicate the event that causes the player to move…like pressing the W key.

The unknown though is what would happen after release and under practical playing conditions?

By the way if I’m reading the documentation rig a montage is no longer needed since 4.16 but lack of documentation is also the issue.