ホスティングおよびネットワーキング ガイド

Pixel Streaming システムをホストするための高度なネットワーキング設定とその他の考慮事項です。

Windows
MacOS
Linux

Web サービスの開発やデプロイの経験がない場合でも、「概要」および「入門」ページで説明されている、シンプルな LAN 内で機能する Pixel Streaming を設定することは可能です。ただし、複雑なネットワークやオープンなインターネット上でサービスをデプロイする場合や、ユーザー エクスペリエンスと接続フローを設計し直す場合は、現行の設定を再検討する必要があります。

このページでは、さまざまな目標を達成するために Pixel Streaming アーキテクチャの各コンポーネントを設定する方法の例をいくつか説明します。

STUN および TURN サーバー

Signaling and Web サーバーで WebRTC Proxy サーバーとブラウザ間の直接接続をネゴシエートできるようにするためには、互いに相手に自身の IP アドレスを送信する必要があります。つまり、ブラウザは WebRTC Proxy サーバーにより送信された IP アドレスにアクセスできる必要があり、その逆も同様です。

シンプルな LAN では、各エンドポイントは通常、それ自身のネットワーク カードで把握しているプライベート IP アドレスを使用して、相手がアクセスできることを前提にしています。オープンなインターネットやサブネットにまたがる場合、またはブラウザと WebRTC Proxy サーバーの間にネットワーク アドレス変換 (NAT) がある場合、一般的にこの前提は当てはまりません。代わりに、各パーティは STUN (Session Traversal Utilities for NAT) プロトコルを実装しているサーバーにクエリを送信して、それ自身のパブリック公開の IP アドレスを検出する必要があります。STUN サーバーが各エンドポイントにパブリック公開の IP アドレスを通知した後、Signaling and Web サーバーは直接接続を引き続き仲介できます。

Pixel Streaming と STUN および TURN サーバー

別の方法として、TURN サーバーを使用して、WebRTC Proxy サーバーとブラウザ間のメディア ストリームを中継することができます。TURN プロトコルでは、TURN サーバーは一方では WebRTC Proxy サーバーに接続し、他方ではブラウザに接続します。WebRTC Proxy サーバーは、ストリーム データのすべてを TURN サーバーに送信します。ここからブラウザにデータが転送されます。この場合、WebRTC Proxy サーバーとブラウザ間に直接接続はありません。(ワイヤレス キャリア ネットワーク経由でモバイル デバイスをサポートする必要がある場合、TURN サーバーを使うこと以外の選択肢はありません。モバイル ネットワークでは、WebRTC プロトコル経由でクライアントが正常に接続できないことがあります)。

サーバーから別のサーバーにフォールバックする機能とともに、STUN および TURN プロトコルを併用して、ICE (Interactive Connectivity Establishment) フレームワークを構成します。

インターネット上では、STUN および TURN サーバーのオープンソース実装をいくつか見つけることができます。独自にホスティングするのではなく、無料で利用可能なパブリック STUN サーバーも存在しますが、このようなサービスを利用する際は注意が必要です。(TURN プロトコルを介してメディアを中継する際に必要なスループットと帯域幅のため、無料のパブリック TURN サービスはほとんどありません。)

利便性のため、Unreal Engine には、C++ WebRTC SDK で定義された STUN および TURN サーバーのリファレンス実装 (バイナリ) が付属しています。これらは、Unreal Engine のインストール場所の「Engine/Source/ThirdParty/WebRTC/rev.23789/programs/Win64/VS2017/release」フォルダにあります。これらの実装は製品グレードの信頼性を提供するものではありませんが、入門用としては役に立ちます。

ICE 接続を使用するように Pixel Streaming を設定するには、使用する STUN および TURN サーバーのホスト名を Signaling and Web サーバー用の peerConnectionOptions コンフィギュレーション パラメータに設定する必要があります。このパラメータのフォーマットや指定方法の詳細については、「Pixel Streaming リファレンス」を参照してください。

