Genvid用クラウドサーバーを立てる前にTwitch配信をテスト
ゲームのライブ配信をインタラクティブなコンテンツにするツールキット「Genvid」は、配信システム一式がクラウドサーバー上で動作する設計になっています。
サービスのローンチ時にはクラウドサーバーでの動作が必須となりますが、開発中はなるべく費用を抑えながらテストしたいところです。
Genvidには、クラウドサーバーで動作させるミドルウェア一式を開発Windows上で動作させる「ローカルテスト」モードがあります。
サービス時の動作概念図は以下の通りです。
クラウドサーバー上でゲームのexeが実行され、動画配信サイトを介してブラウザへ動画が届きます。
開発段階として利用できる「ローカルテスト」モードの概念図は以下のとおりです。
※図はCEDEC2022 配信者 vs 視聴者多数!ライブ動画配信プラットフォームを活用した、非対称マルチプレイを実現するシステムの構築より。
動画をキャプチャするゲームexeが他のゲームインスタンスと接続する部分は変わらないのですが、その他のGenvidのサーバーミドルウェアやブラウザ上での描画はすべて開発用PC上で動作させることができます。
今回は、さらに動画配信の部分をTwitchを経由させて、本番環境に一歩近い状態に持っていってみます。
Genvidシステムを開発PC上で動かすところは同じですが、動画の配信部分を実際にTwitchを使って流してみます。
ゲームの内部データをブラウザに配信して処理する「Genvid Stream」を使っている場合、実際の動画タイムコードとゲーム内部のデータタイムコードが一致して動作するかをテストできます。
実際の手順
「Standalone」と呼ばれるPC上で動画をレンダリングしてそのままブラウザに渡す(遅延をエミュレートすることもできる)モードは、高度に自動化されており、いくつかのPythonコマンドを呼ぶだけで実行できます。
Twitchを経由して動画配信のテストを行うためには、いくつか準備が必要です。
Twitchの配信アカウント開設
まずは配信のためのアカウントを用意します。その上で、配信に必要なキーなどを確認します。
Twitchチャンネル情報
クリエイターダッシュボードの「配信」から、「プライマリーストリームキー」に表示されているキーをコピーして設定します。
rmtpサーバー情報
Recommended Ingest Endpointsから確認できます。おすすめは住んでいる地域によって異なるようです。
https://stream.twitch.tv/ingests/
Genvidの設定ファイルにTwitch配信情報を設定
Genvidの設定はjsonまたはhclで定義して、コマンドラインで読み込ませる形式を取ります。
Twitch配信情報についてもこの方法で設定する他、Genvidの基盤システムBastionが立ち上がっている場合は、Cluster-UIでGUIから設定できます。
システムを再起動するたびに各種キーを手入力するのは面倒なため、hclファイルで記述してロードさせる手順をおすすめします。
Genvidに同梱されているcubeサンプルの場合は、config/steam.hclに設定する項目です。
version = "1.7.0"
settings {
encode {
stream {
enable = true
service = "twitch"
addr = "rtmp://<twitch-ingest-server>/app" //ここにrtmpサーバー情報
channel = "channelname" //ここにチャンネル名
key = "live_NNNNNNNN_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" //ここにプライマリーストリームキー
}
}
leaf {
port = 30001
}
} // end of settings
(略)
キー情報を配置した後、hclファイルをコマンドでロードします。
genvid-sdk load-config {ファイル名}.hcl
ロード後、各ジョブを起動することで動画がTwitchの指定のチャンネルで配信されます。
Twitch Developer Rigの使用(現在不具合発生中)
本来であれば、ここからTwitchの開発ツール「Twitch Developer Rig」を使って視聴者用UIの動作確認を行うところですが、現在のDeveloper Rig(v1.2.15)はいくつか不具合があり、テストできません。
(ツール内で動画が表示されない、IPv6のローカルアドレスに接続できないなど)
なので、現状はいきなりクラウドサーバー側でのテストになります。Genvidシステムをクラウドサーバーで実行させるための手順については、次の記事にまとめています。