1000人規模スマブラ大会のシード決めを支える技術

2019年5月1日から二日間、蒲田の大田区産業プラザPiOにて参加者1024人の大乱闘スマッシュブラザーズ SPECIAL(以下スマブラSP)の大会、ウメブラJapan Majorが開かれました。

私はスタッフとして主にトーナメント作りを担当しました。今回はシード決めの細かいロジックではなく、あくまでその下準備のお話です。

シード決めって何

シードは、強い人同士がなるべくトーナメント序盤で当たるのを避けるために決めます。例えば、大会中で1番強い(とされる)人と2番目に強い人(とされる)はは決勝戦まで当たらないような配置がされます。細かい話をすると、同じ場所から来た遠征勢同士を当てないようにする配置等も考えたりもしますが、簡単に言えばプレイヤーを「強い順」に並べる作業になります。

シード順が決まれば、あとはその順番に従ってトーナメントにプレイヤーを配置していきます。配置に関してはchallongeやsmashggと言ったトーナメントアプリケーションが自動でうまい具合やってくれるので、トーナメントオーガナイザーはシード順を決めてトナメアプリに打ち込むまでが仕事です。

今回は参加者1000人でしたが、実際には全員分のシードを厳密に決めるわけではありません。今回のウメブラでは、1日目が8人ずつ128グループから総当たり形式でそれぞれ2人通過の予選、2日目が256人のダブルエリミネーションの本戦という形式だったため、256人分のシードを決めて、残りはランダムに配置しました。256人というと総参加者の4分の1のシードを決めることになり、これはウメブラのような誰でも参加できるオープントーナメントとしてはかなり多い部類だと思います。

強い順に並べるって何

プレイヤーの強さは、過去の大会結果を見て判断します。そこでまず大会結果のデータが必要です。

そして、それを1000人分集めて強い順に並べる必要があるので、手作業でやるのは現実的ではありませんし、そもそも過去の大会結果のデータベース的なものが必要です。

戦績データベース Smash Record

Smash RecordというWebサイト自体はとてもシンプルで「プレイヤー名を検索すると、そのプレイヤーの戦績等を表示する」というもので、私が3年ほど前に作りました。作った当時は特に使いみちを考えてなかったのでただ戦績を眺めるサイトでしたが、今ではシード決めやプレイヤーランキングを作るのに欠かせない存在となっています。サイトデザインはまぁまぁ残念ですが、バックにあるデータベースと、データをchallongeやsmash.ggから収集するためのツール郡は結構充実しています。実際にシード決めに使用するのはこのサイトではなく、その裏にある(MySQLの)データベースにあるデータを直接利用するプログラムを別に用意します。このプログラムによってプレイヤー名から過去の大会結果を結びつけます。

ただ、データベースとプログラムがあってもプレイヤー名から戦績を結びつけるのはそう簡単ではありません。問題は大きく分けて「表記ゆれ」と「同姓同名」の2つに分けられます。

表記ゆれ

表記ゆれは、同じプレイヤーなのに表記が違ったり、そもそも全然違う名前だったりするパターンのことを言います。例えば格ゲーのウメハラ選手であれば「ウメハラ」「梅原大吾」「Daigo "The Beast"」などいろいろな表記があります。これらの表記ゆれを正しく扱わないと、シードを与えるべきプレイヤーにシードが与えられなくなってしまいます。

Smash Recordには一人のプレイヤーに対して「過去に出場した大会でのエントリー名」がすべて保存されているため、その表記ゆれが「既知の表記ゆれ」であれば対応できます。ウメハラ選手であれば「ウメハラ、梅原大吾、Daigo "The Beast"は全て同じウメハラ選手を指す」という情報が入っていれば、これらの表記ゆれには対応できます。一方で、既知でない表記ゆれ、たとえばウメハラ選手がいきなり「 Daigo★Umehara」みたいな名前で申請してこられると、Smash Record内にデータが無いのでプログラムでは検知できず、初参加のプレイヤーだと処理されます。このようなプレイヤー名と戦績との関連付けが漏れるケースは、後述する手作業による結びつけで対応されます。

同姓同名

これは、Daigoという名前のプレイヤーがウメハラ選手以外にもいたらどうしよう、という問題です。例えば、ウメハラ選手でない同姓同名の「Daigo」というプレイヤーをウメハラ選手だと勘違いして高いシードを与えてしまう可能性があります。これも、表記ゆれと同じく「既知の同姓同名」だったらなんとか処理できますが、未知の同姓同名プレイヤーだと対処が難しいです。

この同姓同名問題は、人口が比較的少なかった前作のスマブラ4時代はあまり問題ではありませんでしたが、スマブラSP発売を機にプレイ人口がかなり増えてきたため、ちょっと対応しきれない状態にあります。

最後の防衛線 手作業

以上の2つの問題のせいで、プログラムによる処理ではエントリーしたプレイヤーとDBにある戦績とを完全に結びつけることが難しいことがわかりました。表記ゆれや同姓同名問題に対しては、最後は手作業で解消していくことになります。今回のウメブラであれば1000人の中から「 Daigo★Umehara」みたいな表記ゆれが無いかとか、エントリーしてる「Daigo」さんが本当にウメハラ選手なのかを手作業でチェックしていきます。この作業は私以外のスタッフにもやってもらっていますが、手作業なのでどうしてもミスを0にするのは難しい状況です。とはいえ、シード上位の強豪プレイヤーについてには全くと言っていいほどミスがない状況です。

【smashgg使えば表記ゆれも同姓同名も問題にならないのでは?】
smash.ggでは、各プレイヤーにidが振られているので、募集段階からsmash.ggを使えば上にあげた問題の一部は解決されますが、すべて解決されるわけではありません。例えば、他のスマブラ大会でsmash.ggが使われていなかった場合には、smash.ggでのデータとsmash.gg以外でのデータを結びつける段階で何らかの手作業が必要になります。結局のところウメブラ以外の全スマブラ大会がsmash.ggに移行しない限りは手作業をなくすのは難しそうです。それとsmash.ggはトーナメント進行ツールとしては優秀なのですが、イベント管理ツールとして見ると、申請キャンセル機能が無いなど、痒いところに手が届かないツールなため、なかなか全ての大会での導入が難しいというのが現状です。

終わりに

さて、表記揺れや同姓同名の処理が終わって、プレイヤーと過去の戦績が結びついたところでようやく"下準備"が完了します。ここから過去の戦績を基にして強い順に並べたり同じ地方からの遠征者同士が当たらないように工夫しながらトーナメントを作っていく作業に移りますが、ここでは解説しません。

私はスマブラ界隈でしかアクティブに活動していないので、他の界隈(ゲームに限らず)ではこうやってシード決めをしてるよ、みたいながあれば教えてもらえると嬉しいです。ストリートファイターに関しては、瀬戸風味さんのこちらのブログがめちゃくちゃ参考になりました。

最後に、他のウメブラスタッフが書いたオフレポートを載せて終わります。


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