Discordのチーム分けをBotで自動化 - Monvokeカスタムマッチ
Monvokeの/customは、人数が揃った瞬間に参加者をチームAとチームBへ振り分けます。振り分けにはサーバー内で蓄積したレートを使うため、実力が片側へ偏りにくくなります。誰をどちらに入れるかを毎回考える工程は、募集の中で終わっています。
手動でチーム分けをすると起きること
参加者を募ってから対戦を始めるまでの間に、誰かがチームを決める作業を挟む必要があります。たとえば10人で5対5を組むなら、各自の強さを見ながら手で振り分け、2戦目からは前回の結果も踏まえて組み直すことになります。記録を残していなければ、頼れるのは参加者の記憶だけです。
/customで立てると、人数が揃った時点でチーム分けまで終わる
/customはカスタムマッチ専用の募集コマンドです。参加者がボタンで参加する流れは、通常の募集コマンド/invokeと同じですが、指定した人数が揃うと、Monvokeが自動でチームA・チームBに振り分けた状態で募集が完了します。振り分け作業そのものを募集者が行う必要はありません。
サーバーに複数のレーティングタイプを設定している場合は、rating_typeパラメータでどのタイプを対戦に使うか選べます。
対称マッチと非対称マッチでチーム分けの決め方が違う
/customには対称マッチと非対称マッチの2種類があり、チームの決め方も異なります。
| マッチ形式 | チーム分けの基準 |
|---|---|
| 対称マッチ | レートの高い順に交互割り当て |
| 非対称マッチ(1v4) | ランダムシャッフル |
| 非対称マッチ(2v8) | ランダムシャッフル |
対称マッチはFPSやMOBAのようにチーム同士が対等な条件で戦うゲームを想定しています。参加者をレートの高い順に並べ、チームA・チームBへ交互に割り当てることで、チーム間のレート差が縮まるようにしています。
非対称マッチはDead by Daylightのようにキラーとサバイバーで役割が異なるゲーム向けで、asymmetricパラメータで1v4か2v8を選びます。役割そのものが違うため、レートでは比較できず、割り当てはランダムシャッフルで決まります。募集人数の入力は不要で、人数は固定です。
試合前ならチームを組み替えられる
チーム分けが終わったあと、対戦を始める前であれば募集メッセージから編成を組み替えられます。
- 「チームを移動」ボタン: 参加者本人が押すと、自分だけ反対のチームへ移動します
- 「シャッフル」ボタン: 募集者が押すと、チーム分けを最初からやり直します
どちらも対称マッチ・非対称マッチの両方で使えます。ただし人数が揃ったあとは、募集中に使えたタイトルや説明の変更メニューは表示されなくなり、編成の調整はこの2つのボタンだけで行うことになります。
勝敗を報告すると、レートに反映される
対戦が終わったら、募集者は募集メッセージから勝敗を報告します。「チームAの勝利」「チームBの勝利」といった選択肢から選ぶと、参加者全員のレートが自動で更新されます。回線落ちなどで試合が成立しなかった場合は、無効試合として報告することもできます。無効試合ではレートは変動せず、対戦数の記録だけが残ります。
レートの計算方法とレートランキングの見方は、別記事にまとめています。