Jak式スマブラオフ大会シード調整ツール(JSAT)の使い方

※2026/3/4更新

これなんですか?

大会運営者向けのJak式スマブラオフ大会シード調整ツール(JSAT)です。ランキングのような順番づけだけでシーディングを行うと、いつも同じ対戦相手になってしまう場合がある問題があります。それを回避するためのツールです。ある程度シードの順番を維持しながらあまり対戦したことのない選手同士が当たるようにシードを調整します。

なんでこれが必要なんですか?

複数の大会で同じ対戦相手になってしまうことは良くないと私が考えているからです。

まず体験として同じプレイヤーと対戦し続けるのは楽しくありません。せっかく80以上のファイターがいるので色んなファイターと大会で当たったほうが楽しいと考える人が多いはずです。特に遠征などコストを払ったうえで同じプレイヤーと対戦することになるのは体験として良くありません。

次に競技として同じプレイヤーに負け続けることで順位が低くなり不当に評価が低くなる可能性があります。これを防ぐために基本的に多くのプレイヤーと対戦して実力を照明すべきです。スマブラのコミュニティ競技シーンにおいて、強さを定義づけるならば私は「誰と戦っても勝つことのできる力」と考えているため、より多様なプレイヤーと対戦していることは重要です。

これらの意見に賛同いただける大会運営者はこのツールを使うメリットがあります。

かなり複雑なシステムなので質問があればなんでもXの@jak_ssbuまでお願いします。私も説明が分かりづらいと感じているのでコミュニケーションによって説明をブラッシュアップしたいので大歓迎です。

使い方

JJPRシードツールも組み合わせた方法を記載します。

シードツールを使いたくない場合の手順もお伝えしますが、都合上、一度JJPRシードツールを動かしていただく必要があります。

StartggのAPI Key取得

JJPRシードツールのときと同じです。こちらの記事(参考記事:

JJPRシードツールの使い方 - jak_amano’s diary)をご参考ください。

スプレッドシートの用意

空のGoogleスプレッドシートを用意してください。右上の「共有」ボタンから一般的なアクセスをリンクを知っている全員が閲覧者になるようにしておいてください。

元となるシードcsvデータの流し込み

Startggの運営者管理画面「Pools & Seeding」ページの右上から「Export Results」でcsvをダウンロードしてください。ダウンロードしたcsvをGoogleスプレッドシートに新しいシートとして挿入してください(デフォルトでスプレッドシートを新規作成するになっているはずなので注意してください)。
また「テキストを数値、日付、数式に変換する」のチェックボックスもオフにしてください。

 

元となるJJPRのcsvデータの流し込み

JJPRから「csv出力」ボタンを押してcsvをダウンロードしてください。


ダウンロードしたcsvをGoogleスプレッドシートに「テキストを数値、日付、数式に変換する」のチェックボックスをオフにして新しいシートとして挿入してください(上と同じ)。

Colabの準備と実行

専用の画面とか作っていないのでちょっと使いづらいですがついてきてください*1

利用するColabは複数あります。まず共通で設定すべきシークレット値(環境変数として用いる値)の説明を行い、その後に実行すべきColabを1つずつお伝えします。

各種シークレット値(環境変数値)の説明

先にColabに設定すべきシークレット値の解説をします*2。説明を読むのが面倒な場合は以下の例のとおり設定していただければ一旦ある程度うまくは動くはずです。

※スプレッドシート名などを入力する際にコピペで行い入力ミスを避けてください。ワークシート名は右クリックの「名前を変更」状態にしてからだとコピーできます。

  • SPREADSHEET_URL:スプレッドシートのURL
    • 上でご作成いただいたスプレッドシートのURLを入力してください。

  • SEED_INPUT_WORKSHEET_NAME:シード元データのワークシート名
    • 上の手順でStartggの運営者管理画面「Pools & Seeding」ページからダウンロードcsvをスプレッドシートに読み込みました。そのワークシート名を設定してください。
  • JJPR_INPUT_WORKSHEET_NAME:JJPRデータのワークシート名
    • 上の手順でJJPRからダウンロードしたcsvをスプレッドシートに読み込みました。そのワークシート名を設定してください。
  • ADJUSTER_INPUT_WORKSHEET_NAME:作業用ワークシート名
    • 作業途中でSEED_INPUT_WORKSHEET_NAMEをJJPRの高い順に並び替えられたワークシートが「Sorted User Data」という名前で自動作成されます。JJPR順で問題ない場合はここの値には「Sorted User Data」をそのまま設定してください。JJPRからシード順を調整した場合はその調整後のワークシート名を設定してください。
  • STARTGG_TOKEN:StartggのAPI Key
    • 上の手順で取得したStartggのAPI Keyを設定してください。
  • REF_DATE:このシステムが動作するときの参照日時
    • シード調整ツールは期間が空けば空くほど再戦を許容するようになります。事前にシードを作成する場合でも、できるだけ大会当日に近い日に合わせてスコアを計算したほうがよいです。そのため、いつを基準としてスコアを計算するかの基準日です。日時(基本的には大会当日)をyyyy-MM-dd形式(例:2025-11-01)で設定してください。
  • FIXED_SEED_NUM:シードを固定するシード位置
    • このシステムでは上位シード選手ほど調整を許容する幅が狭いため、上位シードでうまく対戦相手が調整されない場合があります。その対策として上位シードを固定化します。例えばシード16までの選手を入力どおりに固定する場合は16にします。
  • CONDITIONAL_LEAST_NUM_ENTRANTS:特定のシードにおいて無視する大会規模の人数
    • デフォルト挙動では平日大会などでよく当たっているだけのケースも考慮されます。シードが高い選手については同地域に苦手なプレイヤーがいても平日大会で対戦していると避けられてしまうという問題があります。シードが高い場合は規模の小さな大会での対戦有無は無視したほうがよいため、その大会参加人数を何人とするかという値です。
  • APPLY_CONDITIONAL_LEAST_NUM_ENTRANTS_SEED_NUM:特定の人数以下の大会を無視するシード位置
    • 上の大会参加人数考慮をシード何位の選手まで行うかという値です。例えばシード128の選手まで平日大会などを無視したい場合は128と入力します(一人も考慮しなくてよい場合はFIXED_SEED_NUM と同じ値にしてください)。
  • SEARCH_BREADTH_MULTIPLIER:シード調整幅倍率
    • このシステムではシードが低い位置ほど対戦相手を調整するためにシード値を調整する幅が広がります。ただし小規模大会(特に平日大会)とそれ以外の大会ではどれほどシード値を動かしていいかが異なるため大幅に動かしたい場合にこの値を大きな値にすることで対応できます。
各種シークレット値(環境変数値)の参考値例(休日大会・中大規模大会の場合)
  • SPREADSHEET_URL:スプレッドシートのURL
    • 上でご作成いただいたスプレッドシートのURL
  • SEED_INPUT_WORKSHEET_NAME:シード元データのワークシート名
    • 「Pools & Seeding」ページからダウンロードしたcsvのワークシート名
  • JJPR_INPUT_WORKSHEET_NAME:JJPRデータのワークシート名
    • JJPRからダウンロードしたcsvのワークシート名(JJPR_yyyyMMdd)
  • ADJUSTER_INPUT_WORKSHEET_NAME:作業用ワークシート名
    • 「Sorted User Data」
  • STARTGG_TOKEN:StartggのAPI Key
    • 上の手順で取得したStartggのAPI Key
  • REF_DATE:このシステムが動作するときの参照日時
    • 大会当日のyyyy-MM-dd形式(例:2025-11-01)
  • FIXED_SEED_NUM:シードを固定するシード位置
    • 16
  • CONDITIONAL_LEAST_NUM_ENTRANTS:特定のシードにおいて無視する大会規模の人数
    • 64
  • APPLY_CONDITIONAL_LEAST_NUM_ENTRANTS_SEED_NUM:特定の人数以下の大会を無視するシード位置
    • 64
  • SEARCH_BREADTH_MULTIPLIER:シード調整幅倍率
    • 1
