スプラトゥーン2 のステージ情報 Bot を作った話
この記事は、ボット (Bot) Advent Calendar 2017 の7日目です。
私が運用中のスプラトゥーン2 ステージ情報botの裏側について書いてみたいと思います。
どんな Bot か
ご存じの方も多いと思いますが、任天堂の人気ゲーム「スプラトゥーン2」では、バトルの舞台となるステージが2時間おきに変更 されます。
そこで、2時間おきに今後のステージ情報をつぶやく Bot を作成しました。イカしたプレイヤーの皆さま、ぜひぜひご利用ください。
ちなみに、初代スプラトゥーンでも同じような Bot を作っていました。
システム構成
PaaS をフルに活用したサーバレスアーキテクチャ……と言いたいところですが、さくらの VPS で定期的に cron 実行されています。温かみのある作りです。
構成要素はイカの通り。
- さくらのVPS
- MySQL
- Perl
- Image Magick
- Twitter API
- イカリング2
ステージ情報の蓄積
公式サービス「イカリング2」から、今後のステージ情報を取得しています。
現在と未来のステージしか確認できないため、過去分を蓄積するために MySQL にも保存済み。
スプラトゥーン2の発売時点から記録を続けており、これまでに開催されたすべてのステージ情報 が格納されています。
ツイート生成
Twitter につぶやく処理は、Perl でゴリゴリ書かれています。
直近のステージをツイート本文に、それ以降のステージを画像として添付することで、8時間先までの情報を発信しています。
なお、画像の生成には Image Magick の Caption
を使用しています。
フェス判定
通常時は、3ルール×2ステージ
が1セットとなりますが、フェスと呼ばれるイベント開催時には 1ルール×3ステージ
に変化します。フェスの度に手動対応するのは非現実的なので、自動化しました。
約1週間前に発表されるフェス予告を検知し、フェス期間のみ別プログラムがツイートを生成します。
今後の予定
フェス速報
フェスの開催予告が出た際に速報ツイートをするか検討中です。
技術的には可能なのですが、ただでさえ2時間おきにツイートしている状態なので、もしかすると別アカウントになるかもしれません。
お気に入りステージお知らせ
好きなステージを登録しておき、そのステージが登場する前にお知らせしてくれる機能です。すでに似たサービスがありそうですが……。
仮に実装した場合は、こちらも別アカウントとして公開予定です。
宣伝
この Bot を作成するにあたり、副産物として出来た ステージ情報データベース を Spla2 API として公開しています。サーモンランの情報もあります。
すでに、ikatomo2 for Splatoon (iOS アプリ) や LINE Bot、イカステージ(Google Asistant アプリ)、などで多数ご利用いただいています。(他にもあればぜひ教えてください!)
まとめ
- スプラトゥーン2 のステージ情報をつぶやく Bot を作りました
- さくらVPS、MySQL、Perl、Image Magick などで動いています
- Spla2 API もよろしくお願いします
- ボット (Bot) Advent Calendar 2017 7日目 の記事でした