さらに、独自の STUN または TURN サーバーをホスティングする場合、peerConnectionOptions パラメータで指定した IP アドレスとポートが、オープンなインターネット上でも認識できることを確認してください。

複数プレイヤー エンドポイント

同じ Unreal Engine セッションにすべてのユーザーをまとめたいが、そのセッションをコントロールするのに、同じ機能をすべてには利用したくない場合があります。

例えば、プレゼンテーションのようなエクスペリエンスを作成するときに、プレゼンターは自分のブラウザから Unreal Engine をフルコントロールできるようにして、他のユーザーはストリームを表示できるだけにする場合があります。あるいは、ユーザーごとにカスタマイズした一連のコントロールを作成して、ユーザーが協力してエクスペリエンスの異なる部分をリアルタイムでコントロールできるようにする場合などもあります。

これらのシナリオでは、1 つのスタックの Web サービスが動作している Unreal Engine の 1 つのインスタンスがありますが、Signaling and Web サーバーに異なるプレイヤー HTML ページを作成できます。

複数プレイヤー ページ

このシナリオでは、異なる HTML プレイヤー ページとその JavaScript 環境をカスタマイズでき、必要なコントロールだけを公開できます。次に、各クラスのユーザーが Signaling and Web サーバーから異なる URL をリクエストする必要があります。例えば、プレゼンターは http://yourhostname/presenter.html を、他のユーザーは http://yourhostname/attendee.html をロードします。

プレイヤー ページのカスタマイズ方法の詳細については、「プレイヤー Web ページをカスタマイズする」を参照してください。

マッチメイキングのある複数フルスタック

すべてのユーザーが同じストリームに接続するのではなく、各ユーザーに対して独自のインタラクティブなエクスペリエンスを提供したい場合もあります。これを実行するためには、各ユーザーに対して Pixel Streaming コンポーネントの個別スタックを実行して、各ユーザーを個別の Signaling and Web サーバーに誘導し、接続を開始します。

個別ホストで Pixel Streaming コンポーネントの各スタックを設定できます。または、全員が異なるポートで通信するように各スタック内でコンポーネントに対してポートを設定をすることで、同じホストで複数のスタックを配置することもできます。これらのポートの詳細については、「Pixel Streaming リファレンス」を参照してください。

同じコンピュータで Pixel Streaming を使用して Unreal Engine の複数インスタンスを実行する計画の場合、NVIDIA GeForce ラインなど一般ユーザー レベルの多くのグラフィック カードで同時に実行できるエンコーダは最大 2 つであることに注意してください。Quadro や Tesla などプロフェッショナル グレードのカードには、これと同じ制限はありません。

この種の設定のために、Pixel Streaming システムで、利用可能な Signaling and Web サーバーがどれか、クライアント接続で使用されているかどうかを追跡する Matchmaker (マッチメイカー) サーバーを利用することができます。

Matchmaker サーバーがある複数フルスタック

各クライアントを独自の Signaling and Web サーバーの URL に接続させるのではなく、Matchmaker サーバーに最初に接続します。Matchmaker は独自の Signaling and Web サーバー (クライアントと WebRTC Proxy サーバー間のピアツーピア接続を設定) に対する各リクエスタのリダイレクトを処理します。接続がアクティブである限り、Matchmaker サーバーは、ブラウザからの新しい受信接続を同じ Signaling and Web サーバーにはリダイレクトしません。

Pixel Streaming システムには、Matchmaker サーバーのリファレンス実装が「Engine/Source/Programs/PixelStreaming/WebServers/Matchmaker」フォルダに含まれています。このサーバーはそのまま使用できますが、Signaling and Web サーバーから同じメッセージを処理するのであれば、ニーズに合わせて「matchmaker.js」ファイルをカスタマイズできます。

