What does 'Controller Predicted Movement' on bolt entity component do exactly?

On Bolt Entity component there is a checkbox called 'Controller Predicted Movement' that is checked by default. I was told on Discord that by unchecking this option the controller won't get execute command called. However I did some debug in execute command on controller side and I found that no matter if I check the option or not, I always get execute command called on the controller side. I wonder what 'Controller Predicted Movement' does exactly.

To give you some context on what I am doing: I have a ship that has a rigidbody on it and using some complex method based on AddForce and AddRelativeTorque to move and turn. It's using non-predicted, server authoritative mode where clients only send input commands to server and doing nothing in execute command callback. Client move ships through syncing transform state with server (replication set to Everyone, smoothing set to Interpolation). When 'Controller Predicted Movement' is checked, I can see my ship jittering on client side. Unchecking the option can dismiss the jitter. I wonder why.

Also I tried separate the render from the object that has entity component, basically give state.SetTransforms a third parameter. This does not remove the jitter.

Best Answer

Answers

  • stanchion said:

    I believe "Controller Predicted Movement" is an old option that no longer does anything, but will look into it more. If you take a look at the sample pack, you'll see an example of an authoritative rigidbody player without prediction.

    It looks like it is obsolete, but it does affect my ship's movement. I guess it's still doing something under the hood. I will look into my movement code try to find where the jitter comes from.