So I got this weird behaviour. I post pics to make it easier.
On the picture above we got 3 instances of the packaged game. Don’t bother with different numbers of the character. What’s important is that the first 3 lines (ListenServer) we got remote roles == AutonomousProxy but on clients (4-9 lines) we clearly see that they got one Autonomous and 2 simulated. Is it some kind of bug? I thought that RemoteRole and LocalRole should be exactly the opposite on different machines.
On the one above (Play in Editor) It’s as I expected to see it. Server got one simulated (character controller by the guy on listen server) and 2 autonomous (controller by the connected players). Why the roles are different in PIE and build .exe? Which one is correct?
EDIT
I checked it up on another version of the engine (4.19) and now roles are consistent. But is it correct way? I expected different result. Shouldn’t remote roles on the sever be as follows 2x simulatedProxy(for the server controlled actors) and 2x autonomousProxy(for the connected client)
Here is a tick function on the Character. GetLocalRoleText and GetNetModeText are my cpp function that calls AActor::GetNetMode() and Actor->Role and returns the Fstring instead of enum.