Matchmaker サーバーの設定方法

  1. Signaling and Web サーバーを起動する前に、「run.bat」ファイルを実行して Matchmaker サーバーを起動します。デフォルトでは、サーバーはクライアントからの HTTP 接続に対してポート 90 でリッスンし、Signaling and Web サーバーからの接続はポート 9999 でリッスンします。コマンドラインで次のコンフィギュレーション パラメータを指定することで、これらの設定をオーバーライドすることもできます。

    パラメータ

    説明

    --httpPort

    ブラウザからの HTTP 受信接続を Matchmaker サーバーがリッスンするポート番号を定義します。

    --matchmakerPort

    Signaling and Web サーバーからの受信ステータス メッセージを Matchmaker サーバーがリッスンするポート番号を定義します。

    例:

    > run.bat --httpPort 88 --matchmakerPort 9988

  2. Signaling and Web サーバーに対する次のコンフィギュレーション パラメータを設定します。

    パラメータ

    説明

    UseMatchmaker

    このパラメータを「true」にすると、Signaling and Web サーバーが現在のステータスを Matchmaker サーバーに送信するようになります。

    matchmakerAddress

    Signaling and Web サーバーの接続先である Matchmaker サーバーの IP アドレス。

    matchmakerPort

    Signaling and Web サーバーがメッセージを Matchmaker サーバーに送信する必要があるときに使用するポート番号。この値が Matchmaker サーバー用に設定した --matchmakerPort 値と一致することを確認します。

    publicIp

    Signaling and Web サーバーのパブリック公開の IP アドレス。Matchmaker サーバーがユーザーを Signaling and Web サーバーにリダイレクトするときは、この IP アドレスに誘導します。したがって、これは接続するブラウザから認識できる必要があります。

    httpPort

    HTTP 接続を Signaling and Web サーバーがリッスンするポート番号。Matchmaker サーバーがユーザーを Signaling and Web サーバーにリダイレクトするときは、このポート番号に誘導します。

    これらのパラメータを設定する方法については、「Pixel Streaming リファレンス」を参照してください。

オンデマンドのスケーリング

上記に示したような戦略、つまりクライアントの各受信接続に個別のフルスタックで対応しようとすると、実行する Unreal Engine アプリケーションの数を事前に設定したくない場合があります。サーバー数よりユーザー数が少ない場合はリソースが無駄になり、逆にユーザー数よりサーバー数が少ない場合は、接続がフリーになるまでユーザーは待機する必要があります。代わりに、クライアントが接続を試みるたびに、新しいサーバー インスタンスを起動させるようにしたほうがよい場合があります。

Pixel Streaming システムのコンポーネントとオプションの Matchmaker サーバーがあると、このような動的にスケーリングするホスティング システムの設定に必要なすべての構成要素が揃います。ただし、今のところ、このレベルのクラウド デプロイメントを独自のクラウド サービス プロバイダで設定するかはユーザー次第です。

ホスト マシン ハードウェア機能

Unreal Engine アプリケーションと Pixel Streaming Web サービスをホストするのに Amazon (AWS) や Microsoft Azure などのサービス プロバイダを利用することを選択した場合は、異なるハードウェア機能を備えたホストの多様な複数ティアから選択することになります。ホストの機能は、提供可能なストリームの品質に影響することに留意してください。

例えば、AWS マシンでは一般にハードウェア サウンド カードが提供されません。このようなホストで Unreal Engine アプリケーションを実行すると、メディア ストリームにサウンドが含まれません。同様に、GPU の性能やメモリが十分ではないホストを選択すると、ストリームでビデオの品質を最大限に引き出せない場合があります。

Select Skin
Light
Dark

新しい Unreal Engine 4 ドキュメントサイトへようこそ!

あなたの声を私たちに伝えるフィードバックシステムを含め、様々な新機能について開発をおこなっています。まだ広く使える状態にはなっていないので、準備ができるまでは、ドキュメントフィードバックフォーラムで、このページについて、もしくは遭遇した問題について教えていただけると助かります。

新しいシステムが稼働した際にお知らせします。

フィードバックを送信