Scoreboards Documentation

Everything you need to create and manage Discord leaderboards

  1. ボットを追加する — トップページの招待リンクから、ScoreboardsをDiscordサーバーに招待します。
  2. セットアップウィザードを実行する/get startedで短いフォームが開きます。名前とタイプ、必要ならログチャンネルを選ぶだけで、ボードがそのチャンネルに投稿されます。Classic、Highscore、Timeのボードには最初からサンプルの記録が入っていて、動きをすぐ確かめられます。実際のスコアが1件でも入れば消えます。
  3. ロールを決めるダッシュボードを開いて、<arg>bot permission</arg>ロール(リーダーボードを管理できる人)と<arg>validator</arg>ロール(送信を承認できる人)を設定します。
  4. 最初のリーダーボードを作る/scoreboard createでリーダーボードを用意します。名前と種類を選ぶと、残りは開くフォームで設定できます。
  5. チャンネルに出す — チャンネルで/scoreboard showを実行すると、送信ボタンとページ送り付きのリーダーボードが投稿されます。

/scoreboard createでリーダーボードを作るときは、次の6種類から選びます。

Classic

合計に加算・減算していく方式です。ポイントを積み上げていく競技に向いています。

Highscore

各プレイヤーの自己ベストだけを保存します。より良い記録が出れば、古い記録は自動で置き換わります。

Time (Speedrun)

タイムは00:00:00(1/100秒)か00:00:000(ミリ秒)で送信します。どちらで表示するかはダッシュボードの設定で決まり、新しいボードは既定でミリ秒です。最速勝ちなら低い順、長く続けたほうが勝ちなら高い順に並べてください。

ELO - Ranked

本格的なELOレーティングです。1v1でも2v2〜8v8のチーム戦でも使えます。マッチ結果を送信すると、参加者全員のレーティングが自動で更新されます。

Rating

画像を投稿して、コミュニティが1〜10の星で評価します。平均がスコアになります。アートコンテストやお題チャレンジにぴったりです。

League

1試合ごとに勝ち点を与える方式で、サッカーやバスケ、FIFAなどに向いています。勝ち・引き分け・負けの点数(既定は3/1/0)と、試合のスコア(3-1など)を設定できます。

リーダーボードの管理

コマンド説明必要な権限
/scoreboard create新しいリーダーボードを作ります — 名前と種類を選び、並び順などはフォームで設定管理者 / ボット操作ロール
/scoreboard showいまのチャンネルに、ボタン付きのリーダーボードを表示します管理者 / ボット操作ロール
/scoreboard settingsダッシュボードを開いて、このボードの設定(並び順、公開範囲、見出し、表示モード、ELO設定など)を変更します管理者 / ボット操作ロール
/scoreboard deleteリーダーボードと、そのデータをすべて完全に削除します(確認が必要です)管理者 / ボット操作ロール
/scoreboard season endボードを凍結してシーズンを終了 — 順位は永続的な記録として残り、ダッシュボードから凍結解除すれば再開できます管理者 / ボット操作ロール
/importCSVファイルからスコアを取り込みます(他のボットや表計算ソフトからの移行用)管理者 / ボット操作ロール

スコアとマッチの送信

コマンド説明必要な権限
/submitどのリーダーボードにも送信できます。種類に応じて、次に必要な画面が開きます。スコアの入力(Classic / Highscore / Time)、プレイヤーと勝者の選択(ELO)、プレイヤーとスコアの選択(League)、名前の入力(Rating。画像はスラッシュコマンドに添付します)。チーム制のボードでは、各サイドのメンバー全員を選びます。全員
/setプレイヤーのスコアやELOレーティングを、手動で指定した値にします管理者 / ボット操作ロール
/adjustプレイヤーのスコアに値を足し引きします(マイナスの値で減らせます)管理者 / ボット操作ロール
/player removeリーダーボードからプレイヤーを外します管理者 / ボット操作ロール

設定

コマンド説明必要な権限
/get started初期設定用のセットアップウィザードを開きます管理者
/help対話形式のヘルプを開いて、すべてのトピックを確認できます全員