各種シークレット値(環境変数値)の参考値例(平日大会・小規模大会の場合)
  • SPREADSHEET_URL:スプレッドシートのURL
    • 上でご作成いただいたスプレッドシートのURL
  • SEED_INPUT_WORKSHEET_NAME:シード元データのワークシート名
    • 「Pools & Seeding」ページからダウンロードしたcsvのワークシート名
  • JJPR_INPUT_WORKSHEET_NAME:JJPRデータのワークシート名
    • JJPRからダウンロードしたcsvのワークシート名(JJPR_yyyyMMdd)
  • ADJUSTER_INPUT_WORKSHEET_NAME:作業用ワークシート名
    • 「Sorted User Data」
  • STARTGG_TOKEN:StartggのAPI Key
    • 上の手順で取得したStartggのAPI Key
  • REF_DATE:このシステムが動作するときの参照日時
    • 大会当日のyyyy-MM-dd形式(例:2025-11-01)
  • FIXED_SEED_NUM:シードを固定するシード位置
    • 2
  • CONDITIONAL_LEAST_NUM_ENTRANTS:特定のシードにおいて無視する大会規模の人数
    • 1
  • APPLY_CONDITIONAL_LEAST_NUM_ENTRANTS_SEED_NUM:特定の人数以下の大会を無視するシード位置
    • 1
  • SEARCH_BREADTH_MULTIPLIER:シード調整幅倍率
    • 4
シークレット値の設定

シークレット値は任意のColabを開いた際の左の鍵マークから設定します。実行時にアクセス許可を求められる場合がありますので、その場合は許可してください。

 

get-player-data.ipynbの準備と実行

get-player-dataはstartggから出力したcsvから選手に関する情報を集めるものです。

まずこのGoogle Colabをコピーしてください。画像の「ドライブにコピーを保存」を押します。

https://colab.research.google.com/drive/1979q8ikXyCbJCmDXVDYSoAi73yeSuJEf?usp=sharing

コピーしたColabの左側から画像の鍵アイコンを押してシークレットが設定済みであることを確認してください。シークレットに問題がなければ、上の「すべてのセルを実行」ボタンを押して実行してください。権限許可を色々求められると思いますが、すべて許可していただいて大丈夫です。

実行が正常に終了すると「User Data」というシートが追加されます。

sort-by-jjpr.ipynbの準備と実行

sort-by-jjprはシード順をJJPR順に並び替えるものです。

次にこのGoogle Colabをコピーしてください。同様に「ドライブにコピーを保存」を押します。

https://colab.research.google.com/drive/1bhQa_MPG_djDG836XshLj5kvNrr1XXFw?usp=sharing

こちらもシークレット設定が問題なければ、上の「すべてのセルを実行」ボタンを押して権限も許可して実行してください。

実行が正常に終了すると「Sorted User Data」というシートが追加されます。

シード順の並び替え

この状態ではJJPRの順番にシードがなっているため、変更したい場合はこのタイミングで変更してください。変更する場合は、行(横方向すべて)ごと入れ替えてください。

この変更後のシード順に対して、さらに機械的に対戦相手が調整されたシードになります。

seed-adjuster.ipynbの準備と実行

seed-adjusterは与えられた順番をできるだけ維持しつつ対戦相手を調整するものです。

こちらも次のGoogle Colabをコピーしてください。同様に「ドライブにコピーを保存」を押します。

https://colab.research.google.com/drive/19iq7TGt6WN9OBzPhSymZY3dLg7XIaFxQ?usp=sharing

こちらもシークレット設定が問題なければ、上の「すべてのセルを実行」ボタンを押して権限も許可して実行してください。

実行が正常に終了すると「adjusted_yyyyMMddHHmmss」というシートが追加されます。

とさかずツールの実行

最後にとさかずさんツール( Update Phase Seeding )に流し込みます。「adjusted_yyyyMMddHHmmss」シートの内容が問題ないか確認してください。問題なければ「adjusted_yyyyMMddHHmmss」のシートを一番左に移動してください。出力データ確認の詳細は後述します。

上から入力値を説明します。

  • Phase ID:startggのトーナメントのフェーズID
    • startggが決めたトーナメントにおけるフェーズのIDです。シードはフェーズ1から決めていくのでフェーズ1のものを取得する必要があります。詳細はこちらの記事をお読みください。 JJPRシードツールの使い方 - jak_amano’s diary

  • Auth Token:StartggのAPI Key
    • 上で取得したStartggのAPI Keyをお使いください。
  • Sheets ID or URL
    • 準備したGoogleスプレッドシートのURLです。
  • Seed ID Column
    • シードIDを表す列のラベル(1行目)です。特に変更していなければseedIdのままで大丈夫です。
  • Phase Seed Column
    • シード順を表す列のラベル(1列目)です。こちらも特に変更していなければphaseseedのままで大丈夫です。

値をすべて入力したら「Submit」ボタンを押して実行します。Startgg上で反映されているかご確認ください。

想定通りにシードが反映されていれば作業終了です。お疲れ様でした。

注意事項

たまに参照しているデータに欠落がありうまく動いていないことがあります。直近の大会は反映されないことがありますが、2日以上前の大会で反映されていないことがある場合はご連絡ください。

参考情報

出力データの見方

実際にはどうしてこういうシードになっているのか確認したい場合もあると思いますので、参考情報として仕組みから簡単に解説しておきます。

仕組み

対戦相手を考慮してシードを調整するのはシードが上位の選手から順番に決まっていきます。それぞれの選手がどのシード位置に入るのかは2つのどちらかの仕組みで行われます。

まず、残っている中でシードが一番上の選手がシードが下がりすぎない範囲(探索幅の範囲)で一番当たったことのない対戦相手がいる山に入れられます(best_left_player_based)。

それが一番上でなかった場合は、次の対戦相手を決めないといけないのでその位置に来てもおかしくない範囲(探索幅の範囲)の選手から一番妥当な選手を選びます(seed_position_based)。

具体例

IMPACT MAJOR2での調整を具体例で示します(敬称略となりますがご了承ください)。

IMPACT MAJOR 2シード対戦相手自動調整ツールサンプル - Google スプレッドシート

このサンプルの場合、シード16までは固定でシード17から決定をし始めます。シード17は探索幅が4です。探索幅はシード位置によって決まり、下のシードになるほど広がります。シード17の選手が勝者側で当たる想定の選手はシード16になるので、このサンプルだとからあげ選手になります。からあげ選手と最も対戦したことがないシードが近い選手はF1re選手なのでシード17はF1re選手とします。このような決め方がseed_position_basedです。同様にMarK選手と最も対戦したことがないMarcos選手、M0tsunabE選手と最も対戦したことがないゴリオカ選手と上から順番にシード18・19と決定していきます。シード20の位置の決定時は残っている未シーディング選手の中で最もシード値が高いみどるん選手について計算したところ、ラックス選手とが一番対戦したことがなかったため他の選手を考慮せずにシード20に配置します。これがbest_left_player_basedです。

これらの検討を上から順番に繰り返して全選手を配置するとこのツールは完了です。

参考情報の使い方としては、例えばみどるんさんもラックスさんも関東の選手なのになぜ対戦するようになるんだろうと疑問に思ったときに確認します。すると、みどるんさんの対戦相手候補がラックスさんRenoさんマイルドなH.Oさんと全員関東の選手でその中で一番対戦が少ないラックスさんが選ばれていることがわかります。

隠しパラメータ

hidden_value

seed-adjuster.ipynbに流し込む前のワークシート(主に「Sorted User Data」)にはhidden_valueという隠しパラメータを設定することができます。hidden_valueを離した値にすればするほど対戦相手に選ばれづらくなります。例えば国内選手を全部0、海外選手を全部1にすると海外選手同士の対戦を避けることができます。利用する場合は1行目のどこかの列に「hidden_value」というラベルを付け、その列の全選手ぶん値を設定してください。

さいごに

改善の余地がまだまだあるのですが、とりあえず使ってくださる方がいてフィードバックしていただければ幸いです。

分かりづらい記事とはなってしまいましたので、繰り返しになりますが不明点がある場合はなんでも https://x.com/jak_ssbu のアカウントまでご質問ください。

 

*1:誰かモノ好きな人がツール化したかったら引用さえあれば勝手にやってもらって構いません

*2:複数のColabで共通となるため先にご説明したほうがわかりやすいと考えました

スマメイトオンライン大会のファイター分布はオフライン大会と違うのか

背景

JJPRというスマブラの国内ランキングを作ったりウメブラや篝火などの大会のトナメ決め(シーディング)を担当しているJakです。

篝火14もトナメを作成し、短い時間ではありましたが会場にも足を運びました。現地では様々な方と意見交換することにしているのですが、スマメイトのレートではなくオンライン大会の結果をシードに考慮してみるのはどうかということを改めて提案されました。しかし以前から私としては、以下の理由からこれはやらなくてもいいかなと考えていました。

  1. 単純に同一人物か確認をすることが難しい技術的問題*1
  2. オンラインのファイター分布がオフラインと異なりすぎていて同じゲームだと見なして結果を考慮することが難しいのではないかという問題

