Hatena::ブログ(Diary)

でこすけの日記

2015-12-01

スプラトゥーンのウデマエ分布に関して

(この記事は、第2のドワンゴ Advent Calendar 2015の第一日目の記事です)

近年のweb業界で流行っている技術の一つがスプラトゥーンにおけるエイム技術なので、スプラトゥーンの話をします。スプラトゥーンとは何かというと、任天堂が作った可愛いイカ同士がじゃれあうピカチュウげんきでちゅうの後継ゲームです。ようするに、イカちゃんドリームランドです。イカちゃんたちがあまりにも可愛いので、ゲーム中のブキ選択は勝利シーンの可愛さで選ぶという方が大半だと思います。

f:id:Dekosuke:20151123173202j:image:w180

(図:異常に可愛いスピナーの勝利シーン)

不思議なことに、スプラトゥーンはゲームのジャンルでいうとサードパーソンシューティングTPS)に属します。ようするに、自分の操作するイカちゃんがインクを相手に当てたり当てられたりするのを後ろから生暖かい視線で見守るゲームです。

f:id:Dekosuke:20151123174726p:image:w180

(図:シューティングゲームに関する一般的な見解)

もちろん、皆様もご存じの通りシューティングゲームは遊びではありません(上図)。

イカたちの住むハイカラシティにおいてはイカにして相手をキルするかを四六時中考えているシリアルキラーのようなイカたちが一定割合で存在し、ガチマッチと呼ばれるサツバツバトルが日夜行われております。

ガチマッチにおいては、棒立ちで射撃をしているようなニュービー・イカニンジャは3秒とたたず海の藻屑となってしまうことでしょう。

FPSをはじめとした対戦ゲームにおいては、個人の実力が存在します。ゲームの強いイカと弱いイカです。強いイカ同士や弱いイカ同士でマッチングしたほうが実力が伯仲して面白いので、イカの強さを測るための目安が必要です。

というわけで、本日はスプラトゥーンのウデマエ(レーティング)の話をします。

レーティングとは

レーティングは、実力をはかる物差しのようなものです。勝敗を予測するために、各プレイヤーに強さの数字を割り当てます。もちろん、勝負には相性や調子などもあるのですが、そういうのを細かく考慮していたらキリがないので、そこらへんはレーティングでは普通考慮しません。

スプラトゥーンのウデマエ

スプラトゥーンのウデマエは、ゲーム内のガチマッチにおけるレーティングシステムです。このレーティングシステムでは、プレイヤーの分身であるイカは開始時に最低クラスであるC-から始まり、最高クラスであるS+を目指すことになります。

f:id:Dekosuke:20151123190933p:image:w180

(図:最高クラスであるS+プレイヤーの例)

ガチマッチでは、8人のプレイヤーが4人ずつの2チームに分かれ、一定のルールの元に勝敗を争います。勝利するとプレイヤーの持つポイントが増え、敗北するとポイントを失います。ポイントが100以上になると上のクラスへ昇格し、0より低くなると下のクラスへ降格します。以下の図がレーティングの増減になります。4人チームの構成によっては貰えるポイントがここから微妙に増えたり減ったりします(強い相手に勝つとポイントが多く貰えるなど)。

クラス勝利敗北
C-+20-10
C+15-10
C++12-10
B-+12-10
B+10-10
B++10-10
A-+10-10
A+10-10
A++10-10
S+4-5
S++3-5

(表:勝利時・敗北時に貰えるポイントの変化。実際は各クラス内でも現有ポイントによって0-39, 40-79, 80-99の3段階に分かれたウデマエ増減システムのようですが、この図では簡単のため省略します。)

C-からB-の位置づけ

C-からB-はニュービー・イカの助走ゾーンとなっています。この期間では、敗北時に失うポイントは10ポイントですが、勝利時に貰えるポイントが10より大きく設定されています。そのため、ある程度戦えるようになれば、この区間は可及的速やかに抜けられるようになっています。

この仕様は個人的には悪くないと思います。

f:id:Dekosuke:20151124005905p:image:w180

(図:ニュービ―・イカの例)

レーティング分布

ちょっと前にイカのようなツイートをしました。

関連したツイートを色々していたのですが、そこらへんの考えが自分の中で結構クリアになったので、現時点でのこのウデマエシステムに関する特徴をまとめてみようと思います。

ウデマエシステムの特徴

ウデマエシステムでは

  1. プレイヤーのクラスをC-からS+の11段階に分けている
  2. それぞれのクラスに一定期間在籍するために、昇格時には次クラス30から開始、降格時には前クラス70から開始

