Animations and root motion

I am working on a FPS with some scenery interaction features such as vaulting/wall explosive placement.

I'm using Bolt as authoritative with client side prediction.

On a legacy project (not using Unity/Bolt) with similar interactive features, I replicated the current anim ID and frame number, which was rewound/replayed and the anim was time stepped inside client side prediction. This kept all machines synchronised and allowed animated root motion.

I noticed in the Bolt online docs that "You can not use mecanim root motion".
This is a problem for us, as our interaction anims use root motion.

- Why can't I use root motion with client side prediction?

- Does anyone have a workaround?

- Did you need to replicate the anim ID and frame number to the client?

- Am I thinking about this the wrong way?

Thanks.

Comments

  • If you are worried about hackers/cheaters, you should probably switch to client auth, client predicted movement with server side sanity checks using Commands which technically should allow for Root Motion.
  • I've done vaulting/wall climbing/ etc in a fully auth manner, but it is complex. I would just not do server auth unless you want to spend a lot of time on it or hire a consultant.
  • Thanks guys.

    So whats the deal with not being able to use Root Motion in server auth? Is it because the animator update happens in Update rather than FixedUpdate?

    (However I understand you can now manually step the animator by calling animator.Update(deltaTime))
  • You would need to reset the animation, position, and rotation to the frame sent from the server in a correction. Then it would step commands not yet processed by the server to catch up.
  • Thanks stanchion.

    Yes I assumed that you would need to replicate the animation/frame number to get root motion working in client side prediction.

    But I read the Bolt docs and it said root motion could not be used here.
    Perhaps it would have been better to say it can be used but it is non trivial.
  • Well, I did write this in the docs:

    "Root motion is generally not possible for most (root motion is actually predictable and possible but the non-trivial technical constraints are outside the scope of this document)."


  • I was referring to this page:
    https://doc.photonengine.com/en-us/bolt/current/reference/boltentity

    I've subsequently found the other "WIP docs" and yes its in there, thanks guys.
    https://docs.google.com/document/d/1yjPE69MdT3BhY-HjARFdqkIpqXujORLsKiX6B8GWoLI