The null subsystem includes code for updating certain session state in RegisterPlayers
. It updates thing like NumOpenPublicConnections
which is how I found the bug.
Reproduction steps
- Setup a multiplayer project with the NULL subsystem.
- Create a session with any name but “Game”.
- Find the session from another game instance.
- Notice that the session that comes back will have
NumOpenPublicConnections == SessionSettings.NumPublicConnections
Reason for the behaviour
The calling code for RegisterPlayers
up the hierarchy is APlayerState::RegisterPlayerWithSession
. This gets a default PlayerState with GetDefault<APlayerState>()
. Apparently, this session name is not set to the actual session this player is trying to join. This does not seem like intended behaviour.
Suggested fix
The SessionName passed to UOnlineEngineInterface::Get()->RegisterPlayer()
should be populated from the actual session name that we are trying to join, not the PlayerState default.