FOnlineSessionNull::RegisterPlayers Fails to Update Session State When Session Name is Not "Game"

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

  1. Setup a multiplayer project with the NULL subsystem.
  2. Create a session with any name but “Game”.
  3. Find the session from another game instance.
  4. 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.

1 Like