ただたしかにちゃんと調査を行わずに感覚で判断するのはよくないため、改めてこのオンライン大会とオフライン大会のファイター分布の違いを調査するのが本記事となります。

 

また、この記事はスマブラ Advent Calendar 2025に参加しており、前日はからあげ屋さんの開店を目論んでいるクロマキバレットさんによる記事となりますのでぜひご覧ください。

note.com

対象

調査する大変さや大会規模などを考慮し、11/5までに行われた過去10回のマエスマ'(以下マエスマ)とチノスマを対象としました。また使用ファイターデータが残っていないと調査できないため、TOP8プレイヤーのファイターだけに絞っています。ファイター分布とはいえ、結局勝っているファイター=対戦する機会が多いファイターでもあるのでTOP8でひとまず問題ないと考えました*2

また今回はあくまで大会として考えたときに対戦するファイターの割合を知りたいので、同じ選手であっても多重にカウントしています。

ちなみにまえだくんさんやケイロンチーノさんにヒアリングしたところ、チノスマは明らかにオフに比べてカズヤが多いものの、マエスマはオフとそれほど変わらないのではないかという話でした。

結果

ファイター分布比較表(一部ファイター割愛)

全ファイターをこの画像に載せてしまうと見づらいため、一部ファイターは割愛しています。全体を確認したい方は下のリンクからご覧ください。

スマメイトオンライン大会のファイター分布はオフライン大会と違うのか公開シート - Google スプレッドシート

環境の比較のために、篝火14の予選抜けファイター集計をこちらを参考にさせていただいて

https://x.com/WeNeed2BanSonic/status/1984950035331920267 

載せています。

オンラインの集計のほうは同じプレイヤーが複数回カウントされている影響も大きいとは思いますが、やはりオフライン大会の結果とのファイター分布は乖離がありそうです。チノスマは顕著にカズヤ環境ですし、マエスマも少しカズヤ環境と言えそうです。

オフラインでも最近はカズヤが多いですがさすがにカズヤ以外のファイターなども考慮すると、篝火予選抜けだと上位のアイクラ・ソラ・ピクオリが存在しないため、かなり環境は異なりそうです*3。篝火の結果にも関東の大会という地域性による影響があるとしても、全国的にファイター数がそれなりに存在するスネーク・ジョーカー・ディディーがオンライン大会にはほとんどいないことから、環境が異なっていると言ってよいと考えています。

まとめと補足

調査結果として少なくとも現状ではオンライン大会とオフライン大会ではファイター分布はかなり異なっていると考えてよさそうです。

ちなみに背景に記載したオンライン大会の結果をシードに考慮することは主催のもつださんのご協力もありIMPACT MAJOR 2で検証しました。そのときにオンライン大会をオフライン大会の結果に開催するときにどれぐらい傾斜をかけるかについて上の結果を踏まえてかなり厳しく(具体的には1/4の人数の大会結果として)考慮しました。

画像

ただIMPACT MAJOR 2の参加者はオフライン大会に積極的に参加されている方が多くて、申告していただいた中で検証の対象となる方は1名しかおらず結果は正直妥当だったかわかりませんでした(笑)*4

明日以降のアドベントカレンダーの記事もお楽しみに~。

*1:特に代行や複数人で同じアカウントを運用する規約違反も考えられます

*2:シングルエリミネーションなことも相まって勝ってる選手のファイターを環境キャラと見なしてよいと考えています

*3:オンにもオフにもいないファイターを除いたカイ二乗検定の結果は0.002%でした

*4:ちなみに申請レース時にこういう細かい情報を入力させるのはよくないというフィードバックはいただいておりその点は反省しております

カプコンカップ12の大会形式は競技性が高まっていないという指摘と競技性を高める改善案の提案

要旨

カプコンカップ12の大会形式は以下の点から競技性は高まっていません。

  • 予選フェーズ1においては同じ選手に負けて敗退するケースが存在するため
  • 最終フェーズはカプコンカップ11の大会形式のほうが順位の妥当性が高くなるため

そして大会形式の改善案を提案します。

  • フェーズ1を4人12グループから8人6グループに変更

  • 最終フェーズを勝者側8名敗者側8名スタートの3試合先取(以下BO5)ダブルエリミネーションに変更
  • フェーズ2に段階を設けることで消化試合を削減

はじめに

自己紹介

Jakと申します。スマブラ勢で、JJPRなどのランキングや篝火・ウメブラなどの大会のシーディング(選手のシードを決める作業)を担当しています。シードとは優勝者を筆頭に大会の結果の納得性を高めるために存在します。大会形式はシード以上に大会結果に大きく影響するため必然的に大会形式について考えることも多いです。

カプコンカップ12とは

カプコンカップ12(以下CC12)とはカプコンプロツアー2025(以下CPT)において好成績を修めた選手のみが出場できる招待制のストリートファイター6(以下SF6)大会です。先日CC12の大会形式について競技性を高めるために変更するという発表がありました。

これはEsports World Cup 2025(以下EWC)のストリートファイター6部門と同じ競技形式となります。私はEWCのときからこの大会形式は競技性が低いのではないかと考えていたため、改めて検証したのが本記事となります。

この記事を書いた動機

私はスマブラ勢ですがSF6の大会もそこそこ観ています(少しだけプレイもしています)。そこでCC11とEWC2025も両方観ていたのですが、CC11のほうが競技的に良い大会形式だと感じていたので今回の大会形式の変更には驚きました。また体験としても、EWCのほうではEndingWalkerがMenaRDを5-0で倒すなど試合レベルで印象に残ることはあったのですが、Blazの驚異的なルーザーズランのような大会を通じて印象に残るストーリーラインが薄いと感じました*1

game.watch.impress.co.jp

今回の大会形式が興行的側面や運営的側面からの変更であれば納得できるのですが、競技性の側面からの変更という理由づけは疑念を持たざるを得ません。競技性は高まっていないことを示しつつ、よりよい大会形式を提案したいと思います。

競技性とは

まず競技性という言葉の曖昧さをなくすために定義づけが必要です。細かな議論は差し置いて、ここでは単一のゲームとしての競技性と大会としての競技性が存在することを主張します。

個々のゲームとしての競技性

個々のゲームとしての競技性はよく使われるほうの意味で特定のゲームタイトルについて競技性が高い低いなどの表現を行われます。厳密でない表現になりますが、そのゲームで面白いと考えられている部分が競技の中でどれだけ実現されているかということとなります*2

  • 例:野球のタイブレークはバントやスクイズだけで得点が入るため、投手が背負ったわけではないランナーで試合が決着してしまうことがあり、まず出塁することが野球の根幹だと考えると競技性が低い

nlab.itmedia.co.jp

大会としての競技性

大会としての競技性は大会結果の納得性です。個々のゲームとしての競技性、つまり個々のゲームにおいてどれだけ優れているかが大会結果に表れているかです。特に甲子園のようなシングルエリミネーションでは強豪同士が序盤に潰し合うことがあり(優勝校は除き)大会の順位の納得性が高いかについては疑問の余地があります。

the-ans.jp

今回のカプコンカップの発表で触れられている競技性とは、大会形式の競技性についてなので、この後者の大会としての競技性を指しています。

大会結果とは

大会結果とは大会におけるプレイヤーの順位のことです。優勝するかどうか以外には価値に差はないという考えもあるとは思いますが、順位ごとに(平均的な)強さの差があることは明らかです。実際、各大会の賞金やCPTの各種ポイントにおいても2位以下は0ではなく順位ごとに傾斜配分で獲得できます。つまりSF6の競技シーンにおいてカプコン公式も優勝以外は無価値と考えていません。

https://sf.esports.capcom.com/cpt/jp/pp-rankings/

CC12の大会形式とその課題

CC12の大会は3つのフェーズに分かれます。フェーズ1は4名12グループで3試合先取のダブルエリミネーショントーナメントを行い、ウィナーズで突破した12名がフェーズ3へ、ルーザーズで突破した12名がフェーズ2へ進出。フェーズ2は3名4グループで3試合先取の総当たり戦を行い、各グループ1位4名がTOP16 - FINAL(以下フェーズ3もしくは最終フェーズ)へ進出。フェーズ3は5試合先取(FT5)のシングルエリミネーショントーナメントとなり優勝者を決定。

また今回の大会形式を変更した競技性の面での理由をツイートから抜粋しておきます。

勝ち進むごとに対戦数と舞台の重みが増していく設計となっており、消化試合が発生せず、大会全体をより濃密な構造へ作り変えております。 勝利の積み重ねがそのまま「世界最強プレイヤーの座」の証明となり、ファンにとっては大会を通じて緊張感の途切れない観戦を楽しめる構造になることを期待しております。

