Necromakeycon-ネクロマキコン-

唐揚げを揚げつつ横スマを振ります。

「braacket」でトーナメントからランキング/総当り表を作成する

神奈川スマブラ対戦会クロブラ主宰のクロマキバレットです。

昨年「KurobraPowerRanking2020」という企画をやりまして、braacketというサイトで1年間のクロブラの大会の集計を行いました。

braacketがどのようなサイトなのか、使い方と合わせて説明したいと思います。

 

 

braacketとは

このサイトは「smash.gg」や「challonge」などのトーナメントのURL情報を入力することで、登録したトーナメントの結果から個人がどのくらい強いかをレートとして数値化して表示したり、誰と当たって何回勝ったという総当り表でデータを集積できるサイトになっています。

 

正直オフ大会っていう場では、トーナメントごとに順位として結果は出るものの、凄まじく組み合わせが悪くて早期敗退したり、周りがめちゃくちゃ強い人ばかりで一瞬で終わってしまったけど、自分が実際どのくらいの実力なのかよくわからない…みたいに思うことってあると思います。

自分は普段トーナメントに参加しないので、たまにトナメ参加する際は毎回最速敗退してます。実際下から数えたほうが早いぐらいの実力の人たちって、シードがない限りまずはTOP8に入るような強い人と当たることになります(トーナメントの組み合わせの構造上仕方がないんですが)。言い方は悪いかもしれませんが、実力差がありすぎて負けて当然の状態です。
ダブルエリミネーション形式でも、その後はどこかで1回負けたらイベントは終了です。勝ち上がるには強くなるしか無いんですが、強くなる過程でも即敗退していると自分の実力がどのくらいなのか、誰々には勝ったけどあの人はどのくらい強いのか…とか判断する基準は結構難しいかと思います。

 

そこで、活用できるのが「braacket.com」です。

大会結果を集計してくれるので、データで自分の順位や弱点などが判断しやすくなるかと思います。

 

「集計」と言われてもなんのことやらと思うかもしれないので実際の例を貼ります。

braacket.com

 

画像で貼るとこんな感じです。

f:id:chromakeybullet:20210507231629j:plain

 

反映した左下に「RANKING」とあるように、複数のトーナメントからなる「リーグ」で集計されたランキングが表示されます。

 

プレイヤー名の横には1900とか1500とか見慣れた数字がありますね。

トーナメントの集計をすることで、レート値として結果を出すことができ、その数値で順位を決めることができます。

 

「LEAGUE RANKING」のタブをクリックすると、以下のように表示されます。

f:id:chromakeybullet:20210507235439j:plain

下部の「Rows」の部分を変えることで、1ページの表示プレイヤー数を20-50-100-200…と変えることができます。

 

また、プレイヤー名のところを選択すると、プレイヤー個人の戦績を見ることができます。(クロブラスタッフで参加回数の多いあいばさんを参考にしました)

f:id:chromakeybullet:20210507235716j:plain

f:id:chromakeybullet:20210508000033j:plain

何月何日のこの大会に参加して誰々に負けた、誰々に勝った、何位だったというのが確認できるかと思います。

 

このようにデータとして積み上げていくことで、自分が今どのくらいの結果を残せているのか、過去から誰に勝てるようになってきたか、昔はどうだったか、などなど振り返ることができます。

 

また、このサイトのすごいところはレーティング計算してくれるだけでなく、全プレイヤーの総当り表が作成できることです。(超激推しポイント)

f:id:chromakeybullet:20210508041328j:plain

https://braacket.com/league/kurobra2020/head2head


プレイヤーが300人ほど登録されているので全部一気に閲覧っていうのはできませんが、これを見るだけでなんかすごいサイトなのはわかっていただけるかと思います。

 

それでは集計するまでの手順を追っていきましょう。

 

アカウント作成

それでは集計するためにまずはサイトを開きましょう。

https://braacket.com/

 

下記のような画面になっているかと思います。

