Multiplayer Character Movement Jitter / Rubber Banding in Standalone with Steam

I am currently working on a multiplayer project in Unreal Engine 5.6 using Steam for online sessions.

I have a very strange problem with Character Movement in multiplayer.

When running the game using two separate Standalone Game processes, the client character constantly stutters and gets pulled/corrected backwards while moving. The movement feels like the character is repeatedly moving forward and then being pushed back by the server.

At the same time, the host sees the client character moving in slow motion, including the character’s movement animation.

The problem is especially noticeable when the client is moving continuously in one direction.

What I have tested

I initially suspected that the problem was caused by my custom Character Blueprint, so I created a completely new Character Blueprint that inherits directly from Character.

The new character has no custom movement logic, no components, no sprint system, no stamina system, no inventory, etc. I only used the default Character Movement Component.

The exact same problem still occurs.

I also tested different Max Walk Speed values (including 450 and 600), but changing the value does not solve the issue.

I checked the FPS on both machines/processes and performance does not appear to be the problem:

  • Host: ~154 FPS
  • Client: ~157 FPS

I also checked network statistics. There does not appear to be obvious packet loss or an overloaded connection.

Using:

p.NetShowCorrections 1

I can see many correction trails/outlines around the character, which makes me suspect that the server is constantly correcting the client’s predicted movement.

Important observation

The problem occurs when using two separate Standalone Game processes.

Interestingly, when testing using a setup where the games run within the same process/editor environment, the character movement is smooth and I cannot reproduce the problem in the same way.

Network setup

I am using:

  • Unreal Engine 5.6
  • Blueprint
  • Steam Online Subsystem
  • Advanced Sessions / Advanced Steam Sessions
  • Steam Sockets was also tested
  • Replicates = true
  • Replicate Movement = true
  • Always Relevant = true

I also tested changing the Character’s network update frequency, but this did not resolve the issue.

Current situation

At this point I have reproduced the problem with a completely clean Character Blueprint, so I don’t believe my custom Character movement code is responsible.

It seems to be related to the networked Character Movement / server corrections / NetDriver / Steam networking, but I am not sure what exactly is causing the client and server movement simulation to diverge.

I would really appreciate any suggestions on what I should check next or how I can properly diagnose what is causing these server corrections.

Additional info. Im using vreue4 to create sessions / join sessions

fine in PIE and rubber banding with two standalone processes is usually not your movement code, it is the listen server starving. the host process runs server logic, client logic and rendering in one frame budget, and when its server tick dips under NetServerMaxTickRate the client gets correction bursts that read as rubber banding.

isolate it: run the host as a dedicated server (same build with -server from cmd). if the client smooths out it was tick starvation, not replication logic. also print the character NetUpdateFrequency at runtime on the client, and set net.UseAdaptiveNetUpdateFrequency 0 for a clean test, adaptive rate drops per connection under load and that looks like stutter from the client side.

two more that bite standalone specifically: NetServerMaxTickRate defaults to 30 (GameNetworkManager settings) and two UE processes on one box will fight over hitting it. and check the CMC interpolation values, NetworkSimulatedSmoothLocationTime and friends, people tweak those for PIE smoothness and forget, they directly control how simulated proxies interpolate and wrong values present as rubber banding.

the steam session plugin is just lobby plumbing here, corrections live in CMC and the net driver, so do not chase vreue4 for this one.