Velocity in FixedUpdate confusion

Hi,
for a networked game i need to transfer velocity.
I’m confused whether i have to multiply by Time.fixedDeltaTime, or something alike, on the receiving end when the velocity there is used in FixedUpdate.
As far as i know velocity (chararactercontroller.velocity) is something like ‘position derivation based on a scale of one second’. So if i used it in Update i guess it would work correctly if multiplied by Time.deltaTime.
Am i correct and how would i transfer that to fixedUpdate?

Time.deltaTime always returns the correct delta time (if called in FixedUpdate, it will return the fixed delta time). Velocity is just a Vector3, which shouldn’t be too hard to transfer. However, as I don’t do network games, I can’t really help you with anything else.

Basicly if on the sender side you use velocity * Time.deltaTime, you have to use it on the receiver side.

Because frame rate isn’t consistent across multiple games, I recommend you to send over network a sort of normalized vector that you can apply according to the local deltaTime on each computer.

Rigidbody works like that: velocity is represented by distance traveled in one second so that rigidbody.position += rigidbody.velocity * Time.deltaTime do the trick.

Velocity itself is independent of time, so if you just want to transfer the value of the velocity, don’t multiply it by deltaTime. However, you can’t set the velocity directly on a CharacterController (velocity is a read-only variable). You have to use CharacterController.Move, which requires a distance instead of a velocity, and thus is dependent on time. So probably, you want to grab the velocity of the character on the server (charController.velocity), send it to the client, and then use Move(velocityFromTheServer * Time.deltaTime).

I’m trying to implement cubic spline interpolation for movement, so i want/need to use velocity as a value representing an actual distance per second traveled (and if i understand you right, that it is). And so the length really is important (@atrakeur i can’t just normalize it). So i guess in the end i dont have to multiply it, only when i actually need to move the CharController (and then i do it by fixedTime not fixedDeltaTime).
What confuses me is that when i use the actual velocity, the spline is really twisted. But when i manually put in values (smaller) everything is fine. So i guess i have to have a deeper look at the velocity transfer function.
But thank you for help

I just want to let you know that i found the error. I had to adjust the velocity to the network update rate

I have to up this thread, sorry. As it turns out, that only fixes it in certain situations.
Now i’m even more confused.
I will try to explain my problem.
for constructing the cubic spline i have to use the objects velocity, but related to my above question the velocity doesn’t fit.
A fast paint-picture (the red line represents the calculated spline):
1234404--52243--$overshoot.jpg
So, if velocity represents position delta on a 1 second base (confirmed by Debug.drawRay, atleast for the CharacterController), it seems impossible to get a correct spline. It kind of worked when i shrinked the velocity in relation to the net update rate (for example if i update two times a second i divide vel. by two). Is that even the right direction?

I guess my problem is that client updates the server more often than the server updates clients. It doesn’t work when the server sends the velocity unmodified to the clients. Do have to adapt it somehow? I’m out of ideas how.

P.S. i just dont get the logic. Given the update rate is 1 second. Then the velocity will be the same length as the difference in position. and that would result in the above looped spline.