フェーズ1の課題

フェーズ1においては特に同じ選手に負けて敗退するケースが存在します。実際にEWCでも同じ選手に負けてフェーズ1で敗退するケースが発生しました。

https://esportsworldcup.com/en/competitions/street-fighter6 より

例えば、画像のケースではももち選手がカワノ選手に2度負けて敗退しています。この2試合の結果だけでももち選手が敗退すると、ももち選手がカワノ選手以外の全員に勝てるポテンシャルを持っていた場合に見逃されていることとなります*3。この問題は、フェーズ1を8名6グループにすれば敗者側2回戦で当たる相手を別の山で負けた選手同士にすることができるので解決できます。

フェーズ2の課題

フェーズ2において競技性に関する課題はまず総当たり制にあります。総当たりはタイブレークが発生した場合にBO5自体の勝ち負けだけでなく獲得BATTLE数や獲得ROUND数などのインゲーム要素を参照して順位を決める必要があります。

獲得ROUND数などを意識しながら試合を行う形式はゲーム性(個々のゲームとしての競技性)にまで影響が及んでしまうため、できれば避けたいところです。とはいえこの問題はさらに注意深く議論する必要があるため、本記事では総当たり制自体に問題はないものとします。

フェーズ2の別の課題は、運営が避けたがっている消化試合の発生を防ぎきれないことにあります。3人の総当たりで1人抜けの場合2位3位の価値に差がないため、最初の2試合で同じ選手が勝った場合に消化試合が発生してしまいます。フェーズ3にダブルエリミネーションを採用しフェーズ2の形式を工夫することで順位付けの意味を高めることができます(後述)。

フェーズ3の課題

フェーズ3の課題は今までのBO5ダブルエリミネーションよりもFT5シングルエリミネーションのほうが果たして競技性が高まるのかという点に尽きます。今回改めて検証しましたが、結論としてはBO5ダブルエリミネーションのほうが競技性が少し高いことがわかりました。次の補題はこの補足となります。

補題シングルエリミネーションFT5とダブルエリミネーションBO5の競技性の比較

比較の前提の整理

比較手法

所与の条件を与えて仮想的なトーナメントをシミュレーションで10万回実行しその結果を比較します。

比較指標

まず比較すべき指標として優勝者が誰になるかという確率が存在します。

それ以外に比較するべき指標として大会の最終結果順位があることは上の競技性の定義から定性的にわかります。しかしどのように定量的に評価すべきでしょうか。スマブラコミュニティにおいてはシードの適切性を評価するために与えられたシードと大会結果順位を比較する指標SPRが存在します。

note.com

私はこのSPRを主にシードが適切であったかを評価するために利用しています。大会結果順位を正しい強さのランキングであったと仮定し、シードがそこからどれだけ外れていたかを検証しています。しかし、逆転の発想を行い、正しい強さのランキングが事前にわかっている場合には全選手についてSPRを計算することで大会結果順位の妥当性=すなわち大会形式の妥当性を計算できます。具体的には全選手についてSPRの絶対値の合計(以下Total absolute seed performance rating=TASPR)を妥当性として評価します*4。TASPRは完全に強さ順*5に終わった場合に0となり、大きな値であるほど荒れた結果となります。

比較する大会形式の詳細

CC12で行われるフェーズ3のシングルエリミネーションでは、12名は抽選で決められるフェーズ1のグループ振り分けに完全に依存します。フェーズ2から進出する4名は必ずバラけますがそれ以外は対戦相手の決定にそこまでの試合結果が考慮されないため実質的に全員のトナメ位置がランダムに決定していると見なしてよさそうです。

16名でダブルエリミネーションを行う形式は、事前にフェーズが存在する場合に、画像のように全員が勝者側スタートではなく半数が敗者側スタートの形式も考えられます。

https://www.start.gg/tournament/smash-ultimate-summit-6/event/ultimate-singles/brackets/1328431/2026202 より

この形式では事前フェーズによって、強い選手が勝者側に、そうでない選手が敗者側に来ることが想定されます。今回の提案ではこの勝者側敗者側それぞれに半数ずつの形式で検討したかったのですが、その振り分けを厳密に定義することが困難であったため、この部分は仮想的にBO5の結果で振り分けられたものと同等とします。すなわち全員勝者側でランダム位置スタートのBO5ダブルエリミネーショントーナメントとします*6

まとめると16名のFT5シングルエリミネーションと16名全員が勝者側のBO5ダブルエリミネーションをシミュレーションで比較します。

参加者と対戦勝者の決定方法

今回の手法では参加者16名全員にレート値を割り当てました。平均を2000で各プレイヤー間のレート差を30とした2225~1775のレートを16名に割り当てました。そして1試合(BO1)の勝率がELOレーティングの計算式によって計算されると仮定しました。

ja.wikipedia.org

つまりBO5ではELO計算式によって先に3回勝者に選ばれた人が勝者となり、FT5では先に5回勝者に選ばれた人が勝者となります。

検証結果

優勝確率の比較

まずグラフの上のプレイヤーほど強く(レートが高く)下のプレイヤーほど弱い(レートが低い)です。青のSingleFT5でも赤のDoubleBO5でももちろん強いプレイヤーほど優勝確率が高くなっていますが、赤のほうがわずかに最強プレイヤーが優勝する確率が高いことがわかります。

順位相関度(TASPR)の比較

TASPRで比較するとその違いは大きいです。青のSingleFT5では下のほうまで確率が存在し比較的荒れた結果になりやすいのに対し、赤のDoubleBO5はTASPRで見て2ほど荒れが少ないです。これは優勝者以外の2位以下の選手の順位について妥当性が高くなることを表しています。

検証結果の分析

結果から優勝者に与える影響はほぼ変わらず最終順位についてはBO5のダブルエリミネーションのほうがよいことがわかりました。ただし選手の強さが確率論的に決まることを前提としています。いわゆる対応力といったFT5・FT10のほうが真の実力が出るといった側面については未検討ですし、またFT5のほうがBO5に比べて個々のゲームとしての競技性(エトス)に近いかどうかという観点での議論は飛ばしています*7

https://ayuha167.web.fc2.com/lian_xinhaguridi/ying_he.html

そのため(特に試合中の)対応力を重視する観点からCC12の大会形式を変更しましたという判断ならば競技性が高まっていることは否定しません*8*9。もちろんこれはあくまで競技性に絞った分析なので、運営スケジュール都合や興行的にこの形式にすることも否定しません。

改善案の提案

フェーズ1の改善案

フェーズ1は8人6グループに変更しBO5ダブルエリミネーションを行います。また勝者側も敗者側も3回戦まで進行することとし、勝者側を3回勝ち抜いた人のみがフェーズ3に直接(勝者側で)進出できることとします。勝者側の3回戦で負けた6名と敗者側の3回戦を勝ち抜いた6名の合わせて12名がフェーズ2に進出します。残りの選手は大会から敗退します。

フェーズ2の改善案

フェーズ2はさらに3段階のフェーズ2-1とフェーズ2-2、フェーズ2-3に分けます。

フェーズ2-1案

3人ごとの4グループとしBO5総当たりを行います。その総当たりで1位はフェーズ2-2に進出、2位はフェーズ3に敗者側進出、3位はフェーズ2-3に進出します。全順位を決める意味を高めることで消化試合をなくします。

フェーズ2-2案

フェーズ2-1で1位抜けした4名でBO5を2試合を行い、勝者はフェーズ3に勝者側進出、敗者はフェーズ3に敗者側進出します(タイブレークを2試合行う形)。

フェーズ2-3案

フェーズ2-1で3位抜けした4名でBO5を2試合を行い、勝者はフェーズ3に敗者側進出、敗者は大会から敗退します(タイブレークを2試合行う形)。

フェーズ3の改善案

フェーズ3は勝者側8名・敗者側8名で開始するBO5のダブルエリミネーションとします(今までのカプコンカップと同じ形)。

補題:改善案の運営スケジュールについて

改善案により、フェーズ1は60試合から72試合に、フェーズ2は12試合から16試合に、フェーズ3はFT5シングルエリミネーションからBO5ダブルエリミネーションに変更されます。

フェーズ3に関しては例年の形式に戻るだけですので問題なくこなすことができそうです。

フェーズ2も元々スケジュール的にかなり余裕があるため大丈夫そうです*10

問題はフェーズ1ですが、EWCのスケジュールでもDay1に36試合消化、Day2に24試合消化されているため、多少大変なスケジュールにはなりますがDay1とDay2で36試合ずつ消化することはできると思われます。

一日の中の試合数は増えるが全体の日取りは変えずに実行できるのでは

