🦑

Twitchのコメントから、Switchのゲーム内に干渉してみた

2022/06/26に公開

https://gigazine.net/news/20180214-twitch-plays-pokemon-double/ みたいな感じのやつです。

概要

タイトルの通り、Twitchのコメントから、Switchのゲーム内に干渉する仕組みを作りました。

「トリガーとなるワード」と「発動する操作」は後述するサーバで、設定をする必要があります。
発動している様子はyoutubeにアップロードしました。
https://www.youtube.com/watch?v=6N3pYZFijLM

本仕組みを作るにあたって、次の自作ツールとRaspberry Pi 4を使いました。
https://github.com/splaplapla/procon_bypass_man_cloud
https://github.com/splaplapla/procon_bypass_man

仕組み

仕組みについて説明します。
「Twitchアカウントとの連携」と「発動する特定の操作」を設定しておいた https://pbm-cloud.jiikko.com/ 内のページを開きっぱなしにしておくと、Twitchのコメントを受信するようになります。その状態で、予め設定していたワードに一致するコメントが投稿されたら、サーバ https://pbm-cloud.jiikko.com/ にそのワードを送信します。

サーバでは、ワードに関連づく「特定の操作(マクロ)」を procon_bypass_manが動いている Raspberry Pi 4 に送信します。

そして、「特定の操作(マクロ)」を受け取ったRaspberry Pi 4では、コントローラーにそのままマクロ情報を注入して、ゲームに反映します。

その他

本仕組みを作るにあたって、サーバとRaspberry Pi 4をwebsocketで繋ぎ、できるだけリアルタイムで反映されるようにしました。また、「ゲーム内の操作を表現するマクロの構文」を定義・実装することで、外部からの入力をゲームに反映することができています。

今後の展望

  • 今の実装では、コメントを書き続けるとゲームへ常に干渉できてしまうので、スーパーチャット相当の投稿に限定して発動することによるスロットリング
  • 実行中・適用されたコマンドの可視化、コメントが受け入れられたのかがわかるbotによるフィードバック機能、などの表示機能

あたりがあることで実用性は向上すると考えました。

余談

youtube liveでも同様の仕組みを実装したのですが、youtubeの場合はコメントを取得する処理が5秒間隔のポーリングになるので、リアルタイム性に欠けることがわかりました。

おわりに

これらのツールのソースコードはすべて公開しています。フィードバックを待っています。

ドキュメントは現在執筆中で不明なところが多いと思いますが、discordのサーバも作っているので気軽に質問や要望をしてくれたらうれしいです。
https://discord.gg/GjaywxVZHY

おわり

Discussion