Quantumleap
2097 words
10 minutes
Salmon Statsから見る上位ランカーは誰か

Salmon Stats#

サーモンランが一番うまい人は誰なのか、という話題は尽きることがない。

そして、誰が一番うまいかを決定するような素晴らしい評価アルゴリズムがあるとも思えない。何故ならサーモンランは運要素がガチマッチに比べて高く、対 CPU ゲームである以上プレイヤーがある程度上手ければ勝率を極めて 100%に近づけることが可能で、レーティングなどというような仕組みを使って実力を評価することができないからである。

が、目安としてどのような人が上手いか、という程度であれば判断できないこともない。

それにはサーモンランのレコードを約 170 万件保存している Salmon Stats を使う。

もちろん、Salmon Stats のレコード 170 万件全てを解析すれば正確に評価できるように思うが、それは全レコードを持っているというのが前提になってくる。

残念ながら Salmon Stats には全レコードを取得するような仕組みがない(あたりまえだ)ので、わかる範囲内で誰が上手いのかを調べる必要がある。

シフト記錄を使う#

そもそも Salmon Stats を運営し始めたのは、既存の Salmon Run Records に不可避の不具合があったためだ。

というのも、たとえばキンシャケ探しイベントでステージ記錄を狙おうとすればブキ編成の火力が必須になるし、ダイナモローラーがいない編成では記録更新は不可能だろう。

そのようにして、良い編成かつ良い WAVE を引いたという極めて運要素の強いアンタッチャブルレコードで記錄が埋め尽くされていき、更新が次第に困難になりプレイヤーのモチベーションの低下につながってしまうからだ。

そこで Salmon Stats ではシフトごとの記錄を取るようにし、その編成である程度の運を許容しつつ最も良い記録を出したプレイヤーを称えることとした。シフトの開催期間は限られているので、実力が多少劣っているプレイヤーあってもものすごく上手いプレイヤーが理想の WAVE を引けなければ十分勝てる可能性があるからだ。

シフト記錄一覧#

Salmon Stats では赤イクラ部門、金イクラ部門において各潮位・イベントの組み合わせ 16 通り+総合(夜込み)+総合(昼のみ)の記錄を集計している。

最高記録、しか保存されていないのは残念だが、つまり各シフトにおいて 18*2=36 の記錄が存在することになる。基本的には四人でプレイしているはずなので、1 シフトに掲載されるプレイヤー数は最大で 36 * 4=144 ということになる。

サーモンランのシフトは現在 914 回までシフトの内容が明らかになっているので最大で 914 * 144 = 131616 名のプレイヤーが名前を載せることが可能になる。

もちろん、初期のシフトについては Salmon Stats がデータを集計していないし、未来のシフトについては当然ながらデータが存在していない。

だが、調べたところ 500 シフト程度については有効なシフト記錄があることが判明した。

::: tip 有効なシフト記錄

Salmon Stats の初期運営時にはユーザが少ないため、シフト記錄の質が低く簡単に同一のプレイヤーが記錄を独占することができた。

そのため、今回の集計にあたってシフトでのバイト回数がある程度多いもののみを考えた。

:::

記錄を取得するコード#

Salmon Stats はスケジュール ID として UTC を採用しているので、タイムスタンプから変換してデータを取得する。

シフト記錄自体はhttps://salmon-stats-api.yuki.games/api/schedules/{SCHEDULE_ID}の API を叩けば取得できる。

こういうときに手っ取り早いのは Python なので Python を使ってデータを取得した。

すると全部で 59311 人のプレイヤーが登録されていることがわかった。

::: tip 人数について

サーモンランは四人で遊ぶプレイヤーのはずなので、59312 人にならなければおかしいのだが回線落ちなどで一人減ってしまったのだろうと考えられる。

:::

この中で何度もランキングに載っているプレイヤーが「上手い」かつ「上手いと認められて色んな上手い人と遊んでいる」と考えることができる。

今回は 100 回以上ランキングに載っているプレイヤーを紹介することにする。

抽出したプレイヤー#

{
  "a0720e1c8cecd9fc": 2841,
  "b47e1fd7a7e6feb5": 1498,
  "27b314952c00c7fa": 1451,
  "f97303bd80834670": 1425,
  "2da8bead36f8bdea": 916,
  "2e86f880e0fcdbcb": 882,
  "a6698b80745752ab": 856,
  "0a14e929a0661370": 841,
  "059045d2e7825876": 734,
  "001bfbec9b904a71": 715,
  "66ffbce054aa5291": 693,
  "4378ddb86f58882e": 639,
  "aae300eb7db4f6dd": 637,
  "6e8f72d75edd68fd": 627,
  "0dcabf1aa4e70f2e": 623,
  "5db950fcf6763803": 613,
  "635f96d0f8280edb": 503,
  "2f64b91c4ee5b9a4": 481,
  "3d647759d2e3b0ee": 472,
  "cde7ed3fa44ad577": 434,
  "93a486040cd7b375": 433,
  "a81dc4e527e9fc9f": 395,
  "3bf62ab1a934d7df": 366,
  "b2da7c8ca0e06fa7": 356,
  "788580029fe74552": 350,
  "d0952b1f1b4394c1": 347,
  "fd2c03a294d101cb": 343,
  "166e8815dd84dadb": 328,
  "e59e183bcf4a4e3d": 313,
  "ae570b2064d4b4b6": 310,
  "701f07f4f86556c0": 298,
  "55f850dd60952002": 298,
  "36cfe58828c00e79": 293,
  "a8eebf9c682d5c17": 292,
  "835dffa743851f8e": 290,
  "dd84b53a5864e26e": 275,
  "cd0ec93f60bdacf2": 270,
  "8b711d4fbffc31e7": 267,
  "daf36b6006b5dae8": 264,
  "d50a82bbc795da65": 247,
  "c2760ec31f3a186a": 238,
  "197bd49c4ad527a4": 235,
  "0fc55140cd215f52": 234,
  "c9b314aaf5114d31": 231,
  "ea3c59657f0cdd6e": 225,
  "739f4a9b8e4d5e30": 224,
  "24bd527b3136d069": 223,
  "66d3f6c5c1ce879d": 221,
  "4c2e448503020ad3": 198,
  "2325a6845a0e9963": 198,
  "250d09d5cc6c6819": 195,
  "52d5c2d24314842a": 194,
  "2da02f4acf9dccfe": 184,
  "5627919bb16897c4": 183,
  "4e217af8576c7364": 183,
  "7c331ba2fff80f9f": 179,
  "0368add775b43c83": 178,
  "759f8285abd07135": 176,
  "28e0c8f7df91f431": 174,
  "8ba9fb54040266bf": 173,
  "9a3f401b4da33746": 167,
  "19353ca34dffb164": 166,
  "6c50aaccb889d227": 162,
  "b2845a45750a76c8": 160,
  "d455dc3f1f32ce5d": 159,
  "23038a91b3db9351": 156,
  "26614a0c758671c3": 153,
  "aa4fef305a92d234": 148,
  "41693115c16005cf": 145,
  "0207ac94447f2565": 143,
  "2ef1128dbe97ac33": 127,
  "8693b36d8d6036c6": 124,
  "fffb476fad470432": 124,
  "efae74ec9920c457": 124,
  "747b37c7b2f790bf": 123,
  "42e37bcfdb386e21": 122,
  "991bf232e9a2eabc": 120,
  "c6548d3466789c00": 119,
  "ff05b28c6138a248": 119,
  "4ecbdbad3b5fce72": 118,
  "a773c9a9c4182410": 118,
  "0294ff3a62939a7a": 118,
  "f61adb7ca060ce99": 115,
  "c67874aa5417835f": 113,
  "ef41aa181c1d4a72": 112,
  "fca05b39f595c8a9": 110,
  "395ddabe666886ea": 109,
  "7764ee494afd786f": 107,
  "f9b041d34af86ad4": 105,
  "84f6e7c870465272": 104,
  "7bb2b331e766b198": 102,
  "175c732116e152af": 102,
  "96a6ed3f16adf315": 101,
  "d981afaa24f1febd": 100
}

するとこのような感じになった。

一位の方が二位にほぼダブルスコアをつけており、ぶっちぎりであることがわかる。

ここまで差がつくのは単に上手いだけではなく、相当遊んでいないと達成できないと思われる。まさに異次元の記録と言えるだろう。

で、このプレイヤー ID だけではさっぱりわからないので任天堂の謹製 API を使ってプレイヤー情報を取得することにした。

プレイヤー名を取得#

プレイヤー名を取得するにはhttps://app.splatoon2.nintendo.net/api/nickname_and_iconを GET すれば良い。

この API をコールするにはiksm_sessionが必要になるので予め取得しておくこと。同時に 300 人くらいまではデータを取得できるので、今回のケースであれば一回叩くだけで良い。

ランキング#

面倒だったのでプログラムで一気に作成しました。

赤イクラも金イクラも全部混ぜての集計になっています。また、API でアカウント情報が取得できなかったユーザについてはDELETED USERとして掲載しています。

どういう条件で取得できなくなるのかはよくわかっていません(フレンドコードを変えた、とか?)

順位プレイヤー名回数
1DELETED USER2841
2マー1498
3メリカ1451
4UNREGISTERED USER1425
5シミリー916
6ひよってるやついる?882
7Reön/なる856
8YU:TO841
9とんでますけど?734
10ねごねご715
11ヨハン693
12UNREGISTERED USER639
13UNREGISTERED USER637
14y627
151623
16や        ま613
17UNREGISTERED USER503
18UNREGISTERED USER481
19ANONYMOUS USER472
20Ricarnaldo434
21UNREGISTERED USER433
22UNREGISTERED USER395
23UNREGISTERED USER366
24UNREGISTERED USER356
25UNREGISTERED USER350
26SaMeet347
27DELETED USER343
28あまねし~328
29UNREGISTERED USER313
30ろみ310
31ju298
32γοοκιε298
33どしゃあ…293
34UNREGISTERED USER292
35ろりぽっぷおーちゃん290
36ちはる275
37みさか270
38Heartly267
39からん264
40UNREGISTERED USER247
41けんしろ238
42UNREGISTERED USER235
43にゃちょす234
44ANONYMOUS USER231
45O:CHAN225
46ナトリウム/Kuli224
47UNREGISTERED USER223
48HBee*ちゃんゆり221
49UNREGISTERED USER198
50hina_cks198
51きせん195
52うっきぃ ë194
53ー ー184
54UNREGISTERED USER183
55ばちばちのばちく183
56へんしんはやくしろ179
57UNREGISTERED USER178
58けんけん176
59UNREGISTERED USER174
60UNREGISTERED USER173
61さぽ167
62UNREGISTERED USER166
63バネヤマ162
64UNREGISTERED USER160
65Noa159
66えす156
67きよたか153
68UNREGISTERED USER148
69UNREGISTERED USER145
70UNREGISTERED USER143
71UNREGISTERED USER127
72ゆゆ/124
73UNREGISTERED USER124
74415124
75ふぶき123
76UNREGISTERED USER122
77ぷらむ120
78alkali119
79ちゃ119
80118
81あやねこ118
82さとう118
83y115
84UNREGISTERED USER113
85toru112
864<“110
87---109
88taw107
89105
90えむいーのはか104
91だてんし ☆ きいと102
92UNREGISTERED USER102
93UNREGISTERED USER101
94UNREGISTERED USER100

::: warning 順位について

めんどかったので同率の場合は単にソート順で順位付けされてます。どっちかを贔屓してるとかではないのでお気になさらず。

匿名希望の場合は連絡ください。

:::

ここに載っているならちょっぴり自信を持ってもいいかも知れません。

記事は以上。

Salmon Statsから見る上位ランカーは誰か
https://fuwari.vercel.app/posts/2021/09/salmonstatsrank/
Author
tkgling
Published at
2021-09-30