改善案の課題

改善案にもまだ課題はあります。それはフェーズ1初戦の比重が高すぎることです。初戦で負けると最低3連勝しないとフェーズ3へ進出する望みが全くないためです。ただし48人を集めて(配信一本化で)全配信する試合スケジュールを考慮すると仕方ないところなのかなと思います*11

まとめ

要旨を再掲しておきます。

カプコンカップ12の大会形式は以下の点から競技性は高まっていません。

  • 予選フェーズ1においては同じ選手に負けて敗退するケースが存在するため
  • 最終フェーズはカプコンカップ11の大会形式のほうが順位の妥当性が高くなるため

そして大会形式の改善案を提案します。

  • フェーズ1を4人12グループから8人6グループに変更

  • 最終フェーズを勝者側8名敗者側8名スタートの3試合先取(以下BO5)ダブルエリミネーションに変更
  • フェーズ2に段階を設けることで消化試合を削減

お読みいただきありがとうございました。

*1:またFT5ではなくBO5のように試合が短いと試合レベルで印象に残る試合が少なくなるわけではないと考えているため、後述するBO5の提案となります。実際CC11でもTakamura対シュートさんのように印象に残る試合もありました

*2:専門的な表現では、いかにエトスを実現したルールになっているかということになります エトス:「この競技はこういうもの」という像

*3:実際には通年で他大会も存在するためなんとなく各選手の強さがイメージできますが、大会としてはあくまで単一の大会として強さを妥当に決定すべきです

*4:SPRは正負がある値となり全選手合計すると必ず0となります。そのため絶対値を合計して比較します

*5:元の定義ではシード順

*6:またグランドファイナルは格闘ゲームダブルエリミネーションでは一般的なリセットありとします

*7:対応力という概念についてはそもそも本当に存在するのか・存在するとして対応力があることがエトスに近いのか・どのような大会形式で対応力(適応力)が発揮されやすいのかはまた別途しっかりと議論されるべきところだと思います

*8:試合をまたぐ対応力についてはリベンジのチャンスがあるダブルエリミネーションのほうがあることは否定できませんが

*9:また対応力というものがSF6の競技としての本質(エトス)においてどれほど重要なのかについても熟議が必要だと思います

*10:フェーズ3のための会場転換作業などがありうるためもしかしたら厳しいかもしれませんが4試合ならなんとか消化できるのではないでしょうか

*11:スイスドロー形式などを採用することで納得性を高められる可能性はありますがどうしても試合数は増えてしまいそうです

篝火13シーディング振り返り

導入

めちゃくちゃ今更ですが篝火13お疲れ様でした。すみません、ちょっと篝火13が終わってから色々な活動のモチベが下がっており、ブログ書くのサボりすぎました。

シーディング担当させていただきました。

有難いことにクレジットも載せていただきました

今回のシーディングは(これをメイン業務としているスタッフのみに絞ると)3名で担当させていただきました。人数を増やしてもっと良いシードにしてほしいというご意見もあるかと思うのですが、後述するように色々あって今回はこの体制となりました。

危機

前回の篝火12までシーディングスタッフとしてご活躍されていたP-さんが篝火スタッフから一度退くこととなりました。

P-さんはシーディングがメイン業務ながら他のセクションの業務も手広く担当されていてシーディングに限らず他の業務が円滑に進むような雑務を主にしていただいていました。このシーディング以外の雑務とはなんぞやということですが、大まかには優先枠の洗い出し・トーナメント形式の相談・募集再募集日程の相談・スタッフのWave調整などがあります。P-さんの次にシーディングチームで歴が長いのは私なので、篝火13での雑務は私が担当する流れとなりました。

ただ現在のシーディングチームでstartggのAPIを叩いたりツール開発したりできるのは私しかいないため、私のタスクが肥大化しています。最終的にはやはりここがボトルネックとなりました。改善の余地があるところです。

さらに篝火13はみなさんの過去の宣伝効果などもあり非常にたくさんの海外選手にご参加いただけることとなりました。以前から海外勢のシーディング(特にその中でも強さの推定)については手作業となっていたため作業量が膨大になることは想像に難くありません*1。そのためここの作業の見通しを立てるのがマストでした。

シーディングスタッフ紹介

前回から引き続きスタッフだったのは私とPUPAさんだけで、今回新しくInsulinさんにご加入いただきました。人数を多く増やさなかったのは一気に人数を増やしすぎるとコミュニケーションをよほど密に行わないと土台が揺らぎ方向性を見失う懸念があったためです*2。PUPAさんはみなさんもご存知のとおり、日本全国の選手の地域と使用ファイターを"正確に"把握されているすごい方です。ただ、正直PUPAさんとすらシーディングとはどうあるべきかという根幹についてちゃんと話し合ったことがなかったので、そこも改めてすり合わせました。

Insulinさんは以前からLumiRankを中心に海外の事情に精通されている方だと認識していたので私からお声がけしました。大会の現場でお声がけできたこともあり、スタッフ加入時からシーディングの方向性や担当していただきたい業務についてもしっかり共有できました。LumiRankが参照しているすべての地域PRを過去に調べたことがあるそうで、海外勢のシーディングが課題になることが明白だった今回の篝火のスタッフとして適任だと感じたため是非にとお願いしました。スタッフ業務はこういう現場でのコミュニケーションが非常に大事です。

このメンバーが揃ったことによりなんとか最低限今回のシード作業を終えることができました。作業分担などを行ったとはいえ、てんぷらさんと相談などしつつシーディングの方針を決めたのは私なので、シーディングに対する厳しいご意見がある場合はぜひとも私までお願いします。他のスタッフへのいわれのない批判が生じてスタッフが減ることを一番避けなければなりません(今後のシードの質がより下がることにつながります)。

PUPAさんは主に最上位のシードを、Insulinさんはその他の海外勢のシードをご検討いただきました。お忙しい中ご対応いただき感謝しかありません。

シードの公開タイミングについて

シードの公開タイミングは実は前回も今回も想定していたタイミングより遅れています。前回の篝火12も事前に公開予定日は検討していたのですがstartggの未知の不具合が発生したため問い合わせ対応で遅れました。今回も一ヶ月ほど前から公開日について話し合っていました。特にLVLUP EXPO 2025と第57回スマバトSP、桜梅桃李 第弐幕とシードに大きく影響しそうな大会が目白押しだったため、どこまでの大会を考慮してシーディングするかを相談していました。今回は初の4Wave制だったためトナメ公開が遅れると参加者に多大な影響があることは重々承知していました。かつてない参加人数の中でなんとかスケジュールに間に合わせるため、上記のように担当を事前に決めて進めました。

しかしやはり現場は生き物です。今回からDay1にPhase2まで進行するというトーナメント形式となり、startgg担当者が事前にブラケットを設定していました。しかし直前に仮シードを流し込んだ際、想定通りのシード同士でぶつかるブラケットになっていない不具合(設定の問題ではなくstartggのバグ)が判明し某佐藤さんが急遽startggにご連絡して修正していただきました。

それだけでなく流し込んだシードがadmin画面のブラケットで確認できない(必ずエラーページになる)という不具合が発生しました。この不具合に気づいたときはもう想定公開日から遅れていたため、これ以上トナメ公開が遅れることは許されないと判断し、最終的にadmin画面でブラケットを確認することなく公開しました*3

対戦相手調整機能について

こう言うとお叱りを受けるかもしれませんが、今回のシーディングについては私なりには一番の狙いを実現できていて良かったという感触を得ています。「過去の対戦成績から対戦回数・頻度が少ない選手同士が当たるようにする」という過去の取り組みの延長として、「海外勢をできるだけ日本勢と当たるようにする」という試みをツールを用いて行いました。シード通り進行した場合に勝者側では海外勢同士ができるだけ当たらないようにしたということですね。

Projected通りにはなってませんがこのようにシード通り進行した場合に海外選手同士が当たりづらいようにトナメを組んだ

計算式における時間減衰の微調整

過去の篝火と比べて細かな変更も加えています。直近の大会ポイントが過剰に高くなりすぎないように(後で書く)期間の大会ポイントの傾斜は一定になるようにしました。これはDELTA10のシーディングでとさかずさんが導入されたものにインスパイアされたもので、元々の時間減衰の計算式だと指数関数の特徴により直近の期間差によるポイントへの影響が大きくなりすぎるという問題があったため、この調整を入れました。

大会ポイントの平準化

もう1つ大きな変更としては、さぼてんさんからのアドバイスに基づいて大きくハネた結果を過剰に考慮しないようにしました。具体的にはJJPRの大会ごとのポイント計算はそのままにその合算処理を単純な足し合わせではなく相乗平均を取る形に変更しました*4

