We need a mechanism to gracefully handle cases when an NP-simulated object changes net roles from autonomous to simulated, and vice versa. The most common case happens when a client player possesses a pawn, then unpossesses it and possesses a different pawn.

This should include a process by which the server and client come to agreement about which sim frame the change occurred, and that they transfer responsibility for producing input between themselves at that frame boundary. It is OK if there is a window where both client and server are producing input, as long as the bookkeeping is corrected once the frame is determined.

Steps to Reproduce

The easiest way to test this is to play multi-client PIE in the pawn swapping area in one of the Mover

Open any project, such as QAGame, and add the Mover and MoverExample plugins to them.

Open the L_CharacterMovementBasics map

PIE with multiple clients, possibly with a Listen Server if you want to see the server's POV

Go over to the pawn-swapping platforms and experiment with changing pawns, swapping pawns between clients, etc.

Aside from some movement corrections occurring at the time of possession changes, there should be no obvious issues.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-148945 in the post.

Login to Vote

ComponentUE - Gameplay - Network Prediction
Affects Versions4.275.0
Target Fix5.3
Fix Commit24996399
CreatedApr 13, 2022
ResolvedApr 14, 2023
UpdatedApr 19, 2023