MassEntity Locomotion and Motion Matching do not seem compatible

Hi! We’ve discovered that MassEntity-based Actors do not function correctly with Motion Matching.

Specifically, the UMassSteerToMoveTargetProcessor / UMassApplyForceProcessor / UMassApplyMovementProcessor / UMassCharacterMovementToActorTranslator chain of processors will directly calculate and set the final velocity on the Actor’s movement component, without setting acceleration. On the other hand, for Player Characters, player input directly sets acceleration, with velocity then “catching up” to it.

That means that if player input suddenly changes direction, e.g. from fully-left to fully-right, there is a small window during which the Player Character will have its velocity in an opposite direction from its acceleration, before gradually re-aligning. This is what allows MM’s trajectory prediction to work: it can detect near-future sharp changes in movement direction, and this info can then be fed into Chooser Tables to select a Pivoting animation.

However, since Mass Movement does not expose acceleration, trajectory prediction does not work for our Mass NPCs with out-of-the-box Mass. We have a local changelist which alters Mass to expose the cumulative steering force and use that to emulate player input for NPCs, but we’d like to check with you if Epic has any plans to address this, and if so, where would that be on the release roadmap.

Thank you

Steps to Reproduce
Use motion matching on an ACharacter that is driven my Mass Movement.

Hey there,

It sounds like you’re using CMC with Mass to handle your character motion. Is that correct? For future crowd work with Mass we are investing our time into Mover 2.0 and so any future improvements will be done using that system. Jack Potter hints at some of these improvements in this post: [Content removed]

If you’re set on using CMC (assuming you are), your change would work fine, or you could generate your own trajectory using custom code inside of a Mass processor that you could then use to extrapolate an acceleration from that. We’re also shipping some spring functions that you can use in 5.7 to help with that, but you won’t see an example of their use until a later GASP update.

Dustin