GenvidSession に Data-Stream プレハブを追加します

ゲームからのデータストリームはオーディオ、ビデオと同期し、視聴者との新しいインタラクティブ性を作り出すことができます。このセクションでは、GenvidSesison プレハブでデータストリームを作成し、データストリーミング時に動作するスクリプトを作成する一連の流れを説明します。

エンジン統合

  1. Streams プレハブを GenvidSession に、GenvidSession の子としてドラッグ&ドロップします。

  2. GenvidSession には Streams セクションがあります。現在の Streams プレハブをこのフィールドにドラッグ&ドロップします。

    A GenvidStreams object.
  3. Ids Size を作成するゲームデータストリーム数に変更します。

  4. エレメントを開き、Id フィールドにユニーク名を付けます。

  5. リピート送信を行うゲームデータを Framerate 選択します。 (再送信を行い場合は選択不要)

  6. ゲームデータを送信するスクリプトで、1つの文字列パラメータを持つ公開関数を作成します。

  7. On Submit Stream (String) ボックスにスクリプトとオブジェクトをドラッグ&ドロップし、ドロップダウンリストから作成した公開関数を選択します。(再送信を行い場合は選択不要)

    • この処理中、String フィールドが表示されることがあります。エレメントの Id をこのフィールドに追加しておかないと、この値で呼び出しがオーバーライドされます。
  8. 公開関数で、プレハブからデータ送信コールを使用することができます。

    • SubmitAnnotation: 特定時間になったときに、リピートが don’t に設定されている場合に、Web サイトにデータを送信します。
    • SubmitGateData: 特定時間になったときに、リピートが do に設定されている場合に、Web サイトにデータを送信します。
    • SubmitNotification: リピートが don’t に設定されている場合に (時間指定なく) すぐに、Web サイトにデータを送信します。

    GenvidSessionManager から関数にアクセスする例:

    GenvidSessionManager.Instance.Session.Streams.SubmitGameData(streamId, gameData);
    
  9. データを格納する class を作成します。

    データをクラスに変換すると、Web サイトからアクセスしやすくなります。Unity sample での使用例を紹介します。

    [Serializable]
    public class CubePopularity
    {
        [SerializeField]
        public string name;
        [SerializeField]
        public float popularity;
    }
    
  10. class のインスタンスを作成し、class にデータを格納します。

  11. 上記で使用した Submit 関数にデータを割り当てます。

  12. 新しい機能のゲームスクリプトを含むオブジェクトを、事前に追加した On Submit Stream (String) 要素にドラッグアンドドロップします。

  13. No Function が表示されているドロップダウンリストから、上記で作成したゲームスクリプトと機能を選択します。

    Dropdown list to get the function Streams with ID, framerate and callback set

Web サイト統合

このセクションでは、Unity サンプル Web サイトで利用可能な unity.ts ファイルを使用していることを前提としています。

また、Web サイト上でのデータ操作を簡単にするための手順を提案します。 プロジェクトに必要ではないと感じる手順は、読み飛ばしても大丈夫です。

  1. データと同じフォーマットを使用するインターフェイスを作成します。

        // Conversion from Json data into structure for the popularity
        export interface ICubePopularity {
            name: string;
            popularity: number;
        }
    
  2. on_new_frame(frameSource: genvid.IDataFrame) プライベート関数では、frameSource を使用してストリームからデータを取得します。 ストリームに使用されたIDを使用してデータにアクセスします。

    frameSource.streams["idOfYourStream"]
    
  3. 受信したデータを作成したインターフェイスに変換します。

これで、データに完全にアクセスできるようになりました。インターフェイスを使用すると、データの特定のセクションにアクセスできます。