Issue Summary: Incorrect Bans in Ladder Games Due to Missing PlayerOption Messages
Problem: Players are receiving incorrect violation bans in ladder games when connection failures occur.
Root Cause (per @Gatsik's analysis shared via Zulip):
- Server checks
_configured_player_ids to determine if players are "configured" before assigning violations
_configured_player_ids is only populated by set_player_option() calls (triggered by PlayerOption GPGNet messages)
- Ladder games don't send
PlayerOption messages (only custom lobbies do)
- Result: All guests in ladder games appear "unconfigured" and get violations when games fail to start, even if the failure wasn't their fault
Code References:
- Game configuration check:
server/games/game.py#L231 (get_connected_players())
- PlayerOption handling:
server/games/game.py#L616-L621 (set_player_option())
- Host exclusion logic:
server/ladder_service/ladder_service.py#L737 (NotConnectedError)
Suggested Fix:
Track actual connection status using other messages like EstablishedPeer instead of relying solely on PlayerOption messages for ladder games.
Impact:
All guests in failed ladder games receive violations regardless of whether they successfully connected, because they never appear in _configured_player_ids.
Issue Summary: Incorrect Bans in Ladder Games Due to Missing PlayerOption Messages
Problem: Players are receiving incorrect violation bans in ladder games when connection failures occur.
Root Cause (per @Gatsik's analysis shared via Zulip):
_configured_player_idsto determine if players are "configured" before assigning violations_configured_player_idsis only populated byset_player_option()calls (triggered byPlayerOptionGPGNet messages)PlayerOptionmessages (only custom lobbies do)Code References:
server/games/game.py#L231(get_connected_players())server/games/game.py#L616-L621(set_player_option())server/ladder_service/ladder_service.py#L737(NotConnectedError)Suggested Fix:
Track actual connection status using other messages like
EstablishedPeerinstead of relying solely onPlayerOptionmessages for ladder games.Impact:
All guests in failed ladder games receive violations regardless of whether they successfully connected, because they never appear in
_configured_player_ids.