しかしこちらについては大会後の事後評価において、単純なポイント加算のほうが正確なシードになりそうなことがわかりましたので、今後は単純なポイント加算に修正する予定です。(グラフを載せておきますがかなり複雑なので注釈に記載しておきます*5。)

ポイント合計方式の比較 左が篝火13で採用した相乗平均方式 右が既存の単純加算方式

アンケート結果について

オンライン強者について

今回、シーディングについて多くのご意見をいただきました。一通り目を通しましたが、特にオンライン強者の扱いについて多くのご意見をいただいています。オンライン強者については以前の私のブログ 篝火12のシーディング方針公開と振り返り - jak_amano’s diary でも挙げた通り、以前からオンライン強者がトーナメントが荒れる(シードどおりの結果にならなくなる)一番の要因でした。しかし篝火11でのアンケートにおいてもオンライン強者のシードに関する意見は1件もなかったように、オンラインとオフラインは異なるゲームの側面があるためシードに考慮すべきではないという意見が主流で、篝火もその方針でシーディング作業を行ってきました。

そのため、今回で議論が再燃してオンラインでの結果であってもオフラインのシーディング考慮に含めたほうがよいという意見がたくさん出てきたのは喜ばしいことだと考えています。私もむしろこの意見が選手から出てくることを待っていました(ただしこれほど大勢の方から厳しい意見として急に来るとは思っていませんでしたが…)。

しかし改めて他のスタッフと相談したうえで検討したところ、様々な課題があることが分かりました。文章があまりにも長くなるため、この問題については後日ブログにまとめます。

startgg複数アカウント問題について

またアンケートにおける顕著な意見として「トーナメント公開が遅い」「startggアカウントが分かれている選手の対応がされていない」といったものがありました。こちらについては該当選手からアカウントが分かれているため統合してシーディングしてほしいという申し出がありましたが、過密作業によって見落としました。

公開直前に気づいたのですが、一人シード選手をずらすと上記の対戦相手考慮ツールを動かし直すことが必須となります。参加人数があまりに多いため、ツールの動作には最低でも4時間以上かかります。シードスタッフ(および作業終了が影響する他部門スタッフ)はみんな仕事や学業もあります*6。これ以上遅らせるとトーナメントの公開がさらに1日遅れることとなるため、今回は統合作業を見送らせていただきました*7

正直に申し上げると、複数アカウント問題は他大会のシーディングにおいても問題になっておりますし、運営としては選手に注意してご協力いただきたいところです。ただ、大会参加者は増える一方ですし、影響も大きいためJJPRおよび篝火のシーディングにおいてはなんとか考慮できないか検討してみます。あまりご期待せずにお待ち下さい…。

今後について

ここまで読まれた方ならばシーディングチームの人数を増やせばよかったのでは?と思われそうですが、方針をすり合わせず単純に人数を増やしてしまうと余計に作業が難しくなってしまうことがあるため、今回は必要最小限の人数で担当させていただきました。作業方針や分担などについて、手応えを掴むことができたため、次回以降はスタッフの増員を検討しています。

またシードとはなにかという考えもまとめている最中です。今後その点についても記事にまとめ、選手のみなさんがより納得できる大会にしていきます。よろしくお願いします。

*1:ここもいずれは自動化していきたいと考えています

*2:このあたりは組織で管理職をご経験されている方であればよくお分かりかと思います

*3:シード値のリストからどういうブラケットの組み合わせになるかは頭の中で組み立てられるのでそのリストは確認しています

*4:大会数が足りていない選手は不足している大会は1ポイントとして計算

*5:横軸はいつものシード値に対してどのくらい最終順位が高かったかどうかのSPRです。PGStatsのサイトがなくなってしまいましたが、他の記事などで説明されていると思うので割愛します。縦軸がかなり複雑で、各大会でのポイントについて相乗平均を底とした対数の分散です。ばらつきを想定しています。左のグラフだとばらつきが大きいほどSPRが上振れていて、右のグラフだとそこが均されていることがわかると思います。左の状態だとばらつきが大きい人が過小評価であることがわかります。

*6:私ももちろん暦通り仕事がありました

*7:それでも公開前日に朝4時まで作業したのち、シード公開当日に朝6時まで作業していました

スマブラオフ大会で配信外の試合を録画しよう

結論

どうせ大会に観戦に行くなら配信外の試合を録画してYoutubeに上げよう!

きっかけ

私もオフ大会に行くようになって長くなってきました。最初はいつも見ている配信者のきみさん https://www.twitch.tv/kimi_jojo69 が篝火12で海外勢のGoblinと当たることとなり「どうせならこの試合をきみさんが後で振り返れるようにしたらおもろいやろなあ…」ぐらいの気持ちでスマホで録画しました。後日Youtubeに上げたところ、何も準備せず突発で録画したものの思ったよりもキレイに録画できていることがわかりました。

youtu.be

そして先日久々にスタッフ作業を全くしていない大会のスマ納めに参加することとなりました。普段なにかしらのスタッフ作業をしていたためか、せっかく会場に来ているのにただ試合を見るだけなのはもったいないという気持ちになり、レベルの高い配信外の試合を撮って上げようという気になりました。会場で試合を見ていて途中で録画しておけばよかったと後悔していたからかもしれません*1

youtu.be

現在の動機

その後、関西に移住したのですが、次に参加するスマバトからはもう配信外試合を録画する気がマンマンでした。

そもそも、私がスマブラ観戦を楽しんでいる根底にはこのゲームのことを知りたいという知的欲求があります。言い換えるならば、このゲーム(競技)の結論がどうなのかということでもあります。しかし、20年以上続くスマブラDXでも競技シーンは目まぐるしく動いており*2、ファイター数がゆうに多いスマブラSPでは競技シーンの終点にたどり着くのがいつになるかは誰にもわかりません。

youtu.be ドンキーが勝って大盛りあがりスマ納めの動画は競技者の方に参考として見ていただけたようで、こういう取り組みがより競技が煮詰まることに貢献していると実感しました。参加するオフ大会で録画をすればするほど攻略は早まるのではないかと考えたのです。

このようなモチベーションで録画しているため、私が録画した試合に関しては映っているプレイヤーの方はもちろん、同キャラ使いなど参考にしたい方はどんどんご自身の配信や動画などで振り返っていただきたいです。もちろん許可取りはいりません。

すゝめ

ところで、同じ動機ではなくても、この取り組みに興味がある方は一緒にやってみませんか?

最低限、スマホ1台さえあれば(画面が動かないように固定する必要があるため腕はパンパンになりますが)録画できます。後は自宅などWi-Fi環境があるところで、スマホからYoutubeにアップロードしてPCで動画名などを編集してツイートするだけです。

あった方がいいもの

スマホだけでいいと言いましたが、モバイルバッテリーと三脚はあったほうがいいです。特に大量に電池を消費するため、モバイルバッテリーは必須です。

私は上記のような動機で試合を選んでいるため、特定のプレイヤーやキャラを追って録画試合を選んだりはしていません。startggを見ながら、すぐにでも試合が始まりそうな台に移動して録画しています。録画中はスマホが使えませんので、トーナメントの状況を確認するためにstartggやTwitterの確認は必須です。もちろん、帰路の確認などにもスマホがないと困ります。忘れないようにしましょう。

三脚*3については、かの偉大なる現地配信ののほほ先輩もなんでもいいとおっしゃっています。

私はすごく安かったのでオーム電機製の一脚を買いました。

www.ohm-electric.co.jp

まだ実際に試してはいませんが、自宅で試したところ全く問題なさそうだったので次からはこれで録画する予定です。

動画の共有

さて録画した動画のアップロードですが、これは可能な限り当日に行いましょう。後になればなるほど面倒になりますし、選手はすぐにでも振り返りをしたい場合が多いです。

動画のタイトルは特にルールはないのでお好みでいいと思います。私は意図的にファイター名を入れていません。単純に面倒だからというのもありますが、結果を知らずに見てキャラの被せ合いを楽しみたい方もいらっしゃるかもしれないというのもあります。

そしてアップロードした動画はTwitterなどSNSで告知しましょう。ちなみに私は今後のTwitter告知はハッシュタグ #スマブラ配信外試合 を付けることにしていきたいと思います*4

許可取り不要で動画や配信に再利用可能の録画をする方は同様に #スマブラ配信外試合 のハッシュタグを付けていただけるとどんどんデータが充実するので私が喜びます。みんなで広げていきましょう!

雑なまとめ

