Pawn Vehicle Movement Sync for up to 25 players per map

What is the best way to sync pawn’s vehicle movement for up to 25 players on a single map? I’d also assume network simulation of up to 100ms latency. Dedicated server design.

SmoothSync 5.1 ftw. All better.

They’ll never sync. Even on LAN there will be variance do to tick delays and network delays (ping/loss/jitter).

You should be testing with 500ms latency.

For more insight look at the Character Movement Component.

Thanks for the reply. I’m omitting details of what I attempted so far but the key term in here is PAWN. If you go into a third person template project it uses “Replicate Movement” under the Character which is tolerable with network emulation.

If I attempt replicate movement on my current pawn setup there’s rubber banding basically ever movement.

Maybe I can try to use a Character class for the vehicle and check off “Replicate Movement”?

How are you handling server correction?

Character class has client-side prediction (CSP) and server correction. CSP is what you want to implement on your pawn. In a nutshell CSP allows you to locally execute inputs vs waiting on the server to execute and pass the result.

What I’m going to “assume” is happening is your local pawn is executing each input/action immediately, then replicating those inputs to the server. Server is executing and correcting immediately without network smoothing.

Read the character movement component page completely. It tells you exactly what’s going on in the background for the TPP/FP character class.

Also note that the character class is not going to work for a vehicle.


Maybe this plugin will help (altough it is paid, but not much)

(its on the marketplace, just search for smoothsync)

I did some testing with chaos vehicles in 5.0.3 and it handled the lag compensation well in my opinion. I did only test it with 2 vehicles though. But maybe it saves you some time implementing your own interpolation system.

Let me know if it helps and if you got some satisfying results. Would be curious to know :slight_smile:

Edit: the plugin provides the source code, so you could dig into to find out how they do it.

1 Like

@AActor_424 Yep I have that on my wishlist and will snag once 5.1 is released.

@Rev0verDrive I’m using the chaos vehicle movement component. I read on another post you lose the Character Movement component functionality you speak of and would need to write it yourself. Maybe the SmoothSync will be the cure.

The issue is CMC movement is bound to the upright capsule component. No Physics. With chaos vehicles the skeletal mesh uses physics as well as the tires.


Hey Rev. I’m also struggling with this issue. I’m using a pawn class BP for a ship. Do you think it would be better to parent it to the character class instead and modify the CMC? Or try to copy all the relevant CMC networking stuff into a pawn movement component?

Side note I tried using Smooth Sync and my client couldnt even move his boat… so not sure what I did wrong there

More than likely copying over CMC’s client-side prediction and server correction.

CMC works specifically with the Capsule component collision for blocking. All other collision components added will only provide overlap functionality.

CMC also doesn’t use physics.

Aw ok then. Well this doesn’t sound like a small task but here we go. Thanks Rev!

Reimplementing CMC with physics is definitely no small task, since that means rolling back objects and replaying their moves everytime a correction needs to be made on client. And replaying moves isn’t a “simple” displacement as it is in the case of character (fake physics), but a whole fast-forward re-simulation of multiple frames of the whole physics scene (or preferably just a portion of it).

There is a reason Epic hasn’t done it with their PhysX vehicles, and why Rocket League implemented an entirely different physics engine to run their game :

I don’t know much about Chaos so maybe it’s now more realistic to do that there, who knows.

If you want to keep things simpler you can instead do movement correction without using rollback/replay mechanism, ie. simply interpolate the error out on client. This is probably what SmoothSync does. It will probably not handle collisions very well though.

Oh wow thanks for sharing that talk… it was enlightening. So maybe too I could just not use physics for the movement of the ships at all? Just use an add relative transform or something like that with sweep. However if I did it like that I might loose the ability to making any sort of rough seas.

SmoothSync 5.1 baby ftw. ALL BETTER and brought happiness back into the project.

Yup! Same here