We are working on a multiplayer game, and would like to have responsive knockback for some weapons/attacks between 2 clients. For example Overwatch Lucio’s sound wave ability where he pushes enemies away.
Getting the knockback working is not a problem, we have that using LaunchCharacter. The problem is making it responsive so it happens immediately for the attacking client when there is latency.
The first option we tried is doing it just on the server, which causes a round trip delay before the knockback happens and does not feel responsive even with latency of PktLag=100.
We also tried applying the knock back immediately on the client, which is responsive but has the undesirable result of the victim having jankey movement when their position is corrected to the server. If the latency is low enough < 100 it’s not terrible but with lag of 200 or more it becomes pretty noticeable. Also calling LaunchCharacter also seems to work differently on clients in that the character is launched much farther then on the client which may be part of the problem.
I’ve tried playing around with the networking settings in the character movement component like increasing the smoothing update distances but it’s not a huge improvement. There is a variable in CharacterMovement called bIgnoreClientMovementErrorChecksAndCorrection, but that doesn’t seem to help.
Any thoughts on how to improve responsiveness with this?