てなわけで、どんどん配信外試合を録画しましょう。もし選手の振り返り配信などで使ってもらえると応援する気持ちが増し、より観戦が楽しくなりウィンウィンです。ではまた次の大会で。

*1:特にふうvsChagを撮っとけばよかったという後悔がありました

*2:ドンキーの躍進やアイクラ・ピーチの復活など

*3:というか正しい日本語がわからない。一脚だと通じない気がする

*4:実際に自分でアップロードしてみて検索性が悪かったためです

篝火12のシーディング方針公開と振り返り

まず前回のシーディング記事 大型大会のシーディングについてのこの一年の思考 - jak_amano’s diary からシーディングにおいて認識していた課題は以下となります。

  • 直近の対戦を考慮してシーディングすること
  • 強さ順にシーディングすること
    • オンライン強豪の考慮
    • 古豪の考慮
    • 関東関西とそれ以外の地域の差の考慮
    • 海外勢の強さ推定
    • 国内選手の海外大会遠征結果の反映

このうち、オンライン強豪の考慮(スマメイトのレート考慮やオンライン大会結果の考慮)については、オフ大会のみ考慮すべきという現行に対して強い異論が見当たらなかったため特に対応しておりません*1

篝火12においてのシーディング方式説明と、それぞれの課題に対してどのように対応したのか順にご説明いたします。

篝火のシーディング

特定日でのJJPR算出

今回は5/1時点のJJPRを参考にしました。JJPRはver3から大会の規模による補正が強くなっています。また過去の篝火による獲得ポイントを2倍化する補正をかけました。そのデータをそのまま一旦参加者一覧に流し込みました。

海外勢と海外遠征組のシード反映して順位付け

(この作業は今回は他のスタッフにお願いしました)

まず、海外勢と海外遠征組の海外大会結果を調査していただきました。海外大会結果と上記のJJPRによるシード順を考慮し、海外勢と海外遠征で顕著な成績を収めた選手のシード位置を調整していただきました(後述しますが、個人的にはここも機械化していきたいと考えています)。

対戦相手を考慮するためのツール使用(と補正)

篝火のディスコードサーバーでも告知させていただいた通り、今回から新たに開発した対戦相手自動調整ツールを使用しています。このツールはstartgg上で行われた過去の対戦成績から対戦回数・頻度が少ない選手同士が当たるように自動でシードを組み替えるものです(後ほどツール公開する予定です)。例えば、選手Aと選手Bの対戦頻度match_value(a,b)は以下の計算式で計算されます。対戦した当日はmatch_valueが1となり、ちょうど1年前だと1/4=0.25になるという計算です。Σ記号は過去の対戦すべてについて下式の値を計算して合計しているという意味になります。

 \displaystyle matchValue(a,b)=\sum \frac{1}{4^{(day(now)-day(matchDay(a,b)))/365}}
 \displaystyle day(d)=dの日付
 \displaystyle matchDay(a,b)=aとbが対戦した日付

性質上シード値を入れ替えることとなりますが、不当にシードが下がりすぎないようにするため、入れ替えるシード値には制限を設けています。

ツールで考慮しきれない部分の手動対応

数学的な話になってしまうのですが、このツールでの計算では大域最適解ではなく局所最適解を求める手法になっています*2

引用 : 焼きなまし法 - 大人になってからの再学習 https://zellij.hatenablog.com/entry/20120825/p1

そのため、上位ラウンドでツールのうまく機能していないマッチを目視確認して調整しました。具体的には関西の平日大会でよく対戦しているスノー選手とりゅーおー選手が対戦する組み合わせになってしまっていたため調整しました。

仮公開と地域被り申請対応

ツール利用と目視確認、手動調整が終わったため、プレシーディングを公開しました。ちなみに、今回は参加人数が多すぎる弊害かStartggにおいて遭遇したことのない不具合が発生し、裏ではバタバタしていました。

地域被り申請については、みなさんからの意見やツールを導入することを踏まえ、申請の対応については今回は厳しくすることをスタッフ内で相談して決定しました。実際、今回の基準に該当する申請はなく、プレシーディングのまま確定となりました。

篝火12のシーディング結果の分析

前述した通り、過去のシード結果(大型大会のシーディングについてのこの一年の思考 - jak_amano’s diary)を踏まえ、JJPRはver3から大会規模による補正を強くかけるように変更しました。これは以前からご指摘されていたシードに対する大会開催地域をある程度考慮するためでした。この変更を私が携わるシーディングに取り入れた初の大会が篝火12となります。実際に改善したのか簡単に検証しました。

篝火12 TOP129~512シードの分析

表内の値は平均SPRです。SPRについてはもうみなさんお馴染みですね*3。まず前提として、SPRの値はすべてマイナスとなっていますが、対象をシードがついている選手に限定しているため基本的に低くなります。SPRの観点からのよいシーディングとは、シードが近い選手をどの属性で切り分けても同じようなSPRを示すことと定義できます*4

この結果を確認すると篝火11では関東・関西とそれ以外の地域でSPR差が大きかったのですが、篝火12では差が縮まっていることが確認できます*5。もちろん、選手の努力による部分も大きいとは思いますが、大会規模による補正の影響もある程度あったと考えられます。今後も私が携わるシーディングについては、このような属性によるSPR差が大きくなっていないかを確認していきます。

今後のシーディング方針について

シーディング作業を機械化していく重要性

シーディングについて、大きく意識していることは、もちろん次の大会を納得性が高くいいものにすること、機械的に計算できるようにすること、シーディング方針をできるだけ公開すること、です。

今まではシーディングを納得できる順番にするために、上記のような改善を導入してきました。ときには厳しいお言葉をいただくこともありましたが、継続して取り組めたことで機械的によいシーディングを提供できる土台が整ってきたと感じています。

この機械的であることを非常に重視している理由は、誰でもシーディング作業ができるようになるため運営の負担が減ること、課題があったとしても人批判ではなく仕組み批判になるため議論がしやすくなること、があります。継続的な改善のイテレーションが実現できるため、スタッフの負担を減らしつつ精度の高いシーディングが提供できている実感があります。

ウメブラSP11のシーディング参考資料の公開

そして、仕組みの議論を進めるためには、当然シーディング方針の公開が必要です。具体的には、過去のウメブラSP10や篝火12などではJJPRに補正をかけたものをシーディングの参考にしていました。ただ、大会前は慌ただしくその準備にかかりきりで、今まではさらに時間をかけて公開までこぎつけることはなかなか困難でした。

しかし、篝火12にて機械的なシーディングにかなり見通しが立ってきており、事前準備として公開する準備が整いました。そこで、次に私がシーディング作業を行う大会であるウメブラSP11用のシーディング参考資料となる補正JJPRを公開いたします。

https://smashrating.web.app/pr/jpr/umebura-sp-11

残る課題

残る大きな課題は古豪と海外大会結果(海外勢含む)の機械化です。

古豪の考慮については当面は補正JJPRの対象期間を拡大することが限度かなと考えています。少なくとも前作スマブラforの大会結果を考慮するのはやりすぎ(同意が得られない)でしょう。また今作はコロナ禍という大きな大会ブランク期間があります。日本の競技シーンもその期間あたりから多くの大会がstartggに移行するなど変化がありました*6。大会に出場する選手の顔ぶれも大きく変わりました。上記のウメブラSP11用補正JJPRでは、物理的なデータ取得の困難さと環境の変化を鑑みて、通常のJJPRより期間は広げて新型コロナウイルスによる最後の緊急事態宣言解除の2021年の10月1日以降の大会を対象としています。

海外大会結果の機械化については LumiRankの大会ティアの計算方法に対してのギモン - jak_amano’s diary の記事にもまとめた通り、世界の他地域とも統一的に比較できるような指標を検討中なため、そちらをうまく組み込んでいく予定です。

*1:これについてはもうちょっと意見を探っていきたいと考えています

*2:大域最適解を求めるのは計算量など現実的ではないと判断しました

*3:念の為にHarukiさんのブログ記事を再掲しておきます

「番狂わせ」の大きさをいい感じに数値化するSeed Performance Rating (SPR) とUpset Factor (UF)の紹介と感想|Haruki

*4:もちろん、シーディングにはSPR以外の観点もありますが、あくまで定量的に比較するためにここではSPRからに限定して分析します

*5:ちなみに以前の記事はTOP33~512にしていたのですが、33から含めると想定したよりも個人の成績が大きく影響してしまっていたので今回はTOP129~TOP512に変更させていただきました

*6:JJPRではstartggで開催された大会結果しか考慮できていません

LumiRankの大会ティアの計算方法に対してのギモン

はじめに

史上最高レベルの大会の1つと目された篝火12が終わりました。

