【FortniteTools】大会運営の現場から生まれた集計ツールの裏側

このお話は、 フォートナイト解析ツール「Fortnite Replay Analyzer」が 作成されるまでの過程をまとめたドキュメンタリーです。 ▶ Fortnite Replay Analyzer(公式サイト) https://fn.yuyutti.com/replayanalyzer↗
フォートナイトの大会やイベント運営において、 スコア集計は避けて通れない重要な作業です。 順位、キル数、ポイント計算。 結果は大会終了後、できるだけ早く、かつ正確に出さなければなりません。 しかしその一方で、 多くの大会では今もなお、運営が手作業で集計を行っているのが実情ではないでしょうか。
大会運営における「集計」というポジション
僕自身、ECS-eSportsの運営に関わり、 約3年前から大会・イベントのスコア集計を担当してきました。 集計担当は、
- 結果を即時に出す必要がある
- 数値ミスが許されない
- ルールごとに計算方法が異なる
という、即時性と正確性の両方が求められる最も難易度の高いポジションです。 特に大会終了直後は時間に追われ、 手作業で急いで集計を行うと、どうしても転記ミスや計算ミスが発生しやすくなります。
リプレイファイルに着目した理由
そんな中で着目したのが、 フォートナイトのリプレイファイルでした。 リプレイファイルには、
- 各プレイヤー・チームの順位
- キル数
- マッチの詳細情報
など、集計に必要な情報がすべて含まれています。 「この情報を使えば、人が計算する必要がなくなるのではないか」 そう考え、 まずは自分専用の集計プログラムを1から作成しました。
最初の自作集計プログラム
最初に作ったプログラムは
- リプレイファイルを読み込む
- 順位やキル数を解析する
- スコアを計算し、順位表を画像として出力する
という、かなりシンプルなものでした。 それでも実際の大会運営では十分に役立ち、 約1年半にわたってイベントのたびに修正を加えながら運用していました。
見えてきた大きな欠点
しかし、運用を続ける中で明確な問題が出てきます。
- イベントごとにルールが変わる
- デュオ・トリオ・スクワッドなどチーム構成が変わる
- そのたびにプログラムを修正する必要がある
つまり、 イベントごとに開発コストが発生する状態でした。 これを毎回続けるのは、 正直なところコストパフォーマンスが非常に悪い。
ライブラリ化という選択
そこで次に行ったのが、 解析・計算処理をライブラリとして切り出すという選択です。
- 解析処理を1つの完成されたスクリプト群としてまとめる
- npmを通じて公開し、誰でも使える形にする
- イベントごとに必要な処理を組み合わせて利用する
この形に変えたことで、 毎回ゼロから作り直す必要はなくなり、 開発コストを大きく抑えることができました。 ▶ NPMパッケージ「fortnite-replay-analysis」 https://www.npmjs.com/package/fortnite-replay-analysis↗
新たに生まれた「属人化」というリスク
しかし、ここで新たな問題が発生します。 それは、 集計ができるのが自分一人だけになってしまったという点です。
- 自分が不在だと集計できない
- 有事の際に対応できない
- 責任とリスクが一人に集中する
これは運営としても、 個人としても、決して健全な状態ではありません。
誰でも使える集計ツールを目指して
そこで最終的に求めた答えが、 プログラミングが分からなくても PC操作が苦手でも 誰でも同じように集計できるツール でした。
リプレイファイルをアップロードするだけで、 解析・スコア計算・順位表出力まで行える。 その思想を形にしたのが、 Fortnite Replay Analyzerです。
実運営に耐えられるレベルへ
fn.yuyutti.com↗ の開発を始めてから、 約1ヶ月で実際の大会運営に耐えられるレベルまで成長しました。 これにより、
- 属人化の解消
- 作業時間の短縮
- ミスの削減
これらを同時に実現できたことで、 大会運営全体の負担を大きく軽減することができました。
おわりに
このツールは、 「便利そうだから作った」ものではありません。 実際の大会運営の現場で困り、悩み、試行錯誤した結果として生まれたツールです。 同じように大会運営で集計に悩んでいる方の助けになれば、 これ以上嬉しいことはありません。
ゆゆっち
プログラミングやサーバー構築といった技術系の記事を中心に、
ジャンルを横断して楽しめるブログを目指しています。