送信のしかたは2通りあります。

  • /submitを実行してリーダーボードを選びます。ボードの種類に合わせて、適切な画面が開きます。Classic / Highscore / Timeならスコアの入力、ELOならプレイヤーと勝者の選択、Leagueならプレイヤーとスコアの選択、Ratingなら名前の入力(画像はスラッシュコマンドに添付)です。チーム制のリーダーボードでは、1人だけでなく各サイドのメンバー全員を選びます。
  • 投稿されたリーダーボードのSubmitボタンからでも、同じ送信画面が開きます。

確認の流れ

  1. 送信された内容が、設定したログチャンネルに投稿されます(設定している場合)。
  2. 承認者か管理者がApproveまたはRejectを押します。
  3. 却下された場合は、送信した人にDMで理由が届きます。
  4. 承認されると、リーダーボードがすぐに更新されます。

自動承認

リーダーボードごとに、一定時間が過ぎた送信を自動で承認できます。オフ即時1時間3時間24時間3日7日から選べます。ELOのリーダーボードは、既定で24時間です。

スコアを取り消す

管理者と承認者は、承認済みのスコアをあとから取り消せます。送信のメッセージを右クリックして"Cancel Score/Match"を選ぶと、そのスコアの変更が元に戻ります。取り消しには理由の入力が必要です。

ELO - Rankedのリーダーボードは、ELOレーティングで実力どおりの順位をつけます。1v1でも、最大8人ずつのチーム戦でも使えます。

しくみ

  • 全員が同じ開始ELOからスタートします(既定は1200。変更できます)。
  • マッチの結果は、勝ち・負け・引き分けのいずれかです。
  • レーティングはKファクター32で計算されます。
  • 承認されると、参加者全員のレーティングが同時に更新されます。

チーム戦(2v2〜8v8)

ELOとLeagueのリーダーボードには、固定のチーム人数を設定できます。作成時に選ぶか、あとからダッシュボードのMatch formatで変更してください。3v3にしたリーダーボードでは毎回3人ずつで対戦し、順位はそれでもプレイヤー個人ごとにつきます。

ELOでは、各チームの期待勝率をチームの平均レーティングから計算し、その結果をチーム全員に同じだけ反映します。格上に勝てば、勝った側の全員が同じだけ上がるということです。Leagueでは、勝ったチームの全員に勝ちの点数が、負けたチームの全員に負けの点数が入ります。

マッチメイキングキュー(ベータ)

リーダーボードでキューのボタンを有効にしておくと、プレイヤーはそれを押してマッチメイキングに参加できます。まずはELOの近い相手を探し、見つからなければ範囲を少しずつ広げていきます。マッチが決まると専用のスレッドが作られ、結果を報告する投票ボタンが用意されます。5分たっても相手が見つからない場合は、キューから自動で外れます。

チーム制のリーダーボードでは、両サイドが埋まる人数(3v3なら6人)がそろうまで待ってから、平均レーティングができるだけ近くなるように2つのチームへ分けます。いちばん強い人といちばん弱い人は、自然と別のチームになります。全員が Readyを押す必要があり、押さない人が出たときは、その人だけ外れて、残りは順番を保ったままキューへ戻ります。

チームごとに専用のボイスチャンネルが用意されるので、相手に聞かれずに作戦を話せます。見えるのも入れるのも自分のチームのチャンネルだけです。マッチが確定すると、どちらのチャンネルも消えます。結果は両方のチームで過半数が同じ結果に投票した時点で確定するので(3v3なら各チーム2人)、片方のチームだけで勝ちを宣言することはできません。食い違ったときは異議として扱われ、承認者が判断します。

キューはもう ELO 専用ではありません。League のリーダーボードでも有効にできます。League の勝ち点は累計であって実力の推定値ではないため、League のボードは 1 試合あたりの勝ち点でマッチングします。つまり、たくさん遊ぶだけではキュー内の位置は変わりません。

固定チーム

チーム人数を決めたELOやLeagueのリーダーボードは、fixed teamsモードでも動かせます(ダッシュボードのMatch formatの隣で切り替えます)。名前つきの固定チームは、リーダーボードのTeam sign-upボタンから一度だけ登録します。チーム名を決めてメンバーを選ぶ形で、チーム人数に加えて控えを2人まで入れられます。以降、リーダーボードはチームそのものを順位づけします。ELOのボードならチームごとにレーティングを持ち、格上に勝つほど大きく上がります。Leagueのボードなら、本物のリーグ戦と同じように勝ち点順に並びます。Leagueの固定チームは/submitで試合を記録します。