f:id:chromakeybullet:20210508000840j:plain

リーグやトーナメントを作成・管理するにはアカウントが必要です。
なお、アカウントがなくても他の人が作成したリーグ、プレイヤーの結果等は閲覧可能なので、リーグを自分で作成したい人以外はアカウントを作成する必要はありません。

アカウントが未作成の方は中央の「Create an account」からアカウントを作成してください。

Username:表示名
Password:パスワード
Password confirmation:パスワード再入力
Email:メールアドレス
Country:自国名

 

を入力して「Create your account」で作成が可能です。

f:id:chromakeybullet:20210508001448j:plain

※国をアメリカに設定すると州の設定まで選べるようです。日本だと都道府県までは選択できませんでした。

 

ログインができるようになると、リーグ、トーナメントの管理ができるようになります。

 

ログインするとこんな感じ。

f:id:chromakeybullet:20210508001805j:plain

既にリーグ作成済みなので、中央青ボタンの「League」に1アイテム、「Tournament」に8アイテムと表示されているのがわかります。

 

 

リーグ(League)を作ろう

トーナメントを集計するには「リーグ」をまず作成します。

これは「クロブラパワーランキング2020」のような「トーナメントをまとめる枠」を作るイメージです。

作成したリーグに、smash.ggやchallongeといったトーナメントサイトを紐付けて行く感じになります。

 

 

ではトップページ一番上の「League」と書かれたリンクをクリックしてみましょう。

 

リーグマネージャーが表示されます。

f:id:chromakeybullet:20210508002811j:plain

上の画像の赤枠を選択することで、他のリーグやプレイヤーの検索、リーグの作成が行なえます。

ではリーグを作成するので赤枠一番右の「League Create」を選択します。

 

リーグの作成画面に遷移します。

f:id:chromakeybullet:20210508003022j:plain

下記を入力します。

STARTUP
Name:リーグの名前
Short URL:braacket上のURL

GENERAL
Country:国
Game:ゲームタイトル *1
Description:説明(あれば)

DASHBOARD
初期表示する順位の表示数を選択できます。多すぎても困るので10~20でいいかと思います。

PRIVACY

表示範囲を公開(Public)/個人のみ(Private)にするかを設定できます。

「Admins」ではリーグを管理することができるユーザを指定できます。
例えば複数の大会のトーナメントを1つのリーグに入れて管理する場合などに使用できます。

Users can link or unlink their account with a league player
チェックを入れると、braacket上でユーザー登録しているプレイヤーが、リーグに登録しているプレイヤーとアカウントの紐付けができるようになります。

Users linked with a player can edit these settings
プレイヤーとしてリンクされているユーザーがデータを編集できるようになります。
具体的に言うと、登録されているユーザー情報(国、使用キャラ等)をプレイヤー側から編集できます。上記のプレイヤーとのアカウントの紐付けを行った上で行う必要があります。

 

入力できたら左下の「Save League」を選択します。

リーグが作成できました。

f:id:chromakeybullet:20210508005508j:plain

 

リーグにトーナメントを紐付けよう

続いて、リーグにトーナメントを紐付けます。

Braacket.com上でトーナメントも管理できるようなのですが、国内では一般的ではないです。
スマブラに関して言うと、オフ大会では一般的にsmash.ggやchallongeで進行しているかと思います。

 

そこで、外部で作ったトーナメントを入力して反映させてみます。

「League Tournaments」のタブを押し、「import from others APIs」を選択します。

f:id:chromakeybullet:20210508010030j:plain

 

Challonge、smash.gg、Braacketのトーナメントをインポートできます。

f:id:chromakeybullet:20210508011212j:plain

 

challongeのトーナメント情報を入力

challongeの場合、事前作業として「APIキー」の取得が必要になります。

まずはchallongeにアクセスします。 

challonge.com

 

challongeのアカウントでログイン後、設定画面で「デベロッパAPI」を選択します。
APIキーの発行」があるので選択してください。

