Matchmaking — Detailed
flowchart TB
subgraph Client
PLR[Player UI]
end
subgraph Q[Queue]
QUE[[Per-mode queue]]
REGION[[Region queue split]]
SOLO[Solo / party]
PARTY[Party manager]
end
subgraph Mm[Matchmaker]
SKILL[Skill rating - Elo / Glicko / TrueSkill]
LAT[Latency estimation]
WAIT[Wait-time relaxation]
BAL[Team balance + role]
POLICY[Fairness policies]
end
subgraph Alloc[Server allocation]
SVR[Server pool]
AUTO[Autoscale by demand]
HEALTH[Health checks]
SELECT[Region-aware selection]
end
subgraph Post
LDB[Leaderboards]
HIST[Match history]
REW[Rewards / ranks]
PEN[Penalties / quit early]
end
Client --> Q --> Mm --> Alloc --> GS[Game Server]
Mm --> Post
classDef client fill:#dbeafe,stroke:#1e40af,stroke-width:1px,color:#0f172a;
classDef edge fill:#cffafe,stroke:#0e7490,stroke-width:1px,color:#0f172a;
classDef service fill:#fef3c7,stroke:#92400e,stroke-width:1px,color:#0f172a;
classDef datastore fill:#fee2e2,stroke:#991b1b,stroke-width:1px,color:#0f172a;
classDef cache fill:#fed7aa,stroke:#9a3412,stroke-width:1px,color:#0f172a;
classDef queue fill:#ede9fe,stroke:#5b21b6,stroke-width:1px,color:#0f172a;
classDef compute fill:#d1fae5,stroke:#065f46,stroke-width:1px,color:#0f172a;
classDef storage fill:#e5e7eb,stroke:#374151,stroke-width:1px,color:#0f172a;
classDef external fill:#fce7f3,stroke:#9d174d,stroke-width:1px,color:#0f172a;
classDef obs fill:#f3e8ff,stroke:#6b21a8,stroke-width:1px,color:#0f172a;
class PLR,SOLO,PARTY,SKILL,LAT,WAIT,BAL,POLICY,SVR,AUTO,HEALTH,SELECT,LDB,HIST,REW,PEN,GS service;
class QUE,REGION queue;
Skill systems
- Elo: simple, 1v1 well-suited.
- Glicko / Glicko-2: adds uncertainty.
- TrueSkill: team-aware (Microsoft).
- Find groups of players where:
- skill within window (window widens with wait time)
- latency to chosen server low
- team-balanced and role-balanced
- Optimize as constraint satisfaction; greedy works for most.
Glossary & fundamentals