という特徴があります。任天堂がキッズが安心して遊べるために便利なシステムを考えだした、と言えば聞こえは良いのですが、関連してマッチング精度を悪化させるいくつかの問題点があると私は考えます。

問題点

ウデマエシステムには、少なくても以下の3点の問題点があります。

  1. ポイントの和がゼロサムゲームでないこと:クラス昇格時に隠れたボーナスがあります。
  2. 所持ポイント1-39, 40-79, 80-99の間での差:上表では省略しましたが、同じクラスでも1-39では勝ったときに多くポイントが貰えたり、80-99では負けたときにあまりポイントが貰えない補正があります。
  3. クラスS以降のポイント増減が少なく、S以降の実質的な区間幅が大きい点

これらの3点についてそれぞれ説明してゆきます。

問題点1:隠れボーナス

以下の2つの隠れボーナスがあります。

  1. 0ボーナス
  2. A+→Sボーナス

0ボーナスは、ポイントが0になってもクラス降格しないことから生じます。例えば、現在のクラスがBの70だとして、3連勝すると昇格してB+の30になりますが、そのあと3連敗してもB+の0となりギリギリ降格せず、もう一度負けてやっと降格しBの70に戻ります。これを繰り返すとびっくり、3勝4敗でもポイントが維持できてしまいます。その間に自分に勝ったプレイヤーのポイントは上昇しているため、全プレイヤーでの持ちポイントの合計がプラスになります。

A+→Sボーナスは、A+までのクラスと比較して、Sクラスのポイントの増減が少ないことから生じます。A+までは原則勝ち負けでポイントが10増減しますが、Sではポイントが5しか変動しなくなります。例えば、現在のクラスがA+の70だとして、3連勝すると昇格してSの30になりますが、そのあと7連敗してやっとA+の70に戻ります。こちらはさらにびっくり、なんと勝率3割でポイントが維持できます。

問題点2:所持ポイント1-39, 40-79, 80-99の間での差

上のポイント増減表では各クラスでのポイントの増減は固定と書きましたが、実際は同じクラスでも所持ポイントが低いときはポイントが増加しやすく、高いときはポイントが増加しにくい仕様になっています。実際のポイント増減に関して任天堂は仕様を公表していない為、あくまでも予想なのですが、stat.inkのログや自分の体感をもとに、ポイント増減は以下の表で考えるとします。

クラス勝利敗北
(BからA+)ポイント1-39+12-8
(BからA+)ポイント40-79+10-10
(BからA+)ポイント80-99+8-12
S ポイント1-39+5-5
S ポイント40-79+4-5
S ポイント80-99+4-6
S+ ポイント1-39+4-4
S+ ポイント40-79+3-5
S+ ポイント80-99+2-5

この結果として、A+上位では6割7分勝たないとポイントが維持できないのに、S下位だと5割で現状維持できたりします。

問題点3:クラスSでのポイント増減の減少

クラスS以降では、勝敗でのポイントの増減が他の区間の半分程度になります。

で、これは何が起きているかというと、実質的にクラスSは他の区間の倍の長さがあるということになります。

f:id:Dekosuke:20151127000812p:image:w280

(図:レート増減がだんだん小さくなる場合の実質的な区間幅のイメージ)

ウデマエの平衡分布

というわけで、これらを考慮に入れてプレイヤーのウデマエの平衡分布のシミュレーションを行ってみましょう。もちろん全プレイヤーの実力を考慮に入れるのは大変難しいため、簡単のために全勝負の結果を50:50と仮定します。また、プレイヤーは十分たくさんガチマッチを行うものとします。

というわけで、1000人のサンプルプレイヤーでのウデマエのシミュレーションは以下になります。ソースコードこのURLにあります。

f:id:Dekosuke:20151124003950p:image:w280

(図:プレイヤー1000人でのウデマエ分布。縦軸はパーセンテージ)

半分近いプレイヤーがS帯、7割以上がA+以上という結果になります。S帯に行ってちょうど真ん中ぐらいといったところです。言い換えると、だいたいのプレイヤーはA+からSにいるので、11段階のプレイヤーのクラス分けは実際のところプレイヤーの実力を示す役割を果たせていないことになります。

もちろん、上のシミュレーションはプレイヤーがたくさんマッチングを行ったときの平衡分布ですし、プレイヤーのウデマエのばらつきを考慮していないため実際のアクティブプレイヤーのウデマエの分布とは異なると思います。しかし、多くのプレイヤーがS付近に集まるという性質はどうやらあるようです(問題点1のA+→Sゲインが最も効いています)。また、裏付ける証拠の一つとして、(参加バイアスもありますが)イカナカマスプラトゥーンの非公式コミュニティサイト)での実力の平均はA+からSです。

