Skip to content

Incorrect Bans in Ladder Games #1077

@ssiccha

Description

@ssiccha

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions