見出し画像

制作秘話ってほどでもないデイリースマメイトのあれこれ

2024年7月19日に「デイリースマメイト」というサービスを公開しました。

RTしてくれた方はありがとうございます。まだしてない方は今してください。

制作秘話ってほどでもないでもないですが、作るきっかけとか工夫した点などを書いていきます。

オフラインからオンラインへ

元々私は「プレイヤーの強さ」に関して考えるのが好きで、今までもオフライン大会の戦績を見ることができるサイト(Smash Record Archive)を作ったり、スマブラの日本ランキング(Japan Power Rankings)を作ったりしていました。2020年のコロナをきっかけにこうした活動をやめてスマブラ界隈を遠くから眺める存在になっていたのですが、2024年1月ごろにふと思い立ってゆるめに活動を再開しました。

私の主な興味はオフラインの競技シーンですが、私は熱心に活動していた2016年から2019年ごろに比べて、スマブラ界隈にいる人数や成熟度もあがり、戦績サイトやランキングも複数ありすでにレッドオーシャンといった雰囲気で、興味はあったもののまたここに飛び込もうとは思えませんでした(特に昔作ったランキングがわりと上手く行ったこともあり、晩節を汚したくないという思いも)。

しかし、オンライン対戦に関して言えばまだ戦績サイトなどは多くなく、ここを掘ればなにか見つかるかもという思いからオンライン対戦、その中でも世界戦闘力等に比べてデータが集めやすくレベルも高いスマメイトに注目しました。その第一弾が4月に投稿したこちらのTop20推移動画で、上々の反応でした。時系列で比較するのは我ながら新しい切り口だったと思います。あと単純に見ていて楽しい。

コンセプトは「レートだけでなく順位も」

スマメイトは言うまでもなく素晴らしいサイトで、スマメイトがなければ現在世界最強プレイヤーであるあcolaさんもミーヤーさんも、スマ4時代に遡ればKENさんも生まれていなかったであろうまさにゲームチェンジャー的な超ド級のモンスターウェブサイトです。ただデータの集計やビジュアライズにはそこまで力を入れていないようだったので、とりあえず集められるデータを集めながら切り口を考えていました。

私はあまり他の対戦ゲームはあまりやらないのですが、ちょうどその頃ストリートファイター6やポケモンなどが流行っており、Xに流れてくる他のゲームのプレイヤー達のポストと、スマブラーがするスマメイトに関するポストを比較しながら色々考えていました。そこで「スト6とポケモンでは順位が気にされるが、スマメイトではレートだけが気にされる」ということに気づきました。

これはなぜかと言うと、ゲーム(サイト)側がプレイヤーに見せている情報に由来すると考えています。例えば、スト6ではレート(MR)と順位が両方とも表示されるUIになっており、ポケモンではレートよりも主に順位が表示されるようになっています。

一方スマメイトのユーザーページでは、レートだけが表示され、順位は表示されません。

スマメイトではユーザーページに順位は表示されず、順位があまり気にされない

順位を確認するには、スマメイトのトップページかランキングページにアクセスするしかなく、また順位は上位200人までしか表示されません。そのためスマメイトでは、レートに比べて順位は二の次的な存在になっています。(スマメイトの全体データが載っているページにアクセスすればおおよその順位は分かりますが、自分で計算しなければならないのであまり話題にされません)。

プレイヤーページに順位を表示する機能は、2019年に追加されたものの、2023年に削除されたようです。なぜこういう仕様になっているかは制作者本人に聞くしかありませんが、順位の計算はレートと比べて計算コストが高く扱いづらいのでこうなっているのだと予想しています。

そのためスマメイトの世界では、レート2000などのキリのいい数字は目標にされ、達成した時は他のゲームと同様にスクリーンショットとともにXに投稿されがちですが、レート2000が実際のところ何番目に強いかはほとんど誰もわかっていないのです。

「プレイヤーの強さ」を語るうえで重要なのはレートよりも順位(何番目に強いか)だと考えています。例えばスマメイトを全く知らない人に「私のレートは2000です」と言ってもほとんど何も伝わりませんが、「18000人中350位くらいなので上位2%くらい」や「マリオ使いの中では5位くらい」と言ったほうがはるかに分かりやすいです。

この観察から、「レートだけでなく順位も」という方向性が定まり、上位200人だけでなく全員が自分の順位が分かるようなウェブサイトを作ることを目標にしました。サイト訪問者がまず見ることとなるトップページの一番分かりやすいところにレートと順位の換算表を置いたのはそのためです(と言いつつこの機能はリリース1週間前くらいに思いついたのですが)。また、順位だけでなく「何人中」という情報も併記することで、自分の相対的な位置がわかるようにし、レート2000という称号をぼんやりとした「強者の証」ではなく、何人中何番目に強いかをハッキリさせることを目的としています。

レートと順位の換算表をトップページの一等地にデカデカと表示

「映え」要素

「レートだけでなく順位も」というコンセプトは定まりましたが、これだけでは情報として味気なさすぎるので、ぱっと見て「おっ」となる要素を考えることにしました。

初めは単純に対戦戦績と相手のレートや使用キャラをスプレッドシートのようにざーっと表示するような仕様を考えました。そのうえで、例えば「対マリオだけ表示」や「対ミーヤーだけ表示」などの機能を追加すればそれだけでも十分おもしろいサイトになるかなと思いました(実際この機能はいつか追加するかも知れません)。

しかしこの仕様では圧倒的に「映え」が足りないなと思いました。アナリストやデータオタクは喜ぶかも知れませんが、一般のプレイヤーが単なる戦績の羅列をスクショしてXに共有する姿は想像できません。そこで戦績をいい感じにビジュアライズすることを考えました。具体的には、エクセルのグラフ機能を眺めたり、野球やテニスなど他の業界のデータサイトを見て回りました。そこで思いついたのが「レート別対戦戦績」でした。これはかなり「映える」と思いました。

勝率を対戦相手のレートごとに分類して表示。バーをクリックすれば、実際に誰に勝って誰に負けたかもみることができる

ちなみにこの見せ方を思いついたのは、競技プログラミング(AtCoder)における統計情報を表示しているAtCoder Problemsというサイトの「問題難易度別回答率」を見ていたときでした。
 https://kenkoooo.com/atcoder/#/user/chokudai?userPageTab=Difficulty+Pies

もう1つの映え要素が「日別対戦数」です。こちらはGitHubというサイトのコントリビューション(ざっくり言えば「各日にどれだけプログラミング関連の活動をしたか」を表示する機能)を見て思いつきました(上記のAtCoder Problemsにもあります)。スマメイト上には各対戦の正確なタイムスタンプ情報がないため実装はちょっと苦労したのですが、スマメイトのプレイした日が緑に染まっていくのはプレイヤーのモチベーションアップにもつながると思い、ひと工夫して実装しました。

どの日にどのくらいプレイしたかをビジュアライズ。「対戦数を表示」を押せば何試合やったかも表示可能

他にも実装したい機能はありましたが、「レートだけでなく順位も」と「映え」の2つが揃ったタイミングでリリースしました。

その他

その他です。

対戦回数ランキング

トップページには、プレイヤーランキングよりも見やすいところに「対戦回数ランキング」を表示しました。これは、対戦数が多いプレイヤーを表示することで、他のプレイヤーのモチベーション増加を狙っています。

ファイターの統計は後回し

ファイターの統計情報は結構需要があるのですが、デイリースマメイトではまずプレイヤーにフォーカスすることに決めました。いかんせん90体近くいるので見せ方が難しく、いいアイディアが思いついていません。そもそもスマメイトの仕様上、ファイターに関する情報を1試合単位で正確に把握することができないこともあり、躊躇しています。

リアルタイム更新

データの更新に関しては、シーズン終わりにまとめて更新されるのではなく、なるべくリアルタイムで更新することを目標としています。ただ、スマメイトに直接アクセスしてデータを収集しており、スマメイトサーバーに負荷がかからないようアクセス数を抑えながら更新することになるので、必然的にデータに遅れが生じることになります。

デイリースマメイトという名前

サイト名はいつも悩みの種です。「スマメイト」を入れるのは確定しており、いろいろな案がありましたが、具体的に言ってしまうと将来似たようなウェブサイトをつくる人の選択肢を奪うことになるので秘密にしておきます。悩んだ末に、「このサイトを見てモチベーションを上げて、毎日のようにスマメイトに打ち込んで欲しい」という思いからデイリースマメイトにしました。

もしデイリースマメイトの昨日が本家スマメイトに取り込まれたとしたら

これは超大歓迎です。その代わりもしそうなったら「あの機能最初に考えたの俺なんすよw」とか言って自慢だけはします。

サーバー代

世界のテクノロジーの進歩と、私自身の技術力の向上のおかげで、ドメイン代以外はほぼ無料で済んでいます(具体的にはVercel, Supabase, AWSの無料枠で賄っています)。ありがたや。その代わり、データベースの容量があまりないので、2シーズン分のデータしか保持できません。今もシーズン27の詳細な戦績は見れませんし、シーズン29が終わったら今見れているシーズン28の詳細戦績は見れなくなります(dropboxかどこかにバックアップします)。まぁ古い情報はあまり需要がないので今のところ問題ないと思っています。

リツイート/いいね数

(正直もっと伸びると思ってた)

終わりに

みんなつかってね


この記事が気に入ったらサポートをしてみませんか?