メンバーの誰かがQueueを押すと、チーム全員がキューに入り、全員にDMが届きます。マッチングはチームのレーティングどうしで組み合わせ、レディチェックはそのまま出場メンバーの選抜も兼ねます。各チームで先にReadyを押したチーム人数分の人が出場し、残りはそのマッチを見送ります。結果の投票は出場した人が行い、こちらも各チームの過半数で確定します。

Leagueのリーダーボードは、試合を重ねて貯めた勝ち点でプレイヤーを順位づけします。サッカー、バスケ、フットサル、ホッケーのようなスポーツや、シーズンの順位表がすべてを語る1v1・チーム戦にぴったりの形式です。

しくみ

  • /submitで試合を送信すると、両サイドと、それぞれのスコア(3と1など)を聞かれます。
  • スコアが高いほうが勝ち、同点なら引き分けです。
  • 勝った側にpoints_win、負けた側にpoints_loss、引き分けなら両者にpoints_drawが入ります。チーム制のリーグでは、そのサイドの全員に同じ点数が入ります。
  • リーダーボードは合計勝ち点で並び、勝ち・引き分け・負けの数はそれぞれ別に記録されます。

勝ち点の初期値

新しいリーグの初期値は3 / 1 / 0です(1994年以降のFIFA標準)。3つの値はどれも、ダッシュボードからリーダーボードごとに変更できます。ホッケーなら2 / 1 / 0、ラグビーなら4 / 2 / 0のように、競技に合わせて自由に決めてください。

試合を送信する

Webサイトからは、リーダーボードを開いてSubmitを押し、両サイドと試合のスコアを入力します。Discordでは/submitで同じ入力画面が開きます。同じプレイヤーどうしの対戦や、マイナスのスコアは送信の時点で弾かれます。

チームで戦うリーグ

Leagueのリーダーボードには、2v2から8v8まで固定のチーム人数を設定できます。作成時でも、あとからダッシュボードのMatch formatからでも変更できます。順位はプレイヤー個人ごとのままで、勝ったサイドの全員に勝ちの点数、負けたサイドの全員に負けの点数が入り、試合のスコアはそれぞれの得点・失点として記録されます。

チームそのものが並ぶ、本物のリーグ表にしたいですか?Match formatの隣にあるFixed teamsをオンにしてください。名前つきの固定チームがリーダーボードのTeam sign-upボタンから一度だけ登録され(控えは2人まで)、試合はチーム対チームでスコアとともに送信し、表はチームを勝ち点順に並べます。

確認と取り消し

Leagueの試合も、ELOのマッチと同じ確認の流れを通ります。承認者が1件ずつ承認または却下し、承認された時点で勝ち点が入ります。承認済みの試合はあとから取り消すこともでき、そのときは入った勝ち点がそのまま元に戻ります。

ELO と League のリーダーボードは、2 サイドである必要はありません。バトルロイヤルではマッチの全員が自分のために戦い — 3〜8 人 — それぞれの着順が結果になります。リーダーボードの作成時に ffa_players オプションで、あるいは後からダッシュボードの Match format で有効にできます。これはチーム戦と置き換わるもので、バトルロイヤルのリーダーボードにチームサイズや固定チームを併用することはできません。有効にしても影響を受けるのはこれからのマッチだけなので、すでに記録された内容はそのまま残ります。

結果の種類

結果ELOLeague
全員の着順 — 1 位から最下位まで✓ 可✓ 可
全員引き分け✓ 可✓ 可
勝者ひとり、ほかは順位なし— 不可✓ 可

勝者のみ、は League の方式です。League ではこれ以上のものは要りません。勝者が勝利ポイント、ほかは敗北ポイント、それだけです。レーティングはそこまで大らかにはできません。敗者に順位がなければ、正直に言えるのは「全員が引き分けた」ということだけで、その結果、戦績上は負けのマッチで低レーティングのプレイヤーがレートを得てしまいます。だから ELO のバトルロイヤルは全員の着順か、実際に起きた全員引き分けを求めます。

結果を報告する

