I kinda solved it.
I noticed that the jitter changes when I mess with the FPS limiter.
You have to set the FPS limit for the Server to 60, or at least some value that your framerate can hit consistently. Otherwise you get jitter.
(The setting is at Project settings, Engine, General Settings, Fixed Frame Rate. There is also a “Server Fixed FPS” setting in the Editor settings, but it didn’t seem to work very well.)
Your Clients shoud also run at this frequency.
If they run lower, they will jitter on a Listen Server.
If they run higher, they sometimes move slower lol. (Workaround is to set the tick interval of the actor and its components to 1/ServerFPS.)
The Net Update Frequency of the Character didn’t really have a great impact in my tests.
Increasing the speed of the Character will make the jitter more noticable.
One more thing to note: When you have a configuration where jitter CAN happen, it happens MOST of the time, but sometimes it just doesn’t, until a restart. Makes tracing this a bit of a pain.
I guess this thread is related:
CharacterMovement Component Jittery/Not Framerate Independent? (single player) - Programming & Scripting / Blueprint - Epic Developer Community Forums (unrealengine.com)
I just wonder:
- Why is this FPS setting unlimited by default if it breaks movement?
- Why is movement/logic dependent on FPS in the first place?
- Where is the documentation for this?