Incorrect Bans in Ladder Games
- Dominant language
- Python
- Stars
- 72
- Forks
- 84
- Avg merge
- 5h 11m
- Merged PRs (30d)
- 1
Description
## 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`.
Contributor guide
Assessment
This issue has not been assessed yet.