結局、何が困るのか

問題点があってもいいじゃん、所詮お遊びなんだから?という意見もあるかもしれません。また、ウデマエシステムはプレイヤーに達成感を与えるのが目的なため、現行のたくさんプレイすれば半分ぐらいのユーザがクラスSになれるようなシステムが望ましいのだ、という反論は考えられます。

しかし、一応「ウデマエ」という名前で値が割り振られているということから、プレイヤーの実力を反映した数値を割り振るのがあるべき道だと考えられます。また、マッチングの精度が下がるということは大きな問題です。というのは、実力を正しく測れないことにより、ワンサイドゲームが増えたり、ウデマエを信じられなくなるからです。結果として、実力伯仲したゲームがプレイできた場合と比べて、プレイヤーの幸福感(効用)が下がることになります。「クラスSが味方に来てくれたのにこの惨敗っぷりは何なの?」みたいなことが起きる割合を減らすためにも、レーティングシステムをもう少し真剣に考えるのも良いのではないでしょうか。

改善案

文句を言うだけなのは良くないため、いくつかの改善案を提案します。

  • 0ボーナスの除去:所持ポイントがちょうど0になったら降格にします
  • A+→Sボーナスの除去:A+からSに上がった場合のポイント初期値を15にします
  • 1-39でポイントが下がりにくい、80-99でポイントが上がりにくい現象を除去します

最初の2点は問題点1へ、3点目は問題点2への対処です。問題点3についてはこの案では対処していません。

改善案のシミュレーション

改善案を考慮した場合のシミュレーション結果は以下になります。

f:id:Dekosuke:20151124003948p:image:w280

(図:プレイヤー1000人でのウデマエ分布(改善版)。縦軸はパーセンテージ)

元の分布と異なり、クラスBからSにかけてプレイヤーが均等に分布していることが分かります。クラスSの人口が大きいのは問題点3を解決していないためだと考えられます。この問題を解決するためには、Sでのポイント増減を倍にすれば良いと思われます。

S+の人口が極端に少ない点は変わっていませんが、これは全プレイヤーの勝率が5割と仮定した場合なので、実際はコンスタントに勝ち続けるプレイヤーは一定数いるはずですので、もう少しS+のユーザは大きくなるはずです。

その他:ウデマエのローカル保存

サーバ側でデータを管理する多くのオンラインゲームと異なり、スプラトゥーンのウデマエはローカルストレージに保存されています。また、Wii UのデータをUSBドライブにバックアップすることが可能なため、負けたときにはデータをバックアップから復帰させれば、勝ったときの記録だけ残すことが可能になります。そのため、負けたプレイヤーがバックアップからの復帰を行った場合、勝ったプレイヤーのポイントのみが上昇するので、プレイヤーの総ウデマエがゼロサムではなくなり、プレイヤーのウデマエが上側に押し上げられます。この仕様が任天堂の意図したものなのかどうかは不明ですが・・・

さいごに

色々文句を言いましたが、ゲームを楽しみましょう。エンジョイ&エキサイティング!

参考

Eloレーティングシステム:https://en.wikipedia.org/wiki/Elo_rating_system

コロコロ公式サイト(スプラトゥーンのコミック):http://www.corocoro.tv/tachiyomi/splatoon/

イカナカマ:http://ikazok.net/

stat.inkhttps://stat.ink/

ウデマエポイントの計算方法の変更(S,S+のポイント増減):http://www.nintendo.co.jp/wiiu/agmj/update/index_220.html#spa_anchor_05

Evaluating Splatoon's Ranking System(ウデマエがA+までの時代の話ですが、この記事の問題提起のかなりの割合はここから来ています):http://www.evanmiller.org/evaluating-splatoons-ranking-system.html

ななしななし 2015/12/01 19:23 ウデマエの分布については
http://www.nicovideo.jp/watch/sm27646060
という見解もあるようですがどうなんでしょう?

DekosukeDekosuke 2015/12/01 20:52 動画を見ての反応ですが、勝率50%のところまではぼくの解析と本質的に同じ、それ以降の解析はちょっと適当なのでは(実力を導入するなら勝率をちゃんと実力の差で確率的に定義したり、プレイ時間と実力の関係差をちゃんとデータの実証をもとにしたほうがいい)と思います。

