So I’ve been looking through the documentation on character movement component networking here https://docs.unrealengine.com/en-US/Gameplay/Networking/CharacterMovementComponent/index.html and I’m a little confused about how moves are submitted to and run on the server. The documentation states that the client first tries to submit the oldest un-acked move to the server followed by the newest move. I looked through the code and confirmed this is what appears to happen, with ServerMoveOld called immediately before calling one of the other ServerMove functions for the newest move. However, I don’t really understand how this would work, wouldn’t the server then be skipping all the intermediate moves and be starting from the wrong initial position if it tried to apply the new move directly on top of the results from the oldest move? Also, what would prevent these two RPC calls from executing out of order if they arrived at different times on the server?
Another question I have is if two different characters are running this same code, couldn’t one of them receive and perform several moves (simulation steps) before the other. This would result in the characters being temporarily out of sync with one another. Though I suppose this is somewhat unavoidable without using a fixed simulation rate.