This whole replication thing makes me angry. But its not only that, there are several problems all packed together into some circular dependency of problems.
First problem is stuttering: killed that link
It is terrible, adding camera lag helps, but character is still visibly warping. I tried all starting templates, every time i add player pawn as character (and try to replicate its movement) i get that stuttering, first person is free from it. For movie i created worst scenario (ie. no camera arm lag and camera is attached to character mesh). But ti is in all setups that i could imagine, well besides one, that i cannot make working.
So my solution is to separate camera from pawn. Let players posses camera pawn client side (that is only camera), then server will move characters to match camera pawn input. I wanted to do it trough AI, for that i created “very advanced” KeyboardAI. But problem is that “simple move to location” does not work when i call it on event tick. When i call it every second or so its sometimes work (that depends on setup), but with longer periods you can feel like character is unresponsive.
I could drop that keyboard AI and use normal pawn for moving soliders around, but then they need to be possessed to rotate. Strangely add movement input works, but turning does not, probably because all those pawns rotate to match controller desired rotation.
And last problem (a bit unrelated). When i try to change enum variable that is in animation blueprint (ie. walking, crouching or running) editor crashes while compiling such thing, but only if its for multiplayer. When i drop number of clients to 1, everything is fine. I will make answerhub question about it if i can replicate this using some epic template.
Ps. I wasted whole weekend on this, instead of adding cool stuff like damage system. At least i learned character setup and animation blueprints quite well.