バトルロイヤルのリーダーボードには Submit result の代わりに Report result ボタンが付きます。まず参加した全員を選びます — 3 人からロビー人数まで選べるので、6 人ボードでも 5 人しか集まらなかった夜を記録できます。続いて結果を設定します。League のボードは勝者を尋ね、同じメニューに 全員引き分け があり、全体を並べたいときは 順位をすべて設定 を使います。ELO のボードは最初から着順を尋ね、1 回の操作で 1 つの順位を決めていきます。押し間違えには 直前を取り消す、その隣に 全員引き分け ボタンがあります。送信ボタンは、そのボードが採点できる結果になるまでグレーのままです。Discord でバトルロイヤルの結果を報告できるのはこのボタンだけです。表示されていない場合は、ダッシュボードの Discordでの表示 → Submitボタン で有効にするか、ウェブサイトのリーダーボードのページから報告してください。

そのあとは、バトルロイヤルもごく普通の送信です。承認待ちに入り、バリデーターが承認または却下し(設定した遅延の後に自動承認が行うこともあります)、承認時にレーティングとポイントが動きます。承認済みマッチを取り消すと、各プレイヤーには与えられた分がそのまま戻ります。

レーティングの計算

ELO のバトルロイヤルは、含まれるすべての一騎打ちを同時に採点したものとして扱われます。すべてのペアを比較し — 上位の着順が下位に勝ち、同着なら両者引き分け — その一つひとつを 1v1 と同じ期待勝率の計算で処理します。ですから、自分よりはるかに高いレーティングの相手より上で終えることは、最下位付近を上回るよりずっと大きな報酬になります。そのうえで K ファクターを対戦相手の人数で割ります。これが、技術的には 7 回の一騎打ちを戦っていても、バトルロイヤル 1 回の変動をおおよそ 1 マッチ分に保っている仕組みです。

全体はぴったりゼロサムです。失われた分がそのまま残りの取り分になり、最後の 1 ポイントまで一致します。同レーティングの 6 人が K=32 で +16、+10、+3、−3、−10、−16 になります。戦績は着順に従い、1 位は — 同着の 1 位も含めて — 勝ち、その下はすべて負け、全員引き分けは全員の引き分けとして記録されます。

League ボードの順位ポイント

League のバトルロイヤルは、順位ポイント表で全員に配点できます。F1 方式で、1 位に何点、2 位に何点、と最下位まで並べます。編集はダッシュボードの勝利・引き分け・敗北ポイントの下、バトルロイヤルを行う League のリーダーボードで行います。同着のプレイヤーはその共有した順位のポイントをそれぞれ受け取り、表の長さを超えて終えた人は最後の値を受け取り続けます。

この表が使われるのは全員に順位がついたときだけです。1 人でも順位なしが残ると — 勝者のみの報告でも、途中でやめた並べ方でも — 表はまったく使われず、1 位がボードの勝利ポイント、ほかは全員敗北ポイントになります。表を設定していない場合もこれと同じなので、表は任意です。全員引き分けは、表がどうであれ全員に引き分けポイントを支払います。

マッチメイキングキューのバトルロイヤル

キューボタンを有効にすると、バトルロイヤルのリーダーボードは個人を待機列に入れ、ちょうどロビー人数に達した瞬間に成立します — 6 人ボードなら 6 人で、5 人でも 7 人でもありません。バランスを取るサイドがないので、ロビーはキューが組める中でもっともレーティングの近い集団というだけです。それでも全員が Ready を押す必要があり、マッチには共有のボイスルームが 1 つ付きます。バトルロイヤルには、隠れる相手となる味方がいないからです。

結果は投票ではなく報告で決まります。投票ボタン 3 つでは 8 人の着順を表せないからです。ロビーの誰でもマッチのメッセージで結果を設定でき、ほかの人は 確認 を押します。参加者の過半数が同意した時点で確定し(3 人なら 2 人、8 人なら 5 人)、報告した本人がその 1 人目として数えられます。異議あり を押すとマッチはバリデーターに渡り、バリデーターが正しい結果を設定して自分で確認します。キューのマッチは専用スレッドで決着するため、承認待ちのキューは通りません。

Ratingのリーダーボードでは、メンバーが画像を投稿し、お互いの投稿を星で評価し合います。

しくみ

  • /submitで画像を送信します。画像はスラッシュコマンドに添付し、そのあと開く入力欄に名前を入れます。
  • 送信された画像は、設定したログチャンネルに評価用のドロップダウン付きで表示されます。
  • 誰でも1〜10の星で評価できます。評価の平均がスコアになります。
  • 投票はいつでも変えられます。1人につき、1つの投稿に1票までです。
  • リーダーボードは、平均評価の高い順に並びます。

Webサイトでの評価