kumar8600kumar8600 2015/12/02 00:16 非常に興味深く読ませていただきましたが、
> また、マッチングの精度が下がるということは大きな問題です。
ここの根拠が無いのが残念です。もしマッチングがウデマエのカテゴリごとに行われているのなら正しいと思いますが、そのままの値で行われているのなら精度が下がっているとは言えないと思います。また、マッチングにおいてウデマエではなく別のレイティングシステムが使われている可能性も大いに考えられます。

ちなみにぼくはみんながSになれるスプラトゥーンが大好きです。

DekosukeDekosuke 2015/12/02 01:22 >kumar8600さん
おっしゃる通り、マッチングの精度が下がっているというのはそこまで根拠がないですね。
>別のレイティングシステム
Bの人がSとマッチングするなどはめったにないため、マッチングはクラスベースで行われていることは確実だと思いますが、同じクラスの中でもマッチ相手を選ぶためのアルゴリズムが(別のレイティングシステム?)働いている可能性はあります。
個人的には、そこらへんを公式にアナウンスしてくれるとすごい安心しますね。たとえば、同クラスで直近10試合の勝率順で優先度をつけてマッチングします、みたいに明示してくれたほうが嬉しいです。まあでも、マッチングアルゴリズムを公開しているゲームはそんなにないイメージですね。

kumar8600kumar8600 2015/12/02 03:11 >Dekosukeさん

>マッチングアルゴリズムを公開しているゲームはそんなにないイメージですね
ぼくもそう思いますが、
http://www.iro.umontreal.ca/~lisa/pointeurs/gro-matchmaking-ieee.pdf
Ghost Recon Phantoms (GROから改題した)で使われているマッチメイキングのアルゴリズムの話とかあります。
プレイヤーの特性をもとにニューラルネットワークで、ある面子での対戦の面白さを予測するシステムを作り、それを使ってマッチメイキングをする話です。
ちなみ、ぼくは途中までしか読んでません(ぼくには結構つらい)

DekosukeDekosuke 2015/12/04 01:25 >kumar8600さん
論文ありがとうございます。

UbisoftのゲームのBeta版のデータを使えるのは羨ましいですね。
ざっと見たところ、この論文ではマッチの公平さとプレイヤーの面白さをちゃんと分けていますね(両チームがガン待ちだと勝率50:50でもまったくインタラクションがなくて面白くないみたいな例を挙げていますね)。
で、プレイヤーの面白さに関わるfeatureなどはゲーム内の調査をフィードバックに学習しているっぽいですね。

beta時ということでゲームのバランスなどの調整時にマッチングの公平性の検証しているわけですが、ステージのチューニングなどもユーザのフィードバックをもとに面白さを最大化するなどの方法は1つの方法論としてあるかもしれませんね。
スプラトゥーンでも多くのステージでバトル形式がかなり限定されていますし(モンガラのヤグラが滅多に出ないとか)、まあなんか失敗ステージの作り直しとかあってもいいのかもしれません。

あと、著者の一人と別の研究で今年話した気がします(世界は狭い)

kumar8600kumar8600 2015/12/04 02:46 > Dekosukeさん
ありがとうございます。

ちなみにこのゲームのSteamでの評価を見てみたところ、マッチメイキングが不公平であるとか、課金しなければ勝てないだとかいった意見が見られました。(ぼく自身でやってないので本当にそうなのかは確かではありませんが・・・)

> あと、著者の一人と別の研究で今年話した気がします(世界は狭い)
すごい

DekosukeDekosuke 2015/12/04 13:45 >Steamでの評価
これですか。点数悪くないけどレビューはフルボッコですね。
http://steamcommunity.com/app/243870/reviews/?browsefilter=toprated

kumar8600kumar8600 2015/12/04 17:42 > Dekosukeさん
それです。マッチメイキングが不公平であるというレビューは不思議ですね。

HiroHiro 2015/12/08 17:34 私も似たようなのを作って見ましたがだいぶ結果が違いますね…
こちらにある勝利/敗北の点数表を使ってみましたがやはり違う
全て勝率5割っていうのに無理があるんではないでしょうか…?

私のものは
・一万人を用意
・ランク±2の範囲で10/20/40/20/10ぐらいの確率で上下ウデマエでマッチングするように8人を選び、ランダムでチーム分け
・ユーザをユーザインデックス=強さとし、2チームの「強さ」合計比を勝率に
・40000マッチごとに100ユーザがリセット(100人が辞め、100人がC-で新規加入)
・400万マッチ試行
するようにしてあります。
それで
C- 32
C 178
C+ 361
B- 566
B 934
B+ 948
A- 1027
A 1271
A+ 1597
S 2790
S+ 296
ですね。
A+以上は3割になります。

