Character Movement adds unwanted force to physical platform (kinetics vs physics)

Hello. I’m trying to reconcile the CharacterMovementComponent (CMC) with physics.

In the video, I demonstrate:

  • 0:00 - desired behavior, with Simulate Physics enabled on the Capsule (just for reference, how an object of this mass should behave on these platforms)
  • 0:16 - unwanted behavior (jerky movement) with Simulate Physics disabled (which re-enables CMC); note that the Character’s mass doesn’t change at any point
  • 0:29 - reducing Push Force Factor helps a bit, but not completely (I also tried reducing other factors to 1 or even 0, etc.)
  • 0:43 - I decrease the platform’s mass to make the undesired effect more pronounced
  • 0:59 - demonstrating the desired behavior again, with Simulate Physics enabled (again, just for reference)

Notice the jerky downward movement best visible around 0:50. It unrealistically breaks energy conservation, as if the Character was kicking the platform downward, not just landing on it.

I realize that CMC is not really designed to work with physics (enabling the latter disables the former), but at the same time I feel like I’m pretty close to making it work even with Simulate Physics disabled (one hack that helped was to force Movement Mode to Falling when Character exceeds certain speed, as the Falling mode seems to be less kinetic / more physical, which helped launching the Character into air more naturally at the peak of the upwards motion), except for this surplus downward energy.

I can tweak the platform’s Mass and Physics Constraint settings so the effect is less pronounced, but it’s still there, and I’m looking for a “purer” solution, i.e. to get rid of this excess force completely. I suspect this has something to do with the platform being considered as Floor by the Character, which adds some extra interaction.

  • Hopefully there’s some scalar, bool or function that I’m simply missing (although I tried many of those already, including Standing Downward Force Scale, and all Floor-related params I could find, as well as some mentioning “Base”, which I believe also means Floor?).
  • I would also consider modifying the engine code to get rid of this, or creating my own CMC based on the original, if I knew where to look.
  • Should I look into the new Mover plugin?

Thanks in advance!

I think you would benefit a lot from MOVER.

Especially their Chaos MOVER version.

They use it in LEGO Fortnite already and it seems to be similar to what you want to create.