スポンサーリンク

【スマブラSP】キャラクターの相性を統計的に評価してみた

未分類
スポンサーリンク
スポンサーリンク

【スマブラSP】キャラクターの相性を統計的に評価してみた

 様々なキャラクターの存在する対戦ゲームの競技シーンにおいて、キャラクターの相性はしばしば議論されるテーマである。スマブラSPも例によって多くのプレイヤーによりキャラクター相性表が作成されている。

 キャラの相性表は人の個性が多く出るもので、キャラ相性だけでなくその人の考え方、人柄がわかる非常に面白いものだ。様々な基準のキャラクター相性表があるのは非常に興味深いが、一つの指針となる統計的なデータがあっても良いのではないかと私は考えた。

 ストリートファイターなどの格闘ゲームでは、ネットやアーケードでの対戦データを蓄積して公式でキャラダイアグラムを公開していることが多い。任天堂ももちろんネット対戦のデータは蓄積していてアップデートに生かしているだろうが、みなさんご存じの通り公開されていない。

 そこで本記事では、大会運営サイトのsmashggのAPIから大会結果のキャラについてのデータを収集し、客観的なキャラダイアグラム表を作成することを目的とした。ちなみに筆者はプログラミングをほとんど触ったことがなかったため、めちゃくちゃ苦労して1か月以上記事を書くことができなかった。(実はこれまでの記事のデータはsmashggから手動でコピペしていました・・・笑ってください)

データ収集条件

 データはsmashggのAPIより収集させていただいた。データ収集の対象とした大会は、juddyのまとめているスマブラ大会をまとめているデータシートの中の、参加者が300人以上の人数の大会とした。APIより、キャラの使用回数・勝敗結果を引き出しそこからキャラダイアグラムの作成を試みた。

 データを見るうえで、以下の点に注意されたい。

  • 運営にsmashggを使用していない大会、smash.ggに試合のキャラ報告がされていない試合は集計に入っていない。
  • キャラ報告はトーナメントの上位の試合しかされていないことが多い。
  • 使用回数は1ゲームごとに集計しており、使い手の人数とは一致しない。そのため強い使い手が頻繁に大会に参加して上位に常に入っていると必然的に使用回数は多くなる。

使用回数キャラランキング、勝率

 はじめに、キャラの使用回数と勝率を示す。並び順は使用回数が多い順となっている。

キャラ名 使用回数 勝率(%)
ピーチ 230 134 96 58.26
スネーク 224 114 110 50.89
オリマー 205 114 91 55.61
ピチュー 167 87 80 52.10
フォックス 159 82 77 51.57
ウルフ 111 53 58 47.75
インクリング 105 43 62 40.95
ルキナ 104 53 51 50.96
ゼロスーツサムス 100 52 48 52.00
アイク 98 55 43 56.12
パルテナ 94 45 49 47.87
ポケモントレーナー 90 44 46 48.89
ロボット 82 31 51 37.80
ロックマン 78 38 40 48.72
ピカチュウ 75 37 38 49.33
ワリオ 73 41 32 56.16
ジョーカー 67 45 22 67.16
ロイ 53 32 21 60.38
ネス 50 31 19 62.00
パックマン 44 17 27 38.64
クロム 43 20 23 46.51
ディディーコング 35 16 19 45.71
ダックハント 33 20 13 60.61
ドンキーコング 33 14 19 42.42
キャプテンファルコン 31 17 14 54.84
リンク 29 15 14 51.72
ゲッコウガ 29 14 15 48.28
クラウド 29 12 17 41.38
マリオ 29 5 24 17.24
トゥーンリンク 26 13 13 50.00
ヨッシー 26 7 19 26.92
デイジー 20 6 14 30.00
ルフレ 19 9 10 47.37
ケン 18 11 7 61.11
ヤングリンク 18 7 11 38.89
ゲーム&ウォッチ 17 10 7 58.82
ルイージ 17 9 8 52.94
ソニック 14 6 8 42.86
ルカリオ 12 7 5 58.33
しずえ 12 6 6 50.00
デデデ 11 4 7 36.36
ミュウツー 11 4 7 36.36
ベヨネッタ 11 3 8 27.27
ロゼッタ 11 2 9 18.18
リヒター 10 3 7 30.00
ガノンドロフ 9 5 4 55.56
クッパ 8 1 7 12.50
リドリー 7 2 5 28.57
ガオガエン 7 2 5 28.57
カムイ 6 3 3 50.00
ゼルダ 6 2 4 33.33
メタナイト 5 4 1 80.00
シーク 5 0 5 0.00
サムス 3 3 0 100.00
格闘Mii 3 1 2 33.33
むらびと 3 1 2 33.33
ドクターマリオ 3 0 3 0.00
剣術Mii 2 2 0 100.00
ファルコ 2 0 2 0.00
シュルク 2 0 2 0.00
ブラックピット 1 0 1 0.00
プリン 1 0 1 0.00
カービィ 1 0 1 0.00
キングクルール 1 0 1 0.00
クッパジュニア 0 0 0 0.00
アイスクライマー 0 0 0 0.00
リトルマック 0 0 0 0.00
リュカ 0 0 0 0.00
マルス 0 0 0 0.00
ピット 0 0 0 0.00
リュウ 0 0 0 0.00
WiiFitトレーナー 0 0 0 0.00
ダークサムス 0 0 0 0.00
シモン 0 0 0 0.00
射撃Mii 0 0 0 0.00
パックン 0 0 0 0.00

 一番使用回数が多いのは、最強キャラといわれることの多いピーチであった。使用回数のデータは前回の調査の時とあまり変わっていない。また使用回数上位5キャラはいずれも勝率50%を上回っており、使用回数と勝率(キャラの強さ)は相関があるように見える。

 上のグラフは使用回数を横軸にとって縦軸に勝率をプロットしたものである。赤線は我ながらひどい近似曲線である。ぱっと見対数っぽく見えたので対数近似を行った。まあ、なんとなく正の相関があるといってよいのではないだろうか・・・。 

 皆さんお気づきの通り勝率についてはまだまだ議論するにはサンプルが少ないのが現状で、勝率だけでみるとサムス・剣術Miiは勝率100%で最強キャラである。おそらく使い手の偏りが大きく、キャラのみではなく使い手の強さに依存した勝率となってしまっているのが現状であろう。MkLeoのせいでジョーカーの勝率は異様に高くなってしまっている。

