I’m noticing inconsistent behavior with respect to the net roles when running an editor created listen server versus an “OpenLevel” created listen server. In both instances I’m running with PIE…I haven’t checked what a packed game says yet. My setup, and resulting behavior is as follows…
When running PIE as a listen server and 2 players I get the following local/remote roles for each of the pawns at each location
Server side
PawnA (which is controlled locally)
LocalRole = ROLE_Authority
RemoteRole = ROLE_SimulatedProxy
PawnB
LocalRole = ROLE_Authority
RemoteRole = ROLE_AutonomousProxy
Client side
PawnA
LocalRole = ROLE_SimulatedProxy
RemoteRole = ROLE_Authority
PawnB (which is controlled locally)
LocalRole = ROLE_AutonomousProxy
RemoteRole = ROLE_Authority
All of that is exactly as I would expect.
Now, when I create a listen server by setting the options to “listen” when calling OpenLevel I end up with the following (keep in mind play is starting in PIE…I’m starting a PIE session then pressing a key to open a level as a listen server)
Server side
PawnA (which is controlled locally)
LocalRole = ROLE_Authority
RemoteRole = ROLE_AutonomousProxy (What!?)
PawnB
LocalRole = ROLE_Authority
RemoteRole = ROLE_AutonomousProxy
Client side
PawnA
LocalRole = ROLE_SimulatedProxy
RemoteRole = ROLE_Authority
PawnB (which is controlled locally)
LocalRole = ROLE_AutonomousProxy
RemoteRole = ROLE_Authority
Notice that PawnA (which is controlled on the server) has the remote role listed as autonomous proxy but the client side version of PawnA has the local role listed as simulated proxy (which is what is expected).
Apparently something similar has been mentioned before albeit the difference was between a PIE and packaged project.
The reason this is a problem for me is that I’ve created actor components which are using these roles to determine which branch of code to execute.
Is this known/expected behavior? Is there something I’m missing that would explain this?