次の方法で共有


ゲーム ストリーミングのカスタム解像度のベスト プラクティス

カスタム解像度を使用すると、タイトルはストリーミング時にさまざまな解像度と縦横比でレンダリングできます。 このドキュメントでは、最適な使用方法に関する Microsoft の推奨事項の概要を説明します。

最適な解像度の選択

プレイヤーは、携帯電話、タブレット、PC、テレビなど、さまざまなデバイスにゲームをストリーミングします。 低解像度ディスプレイから高解像度ディスプレイまで、超ワイドスクリーン 32:9 モニターから正方形のタブレット、縦長のデバイスまでさまざまです。 プレイヤーは、ゲームを画面全体またはウィンドウ全体にレターボックスなしで表示します。 可能であれば、画像も拡大縮小せずにクライアントのディスプレイに合わせられればより鮮明になります。 最後に、クライアントの理想的な解像度は、ハードウェアとネットワークの状態に依存する場合があります。

XGameStreamingGetDisplayDetails API では、これらの要素をすべて考慮し、"優先" する幅と高さを返します。 理想的な条件では、"優先" 解像度はクライアントの画面の解像度と縦横比ですが、その解像度が不可能な場合は、ストリームの制約と XGameStreamingGetDisplayDetails に渡されるパラメーターに適合する最も近い解像度と縦横比になります。

ゲームで任意の解像度をレンダリングできる場合は、XGameStreamingSetResolution を呼び出し、レンダリング解像度を優先解像度に設定するだけで最適な結果が得られます。

多くのゲームは、固定された解像度のセット用に設計されています。 たとえば、Xbox では通常 1 つの解像度に絞られるゲームでも、PC バージョンでは複数の解像度に対応している場合があります。 その場合、Microsoft では、ゲームでサポートされているものに最も近い解像度を選択するためのガイドとして、優先解像度を使用することをお勧めします。 そのためには、ゲームがクライアントの画面いっぱいに表示されるように、好みの縦横比に最も近いものを見つけるのがよい方法です。 XGameStreamingDisplayDetails 構造体には、設定できる解像度に制限があることに注意してください。 また、現在のストリームが非標準の解像度と現在のスケーリングをサポートしているかどうかを示すフラグも含まれています。

解像度を自動的に選択できないが、ゲームの PC バージョンに解像度ピッカーが含まれている場合は、XGameStreamingDisplayDetails の制約内にそれらの解像度が収まる限り、プレイヤーが解像度を選択できるようにすることもできます。

更新プログラムについてリッスンする

ストリーム中に、最適な解決策はいくつかの理由で変更される可能性があります。

  1. クラウド サーバーでは、ストリーミング クライアントが接続する前にゲームが起動されるため、優先解像度はすぐには利用できません。
  2. スマートフォンやタブレットを使うプレイヤーは、デバイスを縦向きと横向きに回転できます。
  3. PC 上のプレイヤーは、ストリーミング クライアント ウィンドウのサイズを変更したり、全画面表示を切り替えたりすることがあります。
  4. ネットワークの状況により、異なるストリームの解像度が必要となる場合があります。

変更が発生したときに最適なストリーミング エクスペリエンスを提供するには、XGameStreamingRegisterConnectionStateChanged を使用して新しいクライアントを検出し、XGameStreamingRegisterClientPropertiesChanged (XGameStreamingClientProperty::DisplayDetails プロパティを確認) して、クライアントの優先解像度が変更されたタイミングを検出します。 これらのイベントが発生したら、新しい XGameStreamingDisplayDetails に合わせて解像度を変更します。

注意

少なくとも、クラウド サーバー上のプレイヤーが一致する解像度を取得するための初期クライアント接続イベントを処理することが非常に重要です。

変更に関する制限事項

ストリーム解像度が変更されたときは、(PC でのゲーム解像度の変更の外観など) 短い点滅としてプレイヤーに表示されます。 中断を最小限に抑えるため、Microsoft では上記のイベントに対応する場合のみ解像度を変更することを推奨しています。

プレイヤー エクスペリエンスとは別に、ビデオ エンコーダーがゲームの解像度に合わせる時間がないため、200ms ごとにストリームの解像度を複数回変更することは推奨されません。 上記のイベントは、200 ミリ秒ごとに複数回発生しません。

XGameStreamingGetDisplayDetails のパラメーターの設定

XGameStreamingGetDisplayDetails API には、ゲームの制約のパラメーターが含まれています。 これらが正しく設定されている場合、API はそれらの制約内に収まる最適な解像度を計算します。 パラメーターは、次のとおりです。

maxSupportedPixels: これは、ゲームが超えてはいけない合計ピクセル数です。 パフォーマンスを維持するための適切な経験則は、ゲームが通常現在のシステム デバイスの種類でレンダリングする幅と高さを乗算することです。 たとえば、ゲームが通常 Xbox Series S で 1440p をレンダリングする場合、そのデバイス タイプでは maxSupportedPixels=2560*1440=3686400 を渡します。

widestSupportedAspectRatio および tallestSupportedAspectRatio: これらはゲームの縦横比の制限です。 テストした中で最も広い縦横比と最も高い縦横比に設定することで、すべてのデバイスでゲームが美しく表示されるようになります。

タッチ入力とカスタム解像度

XGameStreamingSetResolution を使用して解像度を変更すると、新しい縦横比に合わせてタッチ入力座標空間が変更されます。 GameInputTouchState には、正規化された 0 ~ 1 の範囲のタッチ座標が含まれます。 解像度を変更する場合、その範囲は変わりませんが、新しい解像度を表すようになりました。 たとえば、1920x1080 のゲームでカスタム解像度がない場合、(0.5, 0.5) のタッチは (960, 540) を表しますが、1600x800 に変更する XGameStreamingSetResolution を呼び出すと、タッチが (0.5, 0.5) を表す (800, 400) ことを意味します。 解像度を変更しても、GameInputTouchSensorInfo の解像度と縦横比の値は更新されません。タッチ位置の計算には GameInputTouchSensorInfo ではなく、XGameStreamingSetResolution に渡した値を使用します。

安全領域

多くのデバイスでは、画面が部分的に妨げられ、切り欠き、角が丸くなり、スワイプ バーが重ねて表示されたりします。 XGameStreamingDisplayDetails には、画面の中央にある妨げられていない四角形を記述する safeArea 個の四角形が含まれています。 重要なコンテンツが確実に表示されるようにするには、この四角形をタイトル セーフ領域の境界として扱います。 それ以外の領域は表示される可能性があり、コンテンツは含まれている必要がありますが、重要な UI 要素は含まれません。

DirectCapture

最適なストリーミング ビデオ エクスペリエンスは、ゲームがカスタム解像度と DirectCapture を組み合わせて、ストリーミング待機時間を短縮する場合です。 DirectCapture でゲームのメリットを確保する方法については、「DirectCapture の概要」を参照してください。

関連項目

カスタム解像度の概要

カスタム解像度を使用したテスト (NDA トピック)認可が必須です

DirectCapture の概要