統計的な真のキャラランキングとは・・・?

 トーナメントというルールの性質上、勝ち進めば勝ち進むほどキャラの使用回数は増えるので、キャラの使用回数ランキングのほうが、勝率よりも本来のキャラの強さのランキングとなっているかもしれない。 直感的であるが 、キャラの使用回数を使い手の数で割ったような指数が、真のキャラの強さ(大会での勝ちやすさ)を一番反映しているような気がする。

 参加者から簡単にキャラ報告ができるような仕組みができれば、よりサンプル数が多くなり偏りの少ないデータになるので、smashggには今後とも頑張ってもらいたい。

キャラダイアグラム(使用回数上位キャラのみ)

 ようやく本題。キャラダイアグラムをある程度サンプル数のある使用回数の上位9キャラについて出してみた。 表内の数値は勝率である。

ダイアグラム フォックス インクリング ルキナ オリマー ピーチ ピチュー スネーク ウルフ ゼロスーツサムス
フォックス 50.00 38.89 46.15 37.50 36.36 55.56 41.67 No Data
インクリング 50.00 36.36 33.33 66.67 No Data 50.00 33.33 0.00
ルキナ 61.11 63.64 70.00 No Data 50.00 20.00 No Data 100.00
オリマー 53.85 66.67 30.00 25.00 75.00 50.00 55.88 41.67
ピーチ 62.50 33.33 No Data 75.00 54.55 62.50 100.00 45.45
ピチュー 63.64 No Data 50.00 25.00 45.45 27.27 66.67 No Data
スネーク 44.44 50.00 80.00 50.00 37.50 72.73 25.00 50.00
ウルフ 58.33 66.67 No Data 44.12 0.00 33.33 75.00 100.00
ゼロスーツサムス No Data 100.00 0.00 58.33 54.55 No Data 50.00 0.00

 1キャラ1キャラのサンプルがどうしても少なくなってしまうのと使い手による依存が気になるところではあるが、勝率のばらつきが大きいのは正しそうである(本来は検定して評価すべき)。強キャラ相手に1キャラを使って安定して勝つのはどのキャラでも難しそうで、複数のキャラを手札に持っておくのは有効なことがわかったキャラ相性というのはやはり存在しているようだ。

 今後のn増しに乞うご期待!!

まとめ

 はっきりとした結論のでないしょうもない記事となってしまったが、結果をまとめておく。

  • 使用回数No.1はピーチ
  • 使用回数と勝率には正の相関がありそう
  • 1キャラで安定して勝つのはむずかしそう

以上!

最後に

smashggからAPIを利用してデータが抜き出せるようになるまでに、正直何度も心が折れかけた。機械系の現地現物主義の頭の悪い筆者にとって、インターネットやプログラムなんて利用はするものの全く仕組みを知らなかったからである。

 最初はAPIという用語をそもそも知らず、何かの記事でAPIという単語を知りグーグル先生に聞いてAPIの意味を理解し、これはデータ解析に使えそうだということで勉強を始めてみた。何から手を付ければいいのかさっぱりだったが、グーグル大先生に聞きながらインターネットとブラウザの仕組みを勉強し、そこからようやくプログラミングについて勉強していく・・・というような流れで進めていった。言語は機械学習に興味があったのもありpythonを選択してみたが、pythonによるプログラミングの開発環境を整えるところから筆者にとっては意味不明の連続で、一人でPCに切れまくる日々だった。中でも、smashggのAPIで採用されている問い合わせ言語のGraphQLについては、新しめの言語らしくてグーグル先生に聞いても全然情報が出てこなくて一番骨が折れた。適当にいろいろ試してみていったらなんかできて、なんとなくデータは自由にとり出せるようにはなったが、いまだにAPI、GraphQLの本質はたぶん理解できていない(一番よくないやつ)。

 それでも何とかなったのはひとえにある程度英語を勉強していたからだと思う。プログラミングに関するネットに転がっている情報は英語のほうが圧倒的に多く質も高い印象を受けた。プログラミング言語自体ももちろん英語が基礎となっているので、英語がある程度わかるのは正直必須な気がする。あとは基礎的な数学も大事だと感じた。ループや条件分岐を考える際にある程度の線形代数や論理学の知識があると全然違うと思う。あとはググる力が超重要。もしかしたらこれが結論かもしれない。

検索サイトのイラスト

 この記事を読んでる学生の人、プログラミングの分野に限らずまだまだ英語や数学が大事な時代が続くと思うので頑張って勉強してください。APIでのデータの引き出し方についてももう少し知識を深めてから記事にできたらと思っています。それではさようなら。

 

コメント