Sが確かに多いですがそこまでは偏ってない感じです。
辞めるのと新規参入を消すとこんな感じです。

C- 4
C 45
C+ 153
B- 310
B 657
B+ 724
A- 1014
A 1313
A+ 1876
S 3459
S+ 445

やはり新規参入を消すとよりこちらのものに近くなりますが、
A+以上が4割とそこまで極端にはなりません。

どんなもんでしょうか

HiroHiro 2015/12/08 17:36 「A+以上」ではなく「A+より上」ですね…お恥ずかしい
A+以上にするとそれぞれ45%、60%ってとこでしょうか
あんまり変わらないか…

DekosukeDekosuke 2015/12/13 19:34 >Hiroさん
はい。正確に分布を推定するにはモデルをもう少ししっかり作りこまなければいけなくて、モデルを細かくしても結局そのモデルの妥当性があるのか?という話になります。そして妥当性の検証はとても大変で、そこらへんがめんどいので一律5割という極端に単純化した方法を使っています。

まっとうな方法で分布推定の正確さを上げようとするなら
・マッチングのモデルをより正確にして(マッチングアルゴリズムは公開されていないのである程度の推測になってしまいますが)
・勝率にちゃんとしたモデル(TrueskillとかEloとか?)を導入して
・新規参入を何かのモデルで導入して
・各部分のハイパーパラメータ(ユーザの実力分布の分散とか新規参入割合とか)に実際のユーザに基づいた検証可能な値を代入する
というのが多分正しいのですが、ユーザの統計情報を得る方法がないのでできないしめんどいという感じですね…

HiroHiro 2015/12/14 10:00 切断時のポイント増減(初めから少ないと少数チームは-1、ホスト落ちで全員-10?)もありますね。
任天堂の意図としては「あとから始めた人でもがんばれば上まで行ける」というのがあるでしょうし、そのためにSがたまるようにされているんですかね…。
おかげで私もSになれました(笑

HiroHiro 2015/12/14 10:00 切断時のポイント増減(初めから少ないと少数チームは-1、ホスト落ちで全員-10?)もありますね。
任天堂の意図としては「あとから始めた人でもがんばれば上まで行ける」というのがあるでしょうし、そのためにSがたまるようにされているんですかね…。
おかげで私もSになれました(笑

HiroHiro 2015/12/14 10:00 切断時のポイント増減(初めから少ないと少数チームは-1、ホスト落ちで全員-10?)もありますね。
任天堂の意図としては「あとから始めた人でもがんばれば上まで行ける」というのがあるでしょうし、そのためにSがたまるようにされているんですかね…。
おかげで私もSになれました(笑

ingktingkt 2016/01/26 18:46 誰が誰とやっても勝敗が五分五分ということは、その集団は均質です。つまり全員おなじ実力を持っている。そういう集団内でガチマッチをしたら全員が同じウデマエになるのは正しい結果です。全員がウデマエSになってなんの不思議もありません。
Hiroさんのようにプレイヤーのパラメータとして強さを持たせて勝敗を確率的に決定するべきです

frnpfrnp 2016/03/04 05:17 拝見させてもらいましたが、既に他の方が仰っているように勝率50%は無理がありますね。
最初のコメントのURL先の動画がとても現実的に感じました。

HiroHiro 2016/05/10 18:43 「最終的にバランスが取れれば」50%になるんであって、どうせ近似ですよ
意味のないものだとは思いません。
一歩近似を進めてみたのが私のやり方ですが、Dekosukeさんは私がやったようなのでは中途半端で意味がないと判断したまででそれは見切りの問題です。
> 誰が誰とやっても勝敗が五分五分ということは、その集団は均質です
これは勘違いですね
URL先の動画はそういう意味でより近似が荒いです。
また体感に合わせて適当なタイミングでのデータを見せていたりするので現実的なのは当たり前です。

HiroHiro 2016/05/10 18:43 「最終的にバランスが取れれば」50%になるんであって、どうせ近似ですよ
意味のないものだとは思いません。
一歩近似を進めてみたのが私のやり方ですが、Dekosukeさんは私がやったようなのでは中途半端で意味がないと判断したまででそれは見切りの問題です。
> 誰が誰とやっても勝敗が五分五分ということは、その集団は均質です
これは勘違いですね
URL先の動画はそういう意味でより近似が荒いです。
また体感に合わせて適当なタイミングでのデータを見せていたりするので現実的なのは当たり前です。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/Dekosuke/20151201/1448931745