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

Pixel Streaming システムをホストするためのネットワークの詳細なコンフィギュレーションおよび考慮事項を説明します。

Choose your operating system:

Windows

macOS

Linux

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

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

STUN / TURN サーバー

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

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

Pixel Streaming with STUN and TURN servers

別の方法として、TURN サーバーを使用して、UE4 アプリケーションとブラウザ間のメディア ストリームを中継することができます。TURN プロトコルでは、TURN サーバーは一方では UE4 アプリケーションに接続し、他方ではブラウザに接続します。UE4 アプリケーションは、ストリーム データのすべてを TURN サーバーに送信します。ここからブラウザにデータが転送されます。この場合、UE4 アプリケーションとブラウザ間に直接接続はありません。(ワイヤレス キャリア ネットワーク経由でモバイル デバイスをサポートする必要がある場合、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 ページを作成できます。

Multiple player pages

このシナリオでは、異なる 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 (マッチメイカー) サーバーを利用することができます。

Multiple full stacks with a Matchmaker Server

各クライアントを独自の Signaling and Web サーバーの URL に接続させるのではなく、Matchmaker サーバーに最初に接続します。Matchmaker は独自の Signaling and Web サーバー (クライアントと UE4 アプリケーション間のピアツーピア接続を設定) に対する各リクエスタのリダイレクトを処理します。接続がアクティブである限り、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 の性能やメモリが十分ではないホストを選択すると、ストリームでビデオの品質を最大限に引き出せない場合があります。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
閉じる