15. 매치메이킹 레이팅 시스템: Elo·Glicko·TrueSkill과 매칭 품질
난이도 상내 답안
모범답안
난이도: 상
모범답안
1. Elo의 기본
Elo는 각 플레이어에게 하나의 레이팅 R을 부여한다. A가 B를 이길 기대 승률은 레이팅 차의 로지스틱 함수다:
E_A = 1 / (1 + 10^((R_B - R_A)/400))
(400은 스케일 상수. 차이가 400이면 기대 승률 약 10:1.) 경기 후 갱신:
R_A' = R_A + K · (S_A - E_A) // S_A: 실제 결과(승=1, 패=0)
- K-factor: 한 경기의 영향력. K가 크면 레이팅이 빠르게 움직여 신규/실력 변화를 빨리 반영하지만 노이즈에 출렁인다. 작으면 안정적이나 수렴이 느리다. 흔히 신규엔 큰 K, 안정기엔 작은 K.
- 한계: ① 레이팅의 불확실성을 표현하지 못한다(10판 친 1500과 1000판 친 1500이 같게 취급). ② 비활동 후 실력 변화 미반영. ③ 팀 게임의 개인 기여를 못 가린다. ④ 점수가 제로섬이라 풀 전체의 인플레이션/디플레이션 관리가 별도로 필요.
2. Glicko / Glicko-2
Glicko는 Elo에 레이팅 편차 RD(불확실성) 를 추가한다. RD가 크면 "이 추정이 불확실하다"는 뜻이고, 갱신 폭이 커진다(K를 RD로 동적으로 대체하는 셈). 경기를 자주 하면 RD가 줄고(추정이 확실해짐), 오래 쉬면 RD가 다시 커진다(시간이 지나면 실력이 변했을 수 있으므로).
- 신규 플레이어: 높은 RD → 초반 몇 판에 레이팅이 크게 움직여 빠르게 제자리를 찾는다(배치 경기).
- 복귀 플레이어: 비활동 기간만큼 RD가 커져, 복귀 후 결과가 레이팅에 더 크게 반영된다.
- Glicko-2: 추가로 변동성(volatility) 을 둬, 성적이 들쭉날쭉한 플레이어와 일관된 플레이어를 구분해 갱신 민감도를 조절한다.
3. TrueSkill
TrueSkill(베이즈)은 각 플레이어 실력을 정규분포 N(μ, σ²) 로 본다. μ는 실력 추정, σ는 불확실성. 경기 결과(팀 승패/순위)를 관측하면 베이즈 갱신으로 각 개인의 μ·σ를 보정한다 — 이긴 팀은 μ↑, 진 팀은 μ↓, 경기를 할수록 σ↓. 팀 실력은 보통 개인 분포의 합으로 모델링해 팀 게임에서 개인 기여를 분리 추정할 수 있다.
- 매칭에 μ가 아니라 μ − 3σ(보수적 값)를 쓰는 이유: σ가 큰(아직 불확실한) 플레이어를 과대평가하지 않기 위해서다. "최소한 이 정도는 된다고 95%+ 확신하는 실력"으로 매칭/표시하면, 신규가 운으로 높은 μ를 받아 고수와 붙는 일을 줄인다. 경기를 쌓아 σ가 줄면 μ−3σ가 μ에 수렴한다(레이팅 "잠금"·랭크 부여 기준으로도 쓰임).
4. 매칭 품질 vs 대기시간
공정성(좁은 레이팅 창)과 대기시간은 상충한다.
- 시간에 따른 창 확대: 처음엔 ±25 같은 좁은 창으로 찾다가, 대기가 길어지면 허용 범위를 점진적으로 넓힌다(품질을 조금 희생해 매칭 성사).
- 추가 제약: 핑/지역(지연), 입력 기기, 파티 크기/스택 여부, 역할(role) 균형 등을 함께 만족시켜야 해 탐색 공간이 복잡해진다. 보통 다목적 점수(레이팅 근접 + 핑 + 대기시간)를 최적화한다.
- 팀 밸런싱: 양 팀의 합/분산을 비슷하게 맞추고(스네이크 드래프트 등), 개인 격차가 큰 매치를 회피한다.
- 운영 문제:
- 인플레이션/디플레이션: 제로섬이 아닌 보너스/시즌 리셋 정책에서 레이팅이 전반적으로 부풀/꺼질 수 있다 → 시즌 소프트 리셋, 분포 모니터링.
- 부스팅/스머핑: 고수가 새 계정(스머프)으로 저티어를 학살하거나, 대리(부스팅)로 점수를 조작. 대응 = 빠른 배치(높은 초기 σ/K로 신규를 빨리 제자리로), 이상 탐지(승률·성적 급변), 휴대전화 인증·하드웨어 식별, 1인칭 지표 기반 보정.
- 인구 희소 구간: 최상위·심야·소수 지역은 후보가 적어 어쩔 수 없이 창을 넓히거나 대기를 감수. 크로스 지역/크로스 플랫폼으로 풀을 키우되 핑·입력 공정성과 균형.
핵심 요약
Elo는 단일 레이팅으로 기대 승률·갱신을 정의하지만 불확실성을 못 담는다. Glicko/Glicko-2는 RD·변동성으로 신규/복귀를 잘 다루고, TrueSkill은 실력을 분포로 보고 팀 게임의 개인 기여를 베이즈 갱신한다(매칭엔 보수적 μ−3σ). 실무 매치메이킹은 레이팅 근접·핑·대기시간·팀 밸런스를 함께 최적화하며, 대기시간에 따라 창을 넓히고 부스팅/스머핑/인플레이션을 운영으로 관리한다.