Draft System¶
The draft system allows tournament captains to pick players for their teams. Three draft styles are available, each with different pick order mechanics.
| Snake Draft | Shuffle Draft |
|---|---|
![]() |
![]() |
| Full Video | Full Video |
Draft Styles¶
Snake Draft¶
The classic snake draft where pick order reverses each round.
Pick Pattern (4 teams):
Round 1: Team 1 → Team 2 → Team 3 → Team 4
Round 2: Team 4 → Team 3 → Team 2 → Team 1
Round 3: Team 1 → Team 2 → Team 3 → Team 4
Round 4: Team 4 → Team 3 → Team 2 → Team 1
Characteristics:
- Predictable pick order
- First pick team gets picks 1, 8, 9, 16
- Last pick team gets picks 4, 5, 12, 13
- Good balance between first and last pick advantage
Normal Draft¶
Standard draft where pick order stays the same each round.
Pick Pattern (4 teams):
Round 1: Team 1 → Team 2 → Team 3 → Team 4
Round 2: Team 1 → Team 2 → Team 3 → Team 4
Round 3: Team 1 → Team 2 → Team 3 → Team 4
Round 4: Team 1 → Team 2 → Team 3 → Team 4
Characteristics:
- Simple, predictable order
- First pick team has significant advantage
- Last pick team may struggle with player availability
Shuffle Draft¶
Dynamic draft where the team with the lowest total MMR always picks next.
How It Works:
- Before each pick, calculate total MMR for each team (captain + all picked members)
- Team with lowest total MMR picks next
- If teams are tied, a dice roll determines who picks
Tie-Breaking:
When multiple teams have the same lowest MMR:
- Each tied team rolls a d6 (1-6)
- Highest roll wins and picks next
- If rolls tie, re-roll only among still-tied teams
- Continue until one winner
Example:
Team A (15,400 MMR) rolls: 4
Team B (15,400 MMR) rolls: 4
Team C (15,400 MMR) rolls: 2
→ Team C eliminated, A and B re-roll
Team A rolls: 3
Team B rolls: 5
→ Team B wins, picks next
Characteristics:
- Self-balancing - weaker teams get priority picks
- Unpredictable order until draft starts
- Tie-breaker adds excitement
- Cannot simulate final team MMRs in advance
Draft Style Modal¶
The Draft Style modal allows admins to:
- View all draft style options
- Compare predicted team balance for Snake vs Normal
- See that Shuffle is dynamic and cannot be predicted
- Select and apply a draft style
Data Models¶
Draft¶
| Field | Type | Description |
|---|---|---|
tournament |
ForeignKey | Associated tournament |
draft_style |
CharField | snake, normal, or shuffle |
DraftRound¶
| Field | Type | Description |
|---|---|---|
draft |
ForeignKey | Parent draft |
captain |
ForeignKey | Captain making the pick |
pick_number |
Integer | Sequential pick number (1, 2, 3...) |
pick_phase |
Integer | Phase/round of the draft |
choice |
ForeignKey | Player selected (null until picked) |
was_tie |
Boolean | Whether tie-breaking was needed |
tie_roll_data |
JSONField | Tie resolution details |
tie_roll_data Structure¶
When a tie occurs in Shuffle draft, the tie_roll_data field contains:
{
"tied_teams": [
{"id": 1, "name": "Team Alpha", "mmr": 15400},
{"id": 2, "name": "Team Beta", "mmr": 15400}
],
"roll_rounds": [
[
{"team_id": 1, "roll": 4},
{"team_id": 2, "roll": 4}
],
[
{"team_id": 1, "roll": 3},
{"team_id": 2, "roll": 5}
]
],
"winner_id": 2
}
API Endpoints¶
Pick Player¶
Request:
Response (Shuffle Draft with tie):
{
"success": true,
"tournament": { ... },
"next_pick": {
"captain_id": 5,
"team_id": 2,
"team_name": "Team Beta",
"team_mmr": 15400
},
"tie_resolution": {
"tied_teams": [...],
"roll_rounds": [...],
"winner_id": 2
}
}
Update Draft Style¶
Request:
Frontend Components¶
TieResolutionOverlay¶
Displays when a tie occurs during Shuffle draft:
- Shows all tied teams with their MMR
- Displays each round of dice rolls
- Highlights the winner
- "Continue" button to proceed
DraftStyleModal¶
Allows selecting draft style:
- Snake Draft option with predicted MMR balance
- Normal Draft option with predicted MMR balance
- Shuffle Draft option (dynamic balance, no prediction)
- Apply button to change style
Implementation Notes¶
Snake/Normal vs Shuffle¶
| Aspect | Snake/Normal | Shuffle |
|---|---|---|
| Round creation | All rounds created upfront | First round only, rest created dynamically |
| Pick order | Predetermined | Calculated after each pick |
| Predictable | Yes | No |
| MMR simulation | Can predict final team MMRs | Cannot predict |
Team total_mmr Calculation¶
The captain is always included, and members exclude the captain to avoid double-counting.

