Overview
Qualifier lobbies are fully automated rooms where players sequentially play through a fixed map pool. The AutoRef system handles room creation, map cycling, timer management, and scoring without human intervention. Unlike elimination matches, qualifiers follow a linear workflow with no picks or bans—just a straightforward progression through all maps in the pool.How Qualifier Lobbies Work
Sequential Map Pool Playthrough
The automaton iterates through the entire map pool in order:- Initialization: The referee engages auto mode after all players join
- Map Loading: Each map is loaded automatically with correct mods applied
- Ready Timer: 120-second countdown starts for players to ready up
- Play: Map starts when all players ready or countdown ends
- Cooldown: 10-second buffer between maps
- Repeat: Process continues until all maps are played
Player Management
Players are assigned to qualifier rooms via the database. The referee can:- Invite all assigned players with a single command
- Monitor who joins via Discord thread logs
- Manually add players if needed during the lobby
Room Settings
Qualifier rooms use Head-to-Head mode with ScoreV2 win condition and support up to 16 slots.
- TeamMode: 0 (Head-to-Head)
- WinCondition: 3 (ScoreV2)
- Slots: 16
State Machine Workflow
The qualifier automaton operates through a finite state machine to ensure safe, linear progression:State Descriptions
| State | Description |
|---|---|
Idle | System waiting for processing or initialization. Safe state for manual commands. |
WaitingForStart | Map selected and loaded. Timer active. Waiting for players to ready up. |
Playing | Map currently being played. System monitoring for “Match Finished” message. |
MatchFinished | Entire pool has been played. Automaton complete. |
MatchOnHold | Panic Mode. All automation paused. Awaiting manual intervention. |
Administrative Commands
Commands are prefixed with> and can be issued via IRC or Discord by the assigned referee.
Invite Players
!mp invite #<osuId> for each. Includes 500ms delay between invites to prevent rate limiting.Start Automation
Idle state.Stop Automation
>start where you left off.Set Specific Map
NM NF and starts a 90-second timer.Safety and Logging
Discord Thread Integration
Every qualifier lobby gets its own Discord thread where:- All IRC messages are mirrored in real-time
- Referee commands are logged
- Player join/leave events are tracked
- Match results are posted automatically
Manual IRC Access
When a match starts, the bot outputs an IRC join command in Discord:- The integrated server experiences connection issues
- Manual intervention is needed during panic mode
- They want to observe the lobby directly
Panic Protocol
See Panic Protocol for details on emergency override procedures.Best Practices
Pre-Lobby Setup
- Verify all players are assigned in the database
- Confirm the map pool is correctly configured for the round
- Ensure the referee IRC credentials are linked via
/linkirc
During Lobby
- Use
>inviteto bring all players into the room - Wait for all players to confirm they’re ready in chat
- Engage automation with
>start - Monitor the Discord thread for any issues
- Use
!panicif any disputes arise
The automaton includes a 10-second cooldown between maps to give players time to review scores and prepare for the next map.
Technical Details
Map Loading Process
For each map in the pool:NM1 → NM NF, HD2 → HD NF).
State Transitions
The state machine is driven by BanchoBot messages:- “All players are ready” → Immediately starts match
- “Countdown finished” → Starts match if players aren’t all ready
- “The match has finished” → Increments map index and returns to
Idle
AutoRefQualifiersStage.cs:330-365