Genvidとは
Genvidは、インタラクティブなライブ配信を実現するSDKです。
Genvidは、ゲームの技術を用いてサーバー上でリアルタイム描画した映像を、TwitchやFacebook Gaming経由で動画ストリーミングします。動画視聴サイトから送信された視聴者のボタン入力などをサーバーで上集計し、配信中のコンテンツの展開の変化に使用します。
大勢の動画視聴者が1つのコンテンツに能動的に参加し、物語を作っていく「マッシブリー・インタラクティブ・ライブ・イベント(Massively Interactive Live Events)」を実現します。
いわゆるクラウドゲーミングは1サーバー1プレイヤーですが、Genvidは1サーバーで生成した映像をブロードキャストし、1サーバー対数千人~数万人の体制になります。
GenvidのUnityプラグインが大幅更新
Genvid SDKに同梱されるUnityプラグインは、Genvidシステムの初期化と動画のTwitchサーバー送信、、Genvidサーバー経由でのゲームと動画視聴者間のデータ通信を執り行うプラグインです。
Unityゲーム内のデータをクラウドサーバーへ送信したり、クラウドサーバーから送られてきた視聴者操作データを受信してC#のメソッドをコールします。
Qiitaでは何回かGenvidについて紹介をしましたが、バージョン1.4xあたりから、Unityプラグインの構造が変わったため、備忘録として使い方を紹介します。
プレハブ構造の変化
1.3xより前のGenvid SDK for Unityプラグインでは、複数のプレハブを組み合わせてGenvidの機能を呼び出す形になっていました。まず「Genvid Session Manager」がプロジェクト全体を管理し、その下にぶら下がる「Genvid Session」がビデオ配信やGenvidサーバーとの通信などの一式を保持していました。各設定は「Audio」「Video」「Events」「Streams」「Commands」のプレハブが独立して存在し、「Genvid Session Manager」に紐づける形でした。
実行中に「GenvidSession」を切り替える形で、オンタイムでの設定変更を実施していた形です。
新しいプラグインではプレハブの種類がぐっと減り、機能が集約化されています。
パラメーターをScriptable Objectで保持
以前のGenvid Pluginでは、ビデオのフレームレート設定やキャプチャ設定について、スクリプトで設定を行うか、シーンに配置したプレハブのインスペクタで設定を行う形でした。
新しいプラグインでは、これらの設定項目をScriptable Objectとして保持し、任意に差し替えが可能になっています。
これを「Genvid Session」のプレハブと、「EventsListener」などのUnity C#コードとの繋ぎ込みプレハブに設定します。
Genvid Pluginプレハブ
以前のGenvid Session, Genvid Session Managerの機能を集約したプレハブです。
後述するEvents, Commands,Streamsプレハブの参照を直接持つのではなく、データIDなどのパラメーターを保持したScriptableObjectの参照を持ちます。
Events Listenerプレハブ
前バージョンの「Events」プレハブに相当します。特定のデータIDがGenvidサーバーから送られてきたときに、コールするメソッドの参照をアタッチします。
以前は直接Event IDをstringで記入していましたが、ScriptableObjectで設定する方式に変わっています。
Streams Listenerプレハブ
以前の「Streams」と同様です。ゲームからGenvidサーバーへ配信したいデータを設定します。
Commands Listenerプレハブ
こちらも、以前の「Commands」と同様で、Genvidサーバーから送られてきた制御用データを受け取ります。
今回のアップデートで設定の差し替えが便利に
以前はプレハブごとロードしなおしていたのが、事前に設定したScriptableObjectの差し替えで設定変更が可能になりました。
少し概念は変わりましたが、C#側のコードに影響はないため、1.3x以前からの以降はコードを変えることなく実施可能です。