Webサイトでは、投稿はEntriesタブに並びます。開くと画像が大きく表示され、星のボタンから評価できます。入れた票は、あとで開き直しても残っています。

Scoreboardsのサイトで、リーダーボードを誰が見られるかを決められます。

公開

サイト上で誰でも見られます。

限定公開

Discordサーバーのメンバーだけが見られます(ログインが必要です)。

プライベート

指定したDiscordロールを持つメンバーだけが見られます。

オフ

サイトにはまったく表示されません。

リーダーボードの順位に応じて、Discordのロールを自動で割り当てられます。たとえば上位3人に「Champion」、4〜10位に「Veteran」といった具合です。

  • ティアは、Webダッシュボードの各リーダーボードの設定から追加します。
  • ティアの決め方は3通りです。順位(1〜3位)、パーセンタイル(上位10%)、スコア(2000ポイント以上の全員)。1つのリーダーボードでは、すべてのティアが同じ基準を使います。
  • 各ティアには、既存のDiscordロールを自由に割り当てられます。
  • 順位が動くと、ロールも自動で付け外しされます。
  • Server Settings → Rolesで、Scoreboardsのロールを、割り当てるすべてのロールよりに置いてください。Discordでは、自分と同じかそれより上のロールをボットが操作できません。うまくいかないときは、ボットがリーダーボードのチャンネルに警告を投稿します。

すでに別の場所で大会を回していますか?/importにCSVファイルを渡せば、その中身でリーダーボードが埋まります。打ち直す必要はありません。

方法は2つあります。Discordなら/importを実行し、リーダーボードを選んでファイルを添付します。Webならダッシュボードを開いてリーダーボードを選び、Import from CSVを使ってください。個人用のリーダーボードにはDiscordサーバーがないので、こちらが入口になります。ファイルの形はどちらも同じで、1行に <arg>name,score</arg> と書きます。

name,score
Alex,120
"Cooney, EM",95
Sam,88
  • 見出し行は自動で判別して読み飛ばします。
  • 区切り文字はカンマ、セミコロン、タブのどれでも構いません。表計算ソフトの出力そのままで大丈夫です。
  • カンマを含む名前も、<arg>"Cooney, EM"</arg>のように引用符で囲めば使えます。
  • 名前がDiscordのユーザーIDなら、その行はそのメンバーと紐づき、表示名で並びます。それ以外は通常のエントリーになります。
  • 同じ名前が2回出てきた場合は、最後の値が残ります。直したファイルをもう一度取り込んでも問題ありません。
  • 読み取れなかった行は飛ばし、行番号を一覧で知らせます。残りはそのまま取り込まれるので、数行だけ直して実行し直せます。

タイムは<arg>mm:ss</arg>と<arg>hh:mm:ss</arg>に対応し、小数部も付けられます(<arg>1:30</arg>、<arg>1:12:44.081</arg>など)。数字だけの場合はミリ秒として読みます。コロンで区切った3つの数字は<arg>hours:minutes:seconds</arg>という意味になるので、1秒未満はドットのあとに書いてください。

上限は1ファイルにつき500行・100KBです。大きな書き出しは分けて取り込んでください。Image Ratingのリーダーボードは取り込めません。エントリーがスコアではなく、アップロードされた画像だからです。

シーズンを使うと、何も失わずに競争に区切りを付けられます。終了日時を設定する(またはダッシュボードから終了する)とボードが凍結され、表彰台が投稿されて順位は終了時のまま残ります。

  • リセットも削除もされません。凍結されたボードがそのシーズンの永続的な記録として、誰でも見られます。
  • 凍結中のボードは新しい送信・試合・投票を受け付けません。管理者はいつでも凍結解除できます。
  • すべてのボードタイプでシーズンを使えます。Image Rating も対象で、ブラインド投票のボードを凍結すると結果も公開されます。
  • 新しいシーズンを始めたいときは、新しいボードを作成し、凍結したボードは記録として残しましょう。

週間まとめは、毎週月曜日にリーダーボードのチャンネルへ短いまとめを投稿します。トップ3、その週いちばん順位を上げたプレイヤー、どれだけ遊ばれたかがわかります。直近1週間にスコアが3件以上あったボードだけが対象なので、静かなリーダーボードは静かなままです。まとめは/scoreboard settingsかWebのダッシュボードから、リーダーボードごとにオフにできます。