Blade Rondoのリモート対戦用Discord Botを作りました

Domina Games様より大好評販売中のボードゲームである『Blade Rondo』(ブレイドロンド)シリーズのリモート対戦を実現するための Discord botを作成しました。

github.com

以下はその経緯と説明です。使いたい方はgithubをご覧ください。

Botを作った経緯

Domina Games様より大好評販売中のボードゲームである『Blade Rondo』シリーズをご存知でしょうか。 このゲームは2人用の対戦カードゲームで、同梱の20種40枚の山札を用いて戦います。

ゲームの最初に各プレイヤーは山札から15枚ずつカードを受け取り、配布された中から7枚を選んで手札として対戦を行います。 自分の持っていない残り25枚のカードから相手の構成を予想し、最高の7枚をチョイスするプロセスと予想の答え合わせが非常に面白いゲームです。

しかしながら、感染症の流行する昨今では顔を合わせてゲームをする機会が減り、初期山札を共有するBlade Rondoシリーズは すぐには遊びにくいゲームとなってしまったように思います。

TCGのようなお互いにデッキを持ち寄ってできるゲームやDomina Games様から販売されている『Geminoa』では通話アプリを通じたリモート対戦が可能ですが、 まさかBlade Rondoで片方のプレイヤーが相手の分の15枚をめくって伝えるというわけにはいきません。ゲーム性が破綻してしまいます。

そこで、初期手札を配布するDiscordのbotを作って対戦をしやすくすることにしました。 お互いに同じ製品を所持しているという前提はありますが、持ってなかったら買ってもらうことで対戦が可能になりますし、 買ってもらって布教してもらうことでユーザーが更に増えることが期待できます。良い事だらけに違いありません。

利用したもの

アプリケーションをweb上から手軽に動かせる『Glitch』というサービス上で開発を行いました。(出来上がったbotはGlitchではなく個人のVPS上で動かしています) glitch.com

Node.jsのライブラリであるdiscord.js(https://discord.js.org/)を用いたbotのテンプレート(https://glitch.com/~pumped-chopper)があったので ありがたくRemixし、あとはDiscordとGlitchを往復してメッセージをbotにひたすら送りながら開発しました。

リプライで引数を受け取ってそれに応じて反応するだけのものなので、中身は非常にシンプルで済みました。 大したことしなくても自分の欲しい機能作れるのはライブラリ様様ですね。

実装した機能

今回実装した機能は3つです。

  1. 対戦するプレイヤーのDMに山札から15枚(Bread Rondoの場合は10枚)を配布する
    • 被りがないように配布する
    • 遊ぶルールがプリセットから指定できる
  2. パンを焼く
    • Bread Rondoの対戦に必須の機能
    • チャンネル別にパンの山札を管理してそこから抜き出してくる
  3. ヘルプを表示する
    • 使い方の説明をチャンネルに投稿する
    • 内容はgithubのreadmeに書いたものとだいたい同じ

あくまで山札を共有するというリモート対戦上の問題点を解決するためのbotなので、 山札周りの機能+ヘルプという単純な機能のみです。

カード配布機能は公式が用意している山札を共有するルールである、各製品単体で遊ぶ場合とブレイドシュトローム(無印とNight Theaterの混成ルール) を指定できるようにしています。

実装が面倒でさらに需要がわからないため、独自の山札を指定する機能やドラフトルールの実装は見送っています。 リモート対戦の需要が自分以外にあるのかわからない状態で作っているため、自分が対戦に使うルールのみ作成しました。

実際の動作

twitterで実際の動作を画像投稿してたのでその引用です。

カード番号が存在するBread Rondo以外のシリーズではカード番号順にカードを配布します。 物理攻撃は⚔️、魔法攻撃は🧙‍♂️などの絵文字でカード種別を特定できるようにしています。

Bread Rondoのパンを焼く動作は、オーブンの火力が最大になったときに山札から1枚めくるのとほぼ同じ動作のため、 各プレイヤーに配布するのではなくコマンド入力で1枚ずつ山札から引いていくようにしました。

おわりに

自分の使いたいものを作っただけですが、このツールを通じて対戦を楽しむソーディア(Blade Rondoプレイヤー)の方が私以外にいてくれれば幸いです。

また、ほしいカードプールやバグ等ございましたらtwitter(@tolt_santyoku)に連絡をいただければどうにかします。