f:id:chromakeybullet:20210508012700j:plain

 ※キーはアカウントの操作が可能になってしまうので、大切に保管してください。

 

APIキーの取得が終わったら、braacketに戻ります。
「import from others APIs」「Challonge.com」以下のような表示となります。

f:id:chromakeybullet:20210508011539j:plain

 

以下の項目に沿って内容を入れていきます。

CHALLONGE.COM INFORMATION
API Key:先程取得したAPIキーを入力

Tournament ID:challonge.com/TOURNAMENT_ID ←この部分

Community subdomain:challongeのコミュニティ限定のトーナメントに設定されている場合サブドメインが必要となります。

Organization IDORGANIZATION_ID.challonge.com/TOURNAMENT_ID
大会主催側になると出たりするんでしょうか…?ちょっとわかりませんが普通は見えない状態の設定になっている場合はORGANIZATION_IDがリンクに反映されるようです。
そのような場合には設定が必須です。

 

IMPORT OPTIONS

Do not import matches with a score at -1
DQ等でスコアが「-1」された処理についてインポート有無を設定できます。
チェックつけるとDQ試合はインポートしません。

Do not import draws
引き分けの場合のインポート有無を設定できます。
チェックをつけると引き分けの試合はインポートしません。

LEAGUE

Select a league:設定したいリーグを選択します。

Propose this tournament to a league:管理者ではないリーグにトーナメントを追加提案します。選択したリーグにトーナメントを追加する場合空欄で指定します。

Exclude from ranking and statistics:チェックをオンにするとランキングと統計から除外します。

Weight:リーグにトーナメントを登録する際のランキングへの比重を決めることができます。
例えば、リーグへは複数のトーナメントを登録しますが、3000人のトーナメントで1位の人と、8人のトーナメントで1位の人が同じレベルにならないようにパーセンテージで重みを付けていく…と考えてもらえればと思います。
32人トーナメントがメインとなるリーグでは32人を100%、参加人数が増えるたびに120%、150%…と比重を増やしていくとよいのかなと思います。

PRIVACY

 

リーグ作成時と同じなので説明は割愛します。

 

入力したら一番下の青ボタンの
「Save & Show tournament」
「Save & import players into league」

のどちらかで保存をするんですが、ここは右側の「Save & import players into league」を選択してください。(後ほど解説します)

 

smash.ggのトーナメント情報を入力

基本的にsmash.ggもchallongeと同じですが、URL入力の部分が若干異なります。

というのも、smash.ggは1大会に複数のトーナメントを紐付けることができるので、どの大会のどのトーナメントなのかを指定する必要がある点がchallongeとの差異になります。

f:id:chromakeybullet:20210508034959j:plain

Tournament IDsmash.gg/tournament/TOURNAMENT_ID
smash.ggは大会名から自動的にURLを生成するため、日本語の大会であれば基本的に数字の部分だけ勝手に取得するだけになってしまいます。
例としてクロブラ24のURLは以下のようになっていますが、

https://smash.gg/tournament/24-1/details

この「24-1」の部分がトーナメントIDとなります。

 

Event IDsmash.gg/tournament/TOURNAMENT_ID/events/EVENT_ID

EventIDも同じく、自動生成となっているため「スマブラSP」の「SP」部分だけ抜き出されていることが多いです。
例でいうと、下記URLの「sp」の部分がイベントIDに当たります。

https://smash.gg/tournament/24-1/event/sp/overview

 

その他の設定内容についてはchallongeの設定内容と同じのため説明を省きます。

 

プレイヤーのリーグへの紐付け

braacketではトーナメント情報を登録する際に、同時にプレイヤー情報も登録します。
リーグに参加しているプレイヤーを紐付けることで「リーグに累計何人のプレイヤーが参加しているか」がわかりますし、「このプレイヤーは別のトーナメントでは違う名義で参加しているのでスコアを統合する」という設定もできます。

 

