ランキングバトル運営の負荷削減を試みたお話
■初めに、このお話について
週一回Web上で行われているとあるゲームのランキングバトル運営話です。
簡単に言うと「あの頃は大変じゃった・・・」みたいなお爺ちゃんの戯言レベルのお話になります。
それでもいいよというお方のみ読み進めてくださいな
■自己紹介
お前誰やねん、というのもあると思うので軽く自己紹介。
ランキングバトルが行われているdiscordサーバー運営陣の一人、主に裏方仕事(大会の進行管理、ランキングバトル結果集計、Bot作成/導入等)をやらせてもらってます。
■ランキングバトルを実施してるゲームについて
・東方非想天則というゲーム
東方非想天則(通称:天則)という同人ゲームがあるんですよ。
プレイヤー同士が一対一で対戦して勝敗を競う、いわゆる対戦格闘型ゲームってやつです。
開発は黄昏フロンティアと上海アリス幻樂団、コミックマーケット76にて東方緋想天のアペンドディスク(今でいうところのDLCみたいなやつ)として頒布されました。
皆さん、コミックマーケット76がいつに開催されたかご存じですか?
答えは「2009年8月」です。
・・・はい、この東方非想天則は約14年も前に頒布されたゲームとなります。
SteamやEpic Games Store、DLsiteみたいな便利なサイトに登録なんてされていません。
物理媒体(CD)でしか流通していない、今では新品の入手は難しく中古で出回っているものを買うしかない前時代のゲームです。
・14年前に頒布された同人ゲームのオンラインランキングバトル
そんな東方非想天則というゲーム、この令和の時代にオンラインランキングバトルが毎週火曜日に開かれています。(下記はTwitterでの告知文)
(こんな感じで毎週Twitterで告知してる主催者のネクロマンサーVがいる)
これだけでもなかなか信じられないのに、このランキングバトル参加者が毎週結構な数集まってるんですよ、その数なんと30人以上!
PCでしかできない、入手難度もそれなりに高いゲームに毎週30人以上のプレイヤーが集まって勝敗を競っているわけです。今令和5年やぞ?なおランキングバトル用のdiscordサーバー参加者は500人を超えてる模様。
・ランキングバトル運営がとても大変
上にもちょっと書きましたが平成中期にでた同人ゲームのランキングバトルに毎週30人以上集まってるわけですよ。
ぶっちゃけると、まぁ運営が大変なのです。
(常に人が集まること自体はいいことなのでうれしい悲鳴ってやつですね)
ここでざっくりとランキングバトルの流れを書くと
discord上で参加者を募る(前日~当日の開始30分前くらいまで)
集まった参加者をchallonge側のトーナメントに参加させる(運営側で登録)
ランキングバトル開始前に点呼
生放送しつつランキングバトル開始
勝利者に勝利報告をしてもらって運営側でchallongeのトーナメント表を更新
とこんな感じ。
参加者が多ければ多いほど運営は忙しいですし、これを毎週やるってのも大変です。
なので、なるべく運営の負荷を減らしましょうということで、色々やりました。(実際、自分も運営をやるのでその時に楽したいという気持ちもあった)
■ランキングバトル運営の負荷を減らすためにやったこと
じゃあ、運営の負荷を減らすために具体的に何をやったかというお話。
参加者が多くなるに比例して負荷が大きくなりやすいのは大きく分けて3つ
トーナメント表作成
点呼
勝利報告をトーナメント表へ反映
この3つについて、before/afterを順番に書いていくとしましょう。
・トーナメント表作成の過去
まずはトーナメント表作成から。
トーナメント表の作成に必要な情報はなにか?
はい、参加者一覧ですね。
毎週毎週、discord上で参加者を募っているというのは先述の通り。
で、その集め方というのが募集文を打ってそれにリアクションをつけてもらうという方式です。
ここから参加可能のリアクションをつけた人を抽出します。
で、この参加者一覧をトーナメント表作成サービス(challonge)を利用してトーナメント表を作成します。
その参加者入力画面がこんな感じ
複数人追加できるならリアクション者一覧をコピペでよくない?
と思った方、正しいです。
正しいのですがここでdiscordの仕様が立ちふさがります。
さっきのリアクション者一覧をテキストエディタにコピペしたのがこちら
・・・なんかくっついてますね。
そのままコピペしようとすると余分なものがくっついてくるので、余分な箇所を消すという作業が発生します。
これを30人分やるとかちょっと考えたくないですね。
一行ずつコピペする、手で直接入力するってのもできますがやっぱり30人分やるとなると大変です。
・トーナメント表作成の現在
というわけで、余分な箇所を消さずにコピペでトーナメント表を作れるようにしたわけです。
そこで導入したのがアンケート作成BotであるQuick Poll(このBotは作ったやつではなく、既製品です)
そのままだと昔と変わりませんが、重要なのがQuick Pollにcsv出力機能がついているという点
一番左の列にUserIDが並ぶのでこれをコピペするだけでchallongeの参加者として追加できます。(最近IDを変更した人は末尾が#0になる仕様)
ランキングバトル結果集計の仕様上、表示名が簡単に変更できるサーバープロフィール名でなく、IDで取得できるというのもポイント。
(IDだと若干対戦相手がわかりづらいという問題もありますが……)
・点呼の過去
次にランキングバトル開始前の点呼について
大会参加者がいることを確認するために点呼をします。
やり方は下記の通り
運営が点呼開始アナウンス
参加者がいることをチャットで表明
参加者が全員いることが確認出来たら運営でアナウンス
30人以上いる参加者から五月雨に表明が来るので、確認がとても大変です。
チャットが流れるのがとにかく早いんだ
・点呼の現在
人間がやるのに時間がかかるならBotにやってもらえばいいじゃない。
というわけで、Botに点呼を変わりにやってもらうことにしました。(このWinnerReportBotはお手製)
運営が五月雨に飛んでくるチャットを捌かなくてよくなりましたし、いない人が誰かを把握する必要もなくなりました。
揃った時点でBotが通知してくれるので、運営としては点呼開始をBotに伝えるだけでよくなりました。楽ですね。
(リアクション数でなくリアクション者で把握させているので、非参加者がリアクションしても大丈夫なつくりにしてます)
・勝利報告反映の過去
最後は勝利報告のchallongeへの反映です。
WinnerReportBotを作成した最大の理由でもあります。
昔やってた勝利報告はこんな感じ
この勝利報告を受けた運営がchallongeのトーナメント表を更新しに行くわけですね。
運営が判断しなければならない内容は下記の通り
勝利報告がトーナメント表上のどこに該当するか
報告がもれなく反映されているかどうか
更新内容が報告内容と一致しているか
これを16人前後から五月雨に飛んでくるチャットを見ながらやらなければならないわけです。
特にトーナメント表上はDiscordのUserIDで表記されているので、どこの勝利報告か探すのも一苦労・・・(これに関しては完全に結果集計を楽にした弊害です。ほんと申し訳ない)
・勝利報告反映の現在
WinnerReportBotが全部やるようになりました。
勝利者はWinnerReportBotへメンションを飛ばすだけでOKとしました。
これにより運営としてはWinnerReportBotのchallonge更新が正しいかどうかを見るだけでよくなりました。(念のためってやつです。)
手でスコア入力等をやらなくなるだけで相当楽になりました。
■終わりに
定例対戦会(トーナメントではなく適当に集まってフリープレイしていた時代)の開始から約11か月間経ってます。
※アーカイブ上では2022/9/6に定例会雑談Chが作成されていました。
正直、当初はこんなに人が集まるとも長続きするとも思っていませんでした。(とても失礼ではありますが、定例会とかは小規模な状態が結構続いていたので・・・)
ここまで大規模に成長かつ長続きしたのは、偏に定例会以外にも初心者向け大会や対抗戦、2on2大会を主催している鯰川なまかわねむさんや、それを支えている運営陣、常日頃からイベントに参加して盛り上げてくれている参加者の皆さんがあってこそだと思います。
(もちろんイベントがない日でも遊んでくれてる皆さんにも感謝を)
この勢いがなるべく続くといいなぁと思いつつ、最後に一言
「お前もランキングバトル運営をやらないか?」
長々とありがとうございました!
■おまけ:ランバト参加者推移
本筋から外れるのでおまけとして記載
ランキングバトルは2023年3月から始まりました。各月/週の参加者は下記の通り。(2023年7月分までのデータです)
・2023年03月 参加者37人
3月14日:37人
3月21日:33人
3月28日:33人
・2023年04月 参加者66人
4月4日:43人
4月11日:34人
4月18日:32人
4月25日:36人
・2023年05月 参加者63人
5月2日:24人
5月9日:35人
5月16日:40人
5月23日:31人
5月30日:29人
・2023年06月 参加者64人
6月6日:32人
6月13日:40人
6月20日:26人
6月27日:35人
・2023年07月 参加者65人
7月4日:40人
7月11日:33人
7月18日:37人
7月25日:40人
表形式で書きたかった
こうやってみるとEVO Japanのトーナメントでのシード権がかかり始めた2023年4月から毎月60人が参加しているというすさまじい数値をたたきだしてますね。
EVO Japanが終わり徐々に下がり始めるかと思いきや、殆ど変わっていないという恐ろしさ
ランバトの前身である火曜定例トーナメントの参加人数から比べると実に2倍強の人が毎週参加していることになります。
大昔は対戦定例会の日以外は誰もいなくて閑散としていた、といっても信じられまいよ