Nov 18, 2003. presented by Mell
PCA クランも結成され、patch3 でランキングサイトも整備されました。Gamespy
でのレート値の変化っていったいどうなってんだーと興味を持っておられる方も多いことと思います。そこで、BHG公式ページの
FAQ にある計算式に基づいて、和訳してできるだけ分かりやすくなるようまとめてみましたのでよかったら参考にして下さい。
BHG公式FAQ:http://www.bighugegames.com/riseofnations/rankings/faq.html
RoN のレートシステムはゲーム数が8以下のときは大きく変動し、プレイヤーの実力に近いレベルに早く到達できる仕組みになっています。その後は、徐々に変動が小さくなっていきます。では、ゲーム数が8以下、9以上に分けて計算式を見ていきます。
--------------------------------------------------------------------------------
[1] ゲーム数が 8以下 の場合
Rpost = (N*Rpre + m*Ravg +(W-L)*400)/(N+m)
Rpost: ゲーム後のレート値
N: プレイヤーのゲーム数
Rpre: ゲーム前のレート値
m: 相手の人数
Ravg: 相手のレート値の平均
W: 勝ちなら 1, 負けなら 0
L: 勝ちなら 0, 負けなら 1
話を簡単にするために H2H に限定すると、勝利するとゲーム前からの変動は
(Ravg - Rpre + 400)/(N+1)
^^^^^^^^^^^^^^^^^^^^^^^^^^
という簡単な式になります。こっちの方が分かりやすいですよね?
この式のポイントを簡単に説明すると、
・ 変動の大きさは相手のレート値と自分のレート値の差による
・ ゲーム数が少ないときほど変動が大きい
・ 相手が400以上低い場合は勝ってもレートが下がる
<例>
では、幾つか例を示しておきます。
自分:1800, 相手:2000, ゲーム数:3 の場合 勝利:1950(+150), 敗北:1750(-50)
自分:1800, 相手:1800, ゲーム数:3 の場合 勝利:1900(+100), 敗北:1700(-100)
自分:1800, 相手:1600, ゲーム数:3 の場合 勝利:1850(+50), 敗北:1650(-150)
自分:1800, 相手:2000, ゲーム数:7 の場合 勝利:1875(+75), 敗北:1775(-25)
自分:1800, 相手:1800, ゲーム数:7 の場合 勝利:1850(+50), 敗北:1750(-50)
自分:1800, 相手:1600, ゲーム数:7 の場合 勝利:1825(+25), 敗北:1725(-75)
皆さん感覚的にご存知の通り、ゲーム数が少ないときになるだけ高い相手と戦って勝つことで効率よくレートが上がります。^^
--------------------------------------------------------------------------------
[2] ゲーム数が 9以上 の 場合
こちらは式がさらにややこしくなります。後で簡単に説明しますが、とりあえず定義を。
Rpost = Rpre + K*(S-E)
K = 800/(Ne + m)
S: 勝ちなら 1, 負けなら 0, 引き分け(ハルマゲ?)なら 0.5
E = 1/(10^(Ropp-Rpre)/400 + 1) の合計
Rpost: ゲーム後のレート値
Rpre: ゲーム前のレート値
Ropp: 相手のレート値
m: 相手の人数
Ne = min(min(Nr, 50), N)
Nr = 50/square root(1 + (2200 - Rpre)^2/100000)
式が何段階かに入れ子状態になってて計算が大変なので、再び話を簡単にします。
H2H で勝った場合の変動は
K*(1-E)
^^^^^^^^
K は変動定数で、これまでのゲーム数、自分のレート値から決まる。
ゲーム数が多いか、自分のレート値が高い場合は低く設定される。
E は勝利期待値のようなもので、自分と相手とのレート値の差から決まる 0 から
1の値。
相手とレート値が同じ場合は 0.5, 相手より高いほど 1 に近く、低いほど 0 に近くなる。
という感じで理解して下さい。ま、式ベースで話をしても分からんぞという声が聞こえてきそうなので、ポイントだけ箇条書きにします。
・ 相手が高いほど勝つと大きくアップ、負ければ小さくダウン
・ 相手が低いほど勝つと小さくアップ、負ければ大きくダウン
・ 幾ら相手のレート値が低くても勝てばレートが下がることはない
・ 変動定数K の最高値 は80, 試合数を重ねるかレートが高くなると小さくなり最低は
16
・ 実際の変動値は(変動定数K)×(1-期待値E) で決定
それでは、お待ちかね(?)のサンプルです。
<例>
自分:1800, 相手:2000, ゲーム数:19 の場合 K=40, E=0.24, 勝利:1830(+30),
敗北:1790(-10)
自分:1800, 相手:1800, ゲーム数:19 の場合 K=40, E=0.50, 勝利:1820(+20),
敗北:1780(-20)
自分:1800, 相手:1600, ゲーム数:19 の場合 K=40, E=0.76, 勝利:1810(+10),
敗北:1770(-30)
自分:1800, 相手:2000, ゲーム数:39 の場合 K=25, E=0.24, 勝利:1819(+19),
敗北:1794(-6)
自分:1800, 相手:1800, ゲーム数:39 の場合 K=25, E=0.50, 勝利:1815(+13),
敗北:1788(-12)
自分:1800, 相手:1600, ゲーム数:39 の場合 K=25, E=0.76, 勝利:1806(+6), 敗北:1781(-19)
自分:2000, 相手:2200, ゲーム数:39 の場合 K=20, E=0.24, 勝利:2015(+15),
敗北:1995(-5)
自分:2000, 相手:2000, ゲーム数:39 の場合 K=20, E=0.50, 勝利:2010(+10),
敗北:1990(-10)
自分:2000, 相手:1800, ゲーム数:39 の場合 K=20, E=0.76, 勝利:2005(+5), 敗北:1985(-15)
ということで、強い人に挑んで負けたとしても下がる値は小さいです。どんどんレートの高い人と対戦して行きましょう!
# 本当は cgi あたりで変動値計算のコードを書きたい所ですが時間がぁ (・ェ・;)