初回登録の場合

先ほどのトーナメント別サイトからデータをインポートした際に「Save & import players into league」を選択していると、下記のような表示になるかと思います。

f:id:chromakeybullet:20210508020853j:plain

一度に全員登録を行うため、下部の「Rows」より参加人数より多い数値を選択しておくと楽になります。

f:id:chromakeybullet:20210508021540j:plain

 

今回リーグに他のトーナメントが紐付いていないため、何も考えず「Select all」を選択して参加者全員をリーグに紐付けます。

f:id:chromakeybullet:20210508021715j:plain

 

インポート時のオプションとして下記が設定できます。
特にchallongeでは取得できるものもないのですが、smashggで試合にデータが紐付けられている場合はデータを取ってくることが可能です。
Import options
Get account:チェックでプレイヤーのアカウントを取得
Get country and country region:チェックでプレイヤーの国や地域を取得
Get characters:チェックでプレイヤーの使用キャラクターを取得
Get external links:チェックで外部リンクを取得*2

とりあえず取得して損はないので、全チェックしていてもいいかと思います。

 

終わったら「Save & reload」

 

これでリーグにトーナメントを登録することができました。

f:id:chromakeybullet:20210508023054j:plain

 

2回目以降の登録の場合

続いて2回目に別のトーナメントを登録してみます。

手順は同様に、プレイヤーのインポートを行います。

 

すると、既にリーグに登録済みのプレイヤーはスコアが統合される予定のプレイヤー名が表示される状態となります。

また、リーグに名前のないプレイヤーは「New league player」として表示されます。

f:id:chromakeybullet:20210508023842j:plain

ここで注意したいのが、同名もしくは名前がかなり似たプレイヤーは自動的に統合予定として表示されてしまいます。
そのままSaveしてしまうと、プレイヤーのスコアが統合されてしまうので注意してください。*3

 

また、全く別名義だけど同じプレイヤー(例:「・・・はい」さんと「けんころちょ」さん)が居た場合の統合も可能です。

「search players」をクリックすると、既に登録済みのプレイヤーのリストが表示されます。

f:id:chromakeybullet:20210508024524j:plain

ここから統合したい名前のプレイヤーを選択することでスコアの統合が可能です。

 

確認して問題なければ「Save & reload」で更新します。

f:id:chromakeybullet:20210508025016j:plain

2つ目のトーナメントも登録されました。

「Players」のカッコ内の数値が反映したプレイヤー数なので、登録漏れがないことを確認してください。

 

 

あとからプレイヤー設定を変更する

実はあの人、前の大会では別名義で名前が違う人だった!みたいなのも後々発覚したりすると思うんですが、一度トーナメントを登録してしまえばプレイヤーの登録し直し、スコアの登録し直しなどは簡単にできるので共有します。

 

League Tournamentsのトーナメントリストより、修正したいトーナメントの「︙」ボタンをクリックでメニューが表示されます。

f:id:chromakeybullet:20210508025426j:plain

Link players:紐付けしているプレイヤーの登録情報を修正します

Remove:トーナメントを削除します

Settings:トーナメントの設定を変更します

 

もし紐付けを間違えてしまった、等の場合もここから変更ができます。

 

リーグのランキングの設定

さて、トーナメントは紐付けできたのでいよいよランキングの設定です。

「LEAGUE RANKING」タブより「+Add ranking system」を選択します。

f:id:chromakeybullet:20210508025829j:plain

 

以下のような表示が出てくるので入力していきます。

f:id:chromakeybullet:20210508030044j:plain

 

BASIC INFORMATION

Type:スコアの集計タイプを、Elo*4/Gliko*5/TrueSkill*6/True Skill Monthy Rebalanced/Point Defined By Algorithm/Point Defined Manually から選択ができます。
レーティングの手法については細かい説明を省きますが、気になる人は見てください。*7
ちなみにクロブラのランキング集計ではグリコレーティングで算出しています。

 

PERIOD

