I’ve been struggling lately to get the flight system for our Pteranodon (flying animal from Mesozoic Era) working for networked gameplay.
The biggest issue I’ve been having is network jitter. I can simulate the jitter by using net pktlag=130 in the editor as a client, and it also is present when we host server tests. I think the reasoning for the jitter is that I am setting the velocity vector and max flight speed values in the character movement component on the event tick on both client and server, and this causes disagreements between client and server, snagging the Pteranodon back to where the server wants it during any times in which speed or velocity direction vector are changing.
One way I have found to resolve this issue is to turn off character movement replication while the Pteranodon is in flight, which also causes the Pteranodon not to replicate its location in the air while flying.
To resolve this, I am also setting its transform and velocity on all other machines, as seen here to replicate movement from client to server without the server trying to rubberband back the Pteranodon to where it wants it to be. This works perfectly. The flight is flawless and the location, orientation, and velocity of the flight movement is replicated perfectly to other computers regardless of network conditions or lag. The issue I am having, however, is that this particular setting, setting Replicate Movement to false on the flying actor, also halts the event tick in the animation blueprint for this actor. Is there any way to re-enable this? Right now, it T-poses around in the air for anyone besides the owning computer if that computer is a client. Or, alternatively, is there any better way to flawlessly replicate flight without jitter issues for the client than simply disabling movement replication and doing it manually and separately from client to server like this?