Blade Rondoのリモート対戦用Discord Botを作り直しました
以前作成した、Domina Games様より大好評販売中のボードゲームである『Blade Rondo』(ブレイドロンド)シリーズのリモート対戦を実現するための Discord botを作り直しました。
更新内容は以下の通りです。
- Discord.jsのバージョンをv13に更新
- スラッシュコマンド対応
/newgame normal
通常フォーマットの手札配布/newgame hybrid
混成フォーマットの手札配布/bake
パン焼き/help
ヘルプ
- 対戦可能フォーマットの追加
これまでに導入しているサーバーがある場合、権限の更新のため再度の招待が必要です。ご了承ください。
記事の残りは経緯と説明です。詳しいことは上記Githubをご覧ください。
続きを読むBlade Rondoのリモート対戦用Discord Botを作りました
Domina Games様より大好評販売中のボードゲームである『Blade Rondo』(ブレイドロンド)シリーズのリモート対戦を実現するための Discord botを作成しました。
以下はその経緯と説明です。使いたい方は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つです。
- 対戦するプレイヤーのDMに山札から15枚(Bread Rondoの場合は10枚)を配布する
- 被りがないように配布する
- 遊ぶルールがプリセットから指定できる
- パンを焼く
- Bread Rondoの対戦に必須の機能
- チャンネル別にパンの山札を管理してそこから抜き出してくる
- ヘルプを表示する
- 使い方の説明をチャンネルに投稿する
- 内容はgithubのreadmeに書いたものとだいたい同じ
あくまで山札を共有するというリモート対戦上の問題点を解決するためのbotなので、 山札周りの機能+ヘルプという単純な機能のみです。
カード配布機能は公式が用意している山札を共有するルールである、各製品単体で遊ぶ場合とブレイドシュトローム(無印とNight Theaterの混成ルール) を指定できるようにしています。
実装が面倒でさらに需要がわからないため、独自の山札を指定する機能やドラフトルールの実装は見送っています。 リモート対戦の需要が自分以外にあるのかわからない状態で作っているため、自分が対戦に使うルールのみ作成しました。
実際の動作
twitterで実際の動作を画像投稿してたのでその引用です。
カード番号が存在するBread Rondo以外のシリーズではカード番号順にカードを配布します。 物理攻撃は⚔️、魔法攻撃は🧙♂️などの絵文字でカード種別を特定できるようにしています。初手配布botみやすくなった pic.twitter.com/aLX0QMOaPH
— とるとさんちょく (@tolt_santyoku) 2021年5月18日
Bread Rondoのパンを焼く動作は、オーブンの火力が最大になったときに山札から1枚めくるのとほぼ同じ動作のため、 各プレイヤーに配布するのではなくコマンド入力で1枚ずつ山札から引いていくようにしました。初期手札配布botがBread Rondoに対応した(パンが焼けるようになった) pic.twitter.com/aIYbtzMpl3
— とるとさんちょく (@tolt_santyoku) 2021年5月24日
おわりに
自分の使いたいものを作っただけですが、このツールを通じて対戦を楽しむソーディア(Blade Rondoプレイヤー)の方が私以外にいてくれれば幸いです。
また、ほしいカードプールやバグ等ございましたらtwitter(@tolt_santyoku)に連絡をいただければどうにかします。
Simple Membershipプラグイン(WordPressプラグイン)のおぼえがき
目次
- 目次
- はじめに
- Simple Membershipについて
- Loco Translateを導入したが一部の翻訳がされていない
- 有料登録プロセス
- 有料登録(定期購読)したユーザの登録解除
- 定期購読の支払い時差による二重支払いリスク
- localhostでテストをする際PayPal決済をしても登録できない
- ローカル環境でメール送信ができない
はじめに
当記事は筆者が以前仕事で使用したWordPressプラグインである「Simple Membership」についてのおぼえがきです。 筆者と同様の問題で躓いた方の助けになれば幸いです。
本章以降の内容はすべて以下の環境で利用したもので、変化がある可能性があります。 最新の情報については、各プラグインの公式ページを参照してください。 また、本記事では決済方法としてPayPalを利用することを前提としています。
名称 | バージョン |
---|---|
WordPress | 5.4.2 |
Simple Membership | 3.9.7 |
Loco Translate | 2.3.3 |
B-スプライン曲線(NURBS曲線)で90°の円弧を描く
※この記事は前回記事の続きです。 tecofalltolt.hatenablog.jp
目次
- 目次
- はじめに
- NURBS曲線
- 90°の円弧状に曲げる
- 実践
- おわりに
はじめに
前回、B-スプライン曲線でへにょりレーザー(東方Projectに登場する曲がるレーザー)を作成する記事を公開しました。 確かに制御点に従ってきれいに曲がる曲線は作成できるのですが、円弧を描こうとするとうまくいきません。
もちろん、制御点を増やすことで円弧を描くことは可能ですが、制御点が増えるということは曲線の軌道の計算量と制御点の作成コストが増えるばかりで望ましくありません。
そこで、前回の最後に名前だけ登場した、B-スプライン曲線を拡張した形であるNURBS曲線を利用します。
続きを読むB-スプライン曲線でへにょりレーザーを実装する
目次
- 目次
- はじめに
- B-スプライン曲線
- ノットベクトル
- 開一様ノットベクトル
- 実装
- 実際の動き
- 課題
- おわりに
- 続きの記事(NURBS曲線)
- 参考資料
はじめに
東方Projectシリーズには、「へにょりレーザー」と呼ばれるレーザーがあります。 魅力的な模様を描きながら読みづらい軌道で飛んできて、残機を刈り取っていくレーザーです。 このへにょりレーザー、ずっと三角関数でアレコレしているんだと思ってましたが、どうやらスプライン曲線のようです。
まりお「へにょりってルーさん発なの?」
— 704. (@takegusa) May 28, 2020
ルー「黄昏酒場の時にZUNさんのシステム触らせてもらって、sin,cosのやつ入ってないって思って勝手に入れたらそのあと地霊殿で…」
ZUN「実はsin,cos使ってないんだよな〜スプラインなんだよあれは」
まりお「専門用語だらけで全然わかんない」#2軒目備忘録
確かにスプライン曲線ならあれこれ難しい処理を作らなくてもへにょりレーザーの軌道が表現できる!すごい!というわけでへにょりレーザーをスプライン曲線で実装します。
続きを読むPythonの勉強でWebアプリを作る話
Pythonの勉強をしようと思い、FlaskでTwitter上の漫画を見やすくするアプリケーションを開発しました。
こんな感じで動きます。
続きを読むPythonの勉強にTwitter上の漫画を取得するWebアプリ作ってる pic.twitter.com/q0WTqXQFfB
— とるとさんちょく (@tolt_santyoku) 2019年9月12日
Google VR SDK for UnityでMMDモデルを眺めるアプリ作成とそのやり方の話。
この記事は古いため現在とは差異がある可能性があります。
VRです。世界中で来てるVRです。響きが強そうなVRです。Google Cardboardとかで簡単なものなら安く体験できるVRです。
VRで諏訪子ちゃんを眺めたくてGoogle VR SDK for Unityつかったらすごく楽にAndroidアプリができたので 感動してやり方を広めようと思った次第です。
多分他にもっといい神記事がどこかにあると思うけど自分用メモでもあるので一つ。 多分iOSでも出来るんだろうと思うけどiOS端末を持っていないのでAndroid向けです。
※この記事は素人が素人向けに書いた記事のためより詳しい技術的な情報は別サイト等で調べてください。
続きを読む