Epicでは、GoogleがWebRTCのバージョンにおける脆弱性を公開 (詳細はこちら)したことを認識しており、EOS SDKに対する影響および次のステップを調査しています。
クイック スタート ガイド に説明されているように、Pixel Streaming システムをセットアップしている場合、ランタイム時に Pixel Streaming システムを管理するために、Unreal Engine アプリケーションのゲームプレイ コードで特別な操作を実行するは必要はありません。ただし、Pixel Streaming プラグインを使用すれば、Pixel Streaming システムを制御および操作して、特定のエフェクトを使用することができます。このページでは、このような追加オプションについて説明します。
静止画
Unreal Engine アプリケーションで、レンダリングされたすべてのフレームをメディア ストリームにエンコードするには、いくつかの欠点があります。Unreal Engine を実行しているコンピュータのリソースが消費され、それらのすべてのフレームをネットワーク経由で送信すると、帯域幅が使い果たされてしまい、使用可能な帯域幅によっては、エンコードによってレンダリング画像の品質が低下する場合もあります。
GPU リソースとネットワーク帯域幅の使用を最小限に抑えるために、Pixel Streaming プラグインのすべてのフレームのエンコードと送信を一時的に無効にすることで、接続されたクライアントに単一の静的画像を表示することができます。次に例を挙げます。次に例を示します。
-
クライアントがアプリケーションとアクティブにやり取りしておらず、仮想ワールドで何も動いていない場合、何らかの変更が発生するまで、最後にレンダリングされたフレームでアプリケーションを固定したい場合。
-
ロード画面、メッセージ キャプションなどの画像をクライアントに表示したい場合。
これを可能にするために、Pixel Streaming プラグインには、エンコードの一時停止と再開に使用できるブループリント ノードがあります。これらのノードは、ブループリント エディタの [Pixel Streaming Freeze Frame]カテゴリにあります。

-
メディア ストリームを静止画像に置き換える場合は、Freeze Frame ノードを使用します。
このノードは、Texture アセットへのオプションの参照を受け入れます。これを提供する場合、接続されたクライアントには、プレイヤー ウィンドウで指定したテクスチャが表示されます。提供しない場合、接続されたクライアントには、このノードを呼び出したときに Unreal Engine アプリケーションによって生成された最後のレンダリング フレームが表示されます。
-
すべてのフレームのストリーミングを再開する場合は、Unfreeze Frame ノードを使用します。
単一のフレームまたは画像テクスチャでフリーズしても、ブラウザからの入力には影響しません。デフォルトでは、プレイヤー ページはフリーズ中にキーボード イベントおよびマウス イベントを Unreal Engine に転送します。
Pixel Streaming イベントに応答する
Pixel Streaming システムは、アプリケーションのゲームプレイ コードが Pixel Streaming セッションの存続期間中に発生する選択されたイベントに応答する方法を提供します。
イベント | 説明 |
---|---|
On All Connections Closed | Unreal Engine アプリケーションの、このインスタンスに接続されている最後のクライアントが切断したときに生成されます。このイベントが発行されると、アプリケーションのメディア ストリームを表示するクライアントはなくなります。このイベントは、新しいクライアントが参加する準備として、アプリケーションを初期状態にリセットするゲームプレイ ロジックに使用することもできます。 |
これらのイベントに応答するには、Pixel Streamer Delegates クラスを使用して、それらにバインドします。通常、ゲームプレイの開始時にこのバインディングを設定します。例えば、Event BeginPlay イベントへの応答としてこれを実行できます。バインディングを設定したら、バインドされたイベントがトリガーされるたびにカスタム イベントがトリガーされます。
-
ブループリント グラフ エディタで、任意のノードの実行ピンから右にドラッグし、Pixel Streamer Delegates > Get Pixel Streamer Delegates を選択します。
-
Return Value から右にドラッグし、Pixel Streamer Delegates カテゴリを展開します。イベントのバインディング、およびバインディングを解除するための多くの新しいオプションが表示されます。
-
Bind Event to On All Connections Closed など、イベントの Bind... オプションを選択します。Event 入力を持つ新しいノードを取得します。入力実行ピンを Get Pixel Streamer Delegates の出力実行ピンに接続します。
-
トリガーするカスタム イベントが既にある場合は、そのタイトル バーにある Output Delegate ピンを、先程作成した Bind ノードの Event 入力に接続します。それ以外の場合は、Event 入力から、左にドラッグし、Add Event > Add Custom Event を選択して、新しいカスタム イベントを作成します。
-
Pixel Streaming イベントに応答して実行するブループリント ロジックにカスタム イベントを接続します。
例えば、この実装では同じブループリントで定義されたカスタム関数を呼び出して、アプリケーションを初期状態にリセットします。
