LoL内戦のELOレーティングはどう計算されているか
チェスのELOレーティングをLoL内戦向けに調整したアルゴリズムの仕組み。なぜ格上に勝つとレートが大きく上がるのか、連勝補正の理屈、初心者向けの安定化など。
「ELOレーティング」という言葉を聞いたことがある人は多いと思います。チェスや将棋、最近では多くのオンラインゲームで採用されています。LoL Team Balancer もこのELOレーティングをカスタムゲーム向けに調整して使っています。
この記事では、ELOがどう計算されているのか、なぜそのロジックなのかを解説します。
基本式:勝率予測と差分計算
ELOの中核は「期待勝率」と「実際の結果」の差分でレートを動かす考え方です。
期待勝率は、両チームの平均レートから計算されます。レート差400で約10倍の勝率差になるという数式です。例えば BLUE が 1500、RED が 1100 なら、BLUE の期待勝率は約 91% です。
実際に試合をして BLUE が勝った場合、期待勝率91%なので「予想通り」。レートはほんの少ししか動きません。逆に RED が勝った場合、これは「予想を覆した」ので、両チームのレートが大きく動きます。
K値:1試合の影響度
レートが1試合でどれくらい動くかは「K値」で決まります。K値24が標準的で、これだとレート差が無い対戦で勝つと約12pt動きます。
K値を大きくすると: - 1試合の影響が大きい - 短期間で実力が反映される - ただし運悪く連敗するとレートが大きく落ちる
K値を小さくすると: - レートがじっくり安定する - 長期間プレイしないと正確な実力が見えない
カスタムコミュニティの試合数に応じて調整するのがベストです。週1で内戦するコミュニティは K=24-32、毎日やるなら K=16 くらいが目安。
連勝補正:勢いを評価する
純粋なELOだと「3連勝してる人」と「3勝3敗の人」のレートが同じになる場合があります。実際には連勝してる人のほうが「今、調子が良い」のは間違いない。
そこで連勝補正を入れます。例えば「3連勝以上で勝った場合の獲得ポイントを 1.25倍」、「3連敗中で負けた場合の損失を 1.1倍」みたいな調整。これで勢いがレートに反映されます。
初期値の問題:低N(試合数が少ない)の不安定性
ELOには有名な弱点があります。「最初の数試合は不安定」です。Riotランクと違って、ELOは試合結果から計算するので、データが少ないうちは過剰反応します。
カスタムを5試合しかしてないプレイヤーがレート2000になっていても、それは過剰評価かもしれない。逆に、たまたま3連敗したダイヤの人がレート1000になっていても、本来の実力ではない。
この問題への対処として、Riotランクを「初期値兼補正値」として使います。
実効レート = (1 - 信頼度) × Riotランクから算出した基準値 + 信頼度 × ELOで動いたレート
信頼度は min(試合数 / 20, 1) で計算します。0試合なら100%基準値、20試合以上なら100%ELO。これで低N問題を緩和できます。
ロール係数:オフロール時の負荷軽減
カスタムでは全員が好きなロールを引けるとは限りません。サブロールやオフロールを押し付けられた人がいて、その人のチームが負けた場合、レートを通常通り下げるのは酷です。
そこでロール係数を入れます: - メインロールでプレイ → 通常のレート変動 - サブロールでプレイ → 損失を 0.9倍に軽減 - オフロールでプレイ → 損失を 0.7倍に軽減 - 勝った場合は係数なし(誰でも勝利の喜びは同じ)
これで「ロール譲ったのに負けたから損だけ」みたいな不公平が減ります。
まとめ
ELOレーティングは数式が単純な割に、よく機能するアルゴリズムです。ただし「初期値の不安定さ」や「ロール譲った人の不公平」みたいなカスタムゲーム特有の問題には、追加の補正を入れる必要があります。
LoL Team Balancer はこれらの補正をすべて組み込んだ実装になっています。試合結果を入れるだけで、自動でレートが調整されます。