Okay I figured out a solution to this, so I figured I’d shout it into the void in case anyone in the future finds this useful!
Essentially the problem is the following:
Client 1 is driving a vehicle that Client 2 is standing on
Both clients and the vehicle are replicated using smoothsync
The vehicle is synced to client 2, but is behind where it is on client 1’s machine (because of network travel time and smoothsync’s 0.1s buffer time).
Client 2 syncs its position to Client 1 (which looks totally fine to client 2)
However, since the ships are in different places on both machines, client 2 appears to be floating in the air behind the ship.
The vehicle is moving quite fast, which makes this much more noticeable.
My solution was the follows:
-Add another byte for smoothsync (on the characters only) to (optionally) sync - “current vehicle” (which I can lookup via a subsystem)
-if this byte is set, it will also sync its offset to the vehicle
-any remote clients looking at this player will know which vehicle and what offset (so they can get the correct position of the vehicle on their machine to then offset the player by)
-Rather than syncing “current ridden vehicle” via character movement’s movement base, I made a big overlap box on top of the vehicle, so you could jump without “leaving” the vehicle.
-As a bonus, I also disabled foot placement when on a vehicle cause it was causing my characters meshes to do weird things!
Here’s a diagram of the problem, and I hope this was helpful to someone!