今のLumiRank基準について過去に遡った再計算も含めると篝火12を超えるような規模の大会があります。その大会はなんでしょうか?

答えはGenesis6です。

そんなにすごい大会だったGenesis6はどういうメンバーが出場していたのでしょうか。

Liquipedia Smash Wikiより

たしかに上位選手が集結しているすごい大会であることは間違いありません。しかし、日本勢の数が多くはないようです。多くの日本勢がランクインしている現在のLumiRankから振り返ると、当時の日本は過小評価されていたという意見もあります。直前に行われたウメブラSP2・スマバトSP1を優勝したザクレイ選手、ウメブラSP1優勝・ウメブラSP2準優勝のしゅーとん選手という日本最強格の二人は遠征していますが、北米以外のトップ選手は8名と少し物足りなくはあります。

LumiRank大会ティアの計算方法

Genesis6が篝火12を上回る大会ポイントである理由にはLumiRankの大会ティアの計算方法が影響しています。Genesis6自体の大会ティアの細かな計算は公開されていないのですが、最近の大会であるマエスマ'GRAND WARSとLVL UP EXPO 2024を比較する際にRosebloomが大会ティアの計算方法をわかりやすいグラフにまとめてくれています。

LumiRankの大会ティアは主に参加者数(Entrant Values=EV)・直近の世界ランキングポイント(現在はLumiRank)=WR・地域ランキングポイント(Power Ranking Values=PR)・Hidden Boss=HB値の4つのポイントの合計で構成され、さらに一定ポイントを超えた瞬間にティアが変わる仕組み*1となっています。結論から申し上げると、このうちWRとPRは過去のランキングの精度に依存してしまうため、違和感が生じていると考えられます。

細かいデータはすべてスプレッドシートで管理されています。今後はこちらを参考にしながら進めますので、別タブなどで開きながらお読みください。

LumiRank 2024 TTS (Public) - Google スプレッドシート

参加者数ポイント=EV

EVはその名の通り、基本的には参加者数です。ただし、競技人口が少ないと思われる地域では多くの参加者を集めることは難しいので一定の倍率がかかります。その地域倍率=RMは上記スプレッドシートのRegion Multipliersシートにまとめられています。例えば日本では東北や四国で開催された大会は参加者数×3倍の参加者数ポイントとなります。

世界ランキングポイント=WR

WRは直近の世界ランキングポイントです。Player Valuesシートの左端に参照されている世界ランキングとそれによる選手ポイントが記載されています。

LumiRank 2024 TTS (Public) - Google スプレッドシート

直前の世界ランキングでの順位から、主に5人ずつもしくは10人ずつの順位ごとに選手ポイントが決まります。2023年以前はLumiRankが存在しなかったため、最新のOrionRankやPGRなど他の世界ランキングが参照されていました。

ここで問題なのは、LumiRankでは各選手ごとにポイントが計算されているにも関わらず、それとは無関係な区切りで選手ポイントが変わっていること*2です(以前に 大型大会のシーディングについてのこの一年の思考 - jak_amano’s diary の記事でも指摘させていただきました)。

地域ランキングポイント=PR

PRは各地方のランキングです。これも上記スプレッドシートのPlayer Valuesシートにあります。しかし、こちらも同様に正確性に欠けています。我々に馴染み深い日本のPRに絞って見ていきましょう。黒く塗りつぶされているところはWRやHBでもっと高いポイント値があることを証明されている選手です。

LumiRankに参照されている日本のPR一覧

各PRでTOP5の選手がポイント対象となっているのですが、全選手が50ptの地域と50pt~10ptまで幅のある地域があります。これは上記のEVでも参照されていた地域倍率=RMが1倍の地域とそれ以外の地域で分かれているものと思われます。しかしRMの決定方法も不明なため、(WRやHBで上書きされてはいるものの)中部よりも九州のPRのほうがポイントが高いという違和感のある状態になっています*3*4

さらに、参照されているPRもバラバラなデータで、東北は最新の2024年のデータが参照されている一方で、四国は2022年のデータから更新されていなかったりします*5

またWRと同様にTOP5で区切られている理由やその数字の根拠がないこと、加えて該当地域の競技レベルを全く考慮せずに*6一律にポイントを与えている点も疑問です。

Hidden Bossポイント=HB

HBは古かったり不正確であったりする選手ポイントを補正するために用意されている仕組みですが、それゆえ今もっともLumiRankについて議論を呼んでいる理由でもあります。上記の仕組みでまず大会ティアを計算し、そのティアで一定以上の順位になった選手にはポイントが与えられます。

Qualification & Hidden Boss Valuesシートから一部抜粋

この仕組みにより、WRやPRの仕組みから漏れていた強豪選手でも大きな大会で目覚ましい結果を残すと高く評価されます。ただし、このポイント付与はシーズン開始初期に強豪選手を見逃していたという"補正"扱いとなるため、すでに終えている大会のティアについても再計算が行われます。そのため、HBポイントの付与→大会ティアの再計算→ティア変更によるHBポイント付与(または再計算)→大会ティアの再計算という循環が起きてしまいます。また1大会で上振れるだけでHB扱いとなるため、アップセットやDQのような波乱の影響を受けやすいです(この点も 大型大会のシーディングについてのこの一年の思考 - jak_amano’s diary 指摘済み)。大会ティアポイントがギリギリの境目にあるときはわずかな選手ポイントの変化でティアが急に変化し、HBも変わってしまうことがさらに悪影響となっています。

こうなるとHBの仕組みをなくしてもいいのではと考えてしまうのですが、2019年にMaister選手が活躍したことからメキシコの競技シーンが再評価されたことで価値が実証されており難しいところです。

4つの指標の総合としてのLumiRank大会ティアの問題点

個々の指標の説明をしつつ、それぞれの中でも課題があることはわかりました。ここで改めてRosebloomの画像を振り返りましょう。

これはあくまで2大会での例ですが、北米と日本のよくみる割合となっています。特に北米では過去のランキング結果であるWRとPRの合計がポイントの8割ほどを占めるため、大会ティアの計算精度自体が過去のランキングの正確性に大きく依存します。日本ではHBが比較的大きく見えますが、これにはWRやPRよりもHBが高くなった場合も含まれるため、実際にはやはり過去のランキング依存度は低くありません。このような過去への高い依存度では、競技人口や大会が増え続け最上位とその他のプレイヤーのスキルレベルが急接近しつつある現在のシーンを適切に評価できているのかは疑問です。

LumiRankの大会ティアが適切に計算できていないと考えられる具体例

計算方法の根拠が弱く、大会ティアに疑問があることはわかりましたが、実際にどのような課題があるのでしょうか。一番の問題は、大会が過密な地域でWRやPR外の選手は実力があってもHBにならない限り一般人と同じ1ptになってしまう、ということにあります。

そのような大会例として神宮杯1をご紹介します。

https://twitter.com/Pupa315/status/1775864658647527467 より引用

神宮杯1のLumiRankによる大会ティア計算

PUPAさんがシードをまとめてくださっているように多数の強豪選手が参加したのですが、LumiRankの大会ティア計算で選手ポイントがある扱いとなっているのはわずか8名です*7私見では最低でもBティアはある大会だと考えます。

LumiRankが現行の大会ティア計算方式を採用し続けるならば、このように最上位と言われるような選手でなくても適切にスキルレベルを評価するような仕組みの整備は急務だと言わざるを得ません。

まとめ

LumiRankの主に大会ティア計算について仕組みを解説しつつ、問題点を指摘させていただきました。

見方を変えると、LumiRankの大会ティアは、過去の対戦戦績という客観的なデータそのものではなく、過去のランキングという主観性が入り込む余地のあるデータを用いていることで、最新の結果にも歪みが生じているのではないかと考えられます。

私自身も上記の課題を踏まえてLumiRankに代わる国際標準的な大会ティア計算方式を制作しなければと考えていますが、なかなか困難な作業となるため、あまり期待せずお待ちいただければと思います。

*1:数学的な表現をするならば離散的

*2:つまり選手ポイントも離散的であるということ

*3:実際にJJPRで比較してみてももちろん中部の選手のほうが順位が上です

*4:推測にはなってしまいますが、九州のRMが低いのはレベルの高い九龍が高頻度で開催されているためにレベルの高い地域とみなされていることにありそうです

*5:そもそも四国住みでない選手も多数ランクインしています

*6:仮にRMで考慮しているとしても、遠征勢の多い九龍を前提に九州のRMが決まっていたりするので正確性は低そうです

*7:しかもDELTA8の後に計算しているためラリックス選手の選手ポイントが上がっていることにも注意が必要です