YoutubeLiveのチャットから、ゲームコントローラーに影響を与えてみた

(去年から作り続けている)procon_bypass_manと連携するwebアプリで、掲題に書いた機能を作ったという話です。
実装は https://github.com/splaplapla/procon_bypass_man_cloud/pull/76 です。

本機能の概要を最初に書いておくと、youtube liveのチャットで、予め決められた文字列を投稿すると、ゲームのコントローラへ「チャットの文字列」に紐づく入力がされるというものです。具体的には、「ジャンプして」みたいなチャットを投稿すると、しばらくするとコントローラにジャンプする入力が割り込みしてくるのです。


実際に動かしてみると、youtube liveの映像で見た時点からチャットを投稿し、コマンドがコントローラーに到達して、実際にゲームに影響し、それがyoutube liveで見えるようになるまでに10秒くらいかかることがわかりました。(10秒もかかってしまうと、自分の投稿したチャットが本当にゲームに割り込んだのかわかりにくい。)

実装の話ですが、youtube liveのコメント取得処理は5秒おきにポーリングしているので最大5秒間はコマンドの早出が遅延します。さらにyoutube liveの配信遅延も乗っかります。もっと早く画面に反映されるかな、と思っていたのですが、予想以上に遅延が大きい上、ボトルネックを改善するのが難しいことがわかりました。

今はもう少し改善できないかを考えつつも、別の形でこの機能を使いまわせないかを考えています。
今度動画を撮ってzennでも似たようなことを書くぞ〜〜〜。