ランキングに反映できる期限を設定できます。期間外のトーナメントは登録されていてもランキングに反映されません。

ACTIVITY REQUIREMENT

ランキングに表示するプレイヤー要件を指定できます。
Minimum number of tournaments:ランキングに反映するために最低限参加しないといけない参加回数を指定できます。

Within last:最後に参加したトーナメント日でランキング除外を指定できます。

 

REBALANCING

期間を設定して、定期的にスコアを下げることで非アクティブユーザーへのバランス調整を行います。*8

Period:バランス調整を開始する期間を設定します。「Never」を選択で調整を行いません。

Strength:バランス調整時の影響力を決めます。値が大きいほど、大きくスコアを調整します。

 

CALCULATION

計算方式について。

Ranking based on the match score:チェックすると、例えばAvsBの試合が3-2となったときに、Aが3勝、Bが2勝として計算されます。
…と書いているのですが、これをチェックすると、負け試合も計算に入る関係か若干想定していた結果と異なる状態になり、順位が大きく変動してしまったためチェックは入れずにやる方が良いかもしれません。

今回は、ひとまずTypeだけグリコ、その他空欄で登録します。


入力し終わると以下のような表示となります。

 

f:id:chromakeybullet:20210508033201j:plain

赤字で「Update」が表示されているので選択。

アプデするかどうか聞かれるので「OK」を選択。

f:id:chromakeybullet:20210508033246j:plain

 

ランキング結果が表示されました。

f:id:chromakeybullet:20210508033402j:plain

これでランキングへの反映ができました。

 

総当り表について

さてランキングの反映ができたところで、HEAD 2 HEAD、日本語でいうと直接対決の総当り表が作成されます。

f:id:chromakeybullet:20210508033545j:plain

 

誰が誰に勝っていて、誰に負けていて、この人には一生勝ててないみたいな情報が浮かび上がってくるわけですね。

これは数回の大会ログであればあまり意味を成しませんが、集計をしまくればしまくるほどより濃い情報になってくるので、今後大会を開く運営陣にもシードをどうするかなどの判別材料として活きてきます。
現在クロブラは開催できない期間ですので、神奈川近隣の大会については集計してデータを積み上げていきたいと思っています。

 

終わりに

現在大きな大会が開けない以上、小規模大会が各地で開催されているかと思います。

しかし、小規模大会は対戦数がどうしても少なくなってしまう関係で個人ごとの力量を測るのが難しい状態かなと思っています。

集計することで大会主宰陣的にもシードポイントの反映をどうするかの指標にもなり、プレイヤー的にもスコアが結果として出てくるので、直接対戦していなくても「誰々と同じぐらい」とか「次は自分より上の人と戦える」などの指標になるのかなと思いました。

地域ごとでbraacketでランキングを作ってみるのもいいかなと思うので、是非この機会に試していただければと思います。

もし作成に当たり不明点等あればお手伝いしますのでTwitterまでお声がけください。

 

ちなみに神奈川のスマブラSPの大会についてはクロマキの方で現在作成中で、下記でまとめていってます。challonge/smash.ggのURLさえ貰えれば作成できるので、反映希望の方は連絡いただけると助かります。

braacket.com

 

*1:記載がありますがゲームタイトルがない場合、運営に連絡すれば追加してもらえそうです。スマブラはもちろん、鉄拳7、ストVなどの格ゲー、Dota2、League of LegendsやマリオカートポケモンGO(???)など様々あるようです。

*2:外部リンクはsmashggでプレイヤーの試合に配信台が割り当てられていた場合、配信先のリンクが取得できる…とかだと思います。

*3:あとから登録し直しで統合解除することも可能です

*4:イロレーティング - Wikipedia

*5:グリコレーティング - Wikipedia

*6:複数人のチーム競技でも使用できるレーティングシステム

*7:レートの1500という数字は大体このへんから来ています

*8:過去、JPRでもこのスタイル採用していたかと思います