テーマ
人狼にレートは導入可能か
多くの対戦ゲームで使用されているレートシステムを人狼にも適用できるか試してみました。
人狼における強さの指標とは?
勝率
すべての試合のうちの勝った試合の割合。欠点は、第3陣営の狐がいる配役で試合をすると勝率が低くなり、単純に比較ができなくなる点。
ポイント制
勝った場合は+50、負けた場合は-50というように、あらかじめ決めたポイントを増減させて強さを測る方法。第3陣営の狐を入れた場合でも、勝利した場合+66.6、負けた場合-33.3として計算することで、すべての試合を平等に比較することができる。
レート制
プレイヤーの強さを数値として反映する。自分と相手のレートから「相手に勝てる確率」によって増減する数値が変わる。
レートとは
Wikipedia
「ゲームレート」とは、オンラインゲームや対戦型ゲームにおいて、プレイヤーのスキルや実力を数値化したものであり、プレイヤー同士の公平なマッチメイキングやランキングの表示などに使用されるものである。
調べたところ、試合の勝敗からレートを計算するにはいくつか方式があるようです。(Elo、Glicko、Trueskillなど…)
今回はElo(イロ)レーティングシステムを使うことにしました。
レート制の特徴
例えば、レートが1500のAさんと1600のBさんがいたとします。レートはプレイヤーが強いほど数値が大きくなるので、この場合はBさんの方が強いということになります。この2人が試合をしてそれぞれが勝った場合と負けた場合を考えてみます。まずは強い方のBさんがAさんに勝った場合を考えます。Eloレーティングで計算すると、試合後のAさんのレートは1488、Bさんのレートは1612になりました。勝ったBさんのレートは+12だけ上昇しました。
次に、強い方のBさんが負けた場合について考えます。先程と同じように、Aさん、Bさんのレートはそれぞれ1500、1600とします。Eloレーティングで計算すると、試合後のAさんのレートは1520、Bさんのレートは1580になりました。勝ったAさんのレートは+20だけ上昇しました。
AさんとBさんの勝った時に上昇するレートの数値に差があることが分かります。強いBさんがAさんに勝った時よりも、Aさんが強いBさんに勝った時の方がレートが大きく変動しています。強い人が勝った場合に上がるレートよりも、弱い人が強い人に勝った場合に上がるレートの数値が大きくなっています。
これをチーム戦に当てはめてみます。人狼はランダムにチームが分けられるので、まず人狼チームと村人チームの平均レートを出します。2つのチームの平均レートを先程と同様に計算します。そして、変動した数値をプレイヤーに適用します。
レート制によって、例えば1人の強い人がいたとして、同じチームの他のプレイヤーが初心者だったとしても、チームの平均レートが相手のチームより低かった場合は下がるレートの幅が小さくなります。要するに、不利な試合で負けた場合はレートは少ししか下がらず、勝った場合はレートが大きく上がります。逆に、有利な試合で負けた場合はレートが大きく下がります。
実際にやってみた
2023年の1月1日〜12月31日までの1年間に行われた10a狩のログを対象とします。プレイヤーはトリップで識別します。
ログを取得
人狼onlineのログから配役が10a狩のログを全て取得。
レートを計算
1回目の試合からレートを計算して、次の試合の結果から更にレートを更新…という流れですべてのログからレートを計算しました。
統計から見る人狼online
レートの分布は下のようになりました。

なんか思ってたのと違うな…
レート1350と1650付近にプレイヤーが偏っています。なぜこのような結果になったのかを調べるため、トリップあたりの戦績数をグラフにしました。

このグラフから、多くのトリップの戦績数が1であることが読み取れます。端末やブラウザを変えると素トリップが変わるため、このような結果となったと考えられます。先程の2つの突出した棒グラフは、1戦だけして勝った、もしくは負けたプレイヤーが集まっていたようです。アカウント登録制でなく、気軽に楽しめる人狼onlineの特性が表れています。
レートマッチングシステムがない場合でも、ある程度試合をする事でレートが実力に近い数値に近づくと仮定します。戦績が10戦未満のものを「計測中」として除外し、レートの分布をグラフにしました。

良い感じに分布していました。
結論
レートは"ある程度"計算することができる
…かもしれない。
今回の方法で算出したレートがどれぐらい正確に実力を反映しているかは未知数です。