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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions