次の方法で共有


Xbox ゲーム ストリーミングに向けたゲームの最適化

このトピックを使用して、タイトルを最適化し、ゲーム ストリーミング中のよくある落とし穴を回避します。 Xbox プラットフォーム上のすべてのゲームは、Xbox リモート プレイを使用するローカル本体からでも、Xbox ゲーム ストリーミングを使用したクラウド経由でもストリーミングできます。 ゲームはカスタマイズなしでストリーミングできますが、特定の動作や小さな変更によってプレイヤーのエクスペリエンスが向上し、タイトルのエンゲージメントとプレイ時間が向上します。 以下のガイダンスは、ユーザー調査から得られたベスト プラクティス、ビデオ ストリーミングに関する技術的な詳細、ストリーミングに関して密接に提携しているスタジオから得られた分析情報のコレクションです。これらによりゲーム ストリーミングを使用する際のプレイアビリティと楽しみが向上します。

背景とゲーム ストリーミングの内部

Xbox ゲーム ストリーミングは、グローバル ネットワークである Azure データ センターに設置されたサーバー構成の数千台の Xbox デバイス (Xbox サーバー) で構成されています。 Xbox ゲーム ストリーミング セッションの高レベルでの設定は、次のように行います。

  1. ユーザーはプレイしたいゲームを選択します。
  2. Xbox ゲーム ストリーミング サービスでは、利用可能なサーバーの中からユーザーに Xbox サーバーを割り当てます。
  3. このサービスでは、ユーザーがサーバー、ゲームの保存、PLS (家庭用ゲーム機間を移動しない) にサインインし、ゲームを起動させ、ゲーム ストリーミング セッションを開始します。
  4. ユーザーがプレイを終了したら、ゲームを終了し、保存したゲームのデータを同期し、PLS をアップロードして、ユーザーはサインアウトします。

全般

ゲーム内のある特性がユーザー エクスペリエンスに悪影響を与え、Xbox ゲーム ストリーミングでのユーザー セッションを終了させる可能性があります。 ゲームがこれらのリスクを軽減するための適切な手順を踏んでいることを確認してください。

  • ゲームがストリーミング中であることを確認します。

    まず、ストリーミング環境でゲームをテストすることは簡単です。 Xbox 開発キットをセットアップし、Microsoft アカウントの担当者に連絡してタイトルのプライベート クラウド環境にアクセスする方法については、「ストリーミング用に Xbox 開発キットをセットアップする」を参照してください。

    最も基本的な最適化は、クラウド対応 API 呼び出しを介してストリーミング環境でゲームが実行されていることを確認することです。 これにより、ストリーミングの動作を変更するタイミングを簡単に知ることができます。

注意

このドキュメントの多くの機能と推奨事項は、ゲーム ストリーミングに関係なくプレイヤーにメリットを与え、アクセシビリティを向上させる可能性があります。

  • 新しいユーザーができるだけ早くゲームを起動してプレイできるようにします。

    ストリーミング セッションの長さはさまざまですが、必ずしも長時間のプレイ セッションを許可してくれるわけではありません。 ユーザーがストリーミングしているときにのみ再開して続行できる自動セーブポイントを使用することができます。

  • 長いカットシーン中にユーザーが "アイドル状態" と見なされて切断されないようにします。

    Xbox ゲーム ストリーミングは、ユーザーがアイドル状態であることを検出すると、ユーザー セッションを終了します。 開発者は、XDisplayAcquireTimeoutDeferral API を使用する必要があります。API を使用することで、セッションがアイドル状態になり、ユーザーが切断されるのを防ぐことができます。

ビデオ

  • 画面サイズに応じて、ヘッド アップ ディスプレイ (HUD) と UI レイアウトを調整します。

    プレイヤーは、さまざまなフォーム ファクター、表示距離、解像度を備えたさまざまなデバイスにストリーミングできます。 ゲーム内のテキストや UI 要素は大画面テレビで読み取り可能なであっても、小さいデバイスでは読みにくい場合があります。 XGameStreamingGetStreamPhysicalDimensions API は、スケーラブルな UI 要素が、ストリーミング先の特定のデバイスで十分な大きさで表示されるようにするのに役立ちます。

    カスタム解像度の概要 を使用すると、これをさらに発展させ、多くの場合、従来の 16:9 解像度のテレビと一致しないユーザーのデバイスの画面全体を活用できるようにできます。これにより、よりイマーシブで自然なエクスペリエンスを提供します。 また、ネイティブ タッチを使用したゲームの使いやすさも向上します。

  • 可能な限り赤色のテキストを避ける

    ビデオ圧縮形式と赤色に対する人間の目の感度により、多くの場合、この色は最も影響を受けやすいとされています。 (特に、テキスト内のはっきりとした境界線や細かい線で) この色を避けると、圧縮アーティファクトが軽減されます。

  • 構成可能なガンマおよびその他のビデオ設定を許可する

    プレイヤーは、さまざまなフォーム ファクターと画面特性を持つさまざまなデバイスにストリーミングできます。 XGameStreamingGetClients を使用すると、ストリーミング先のデバイスごとに一意の識別子を取得できます。この識別子を使用して、デバイスごとのビデオ設定を保存および復元して、デバイスごとの明るさの違いを考慮できます。

  • ビデオ待機時間の短縮

    ゲームが DirectCapture と互換性を持っていることを確認すると、プレイヤーのビデオ待ち時間が大幅に短縮され、より応答性の高い楽しいエクスペリエンスが作成されます。 詳細については、「DirectCapture の概要」を参照してください。

Input

  • ユーザーが使用しているデバイスに合った自然な方法でゲームを操作できるようにします。

    プレイヤーは、さまざまなフォーム ファクターと入力の種類 (マウス&キーボード、タッチ スクリーンなど) を使用するさまざまなデバイスにストリーミングできます。可能な限り、これらの様々な入力方法をサポートしてください。 「コンテンツ テスト アプリケーション (CTA) ストリーム構成の概要」 には、コントローラー以外の入力の種類を使用してストリーミングをテストする方法に関する詳細情報があります。

    タッチ コントロールやネイティブ タッチの詳細については、「タッチ コントロールの使用を開始する」を参照してください。

  • 最新の入力の種類に対応する

    プレイヤーは、さまざまなデバイスでストリーミング中にゲームを再開し、プレイを続けることができます。その際、常に物理コントローラーがあるとは限りません。 このような場合、プレイヤーはコントローラー、タッチ、マウスとキーボード入力の間をシームレスに切り替えることができることを期待しています。 ゲームでは、'last one wins' ポリシーを使用して、UX とプロンプトをプレイヤーの好みの入力の種類に合わせて切り替えることができます。 可能であれば、プレイヤーの入力の種類を限定したり、入力の種類を他のモードに切り替えるためにコントローラーの使用を必須にしたりしないでください。 さまざまな入力の種類の処理の詳細については、「GameInput の概要」を参照してください。

  • 入力待機時間を考慮する

    待機時間は、ストリーミング環境では避けられない現実です。 プラットフォームは可能な限り待機時間を最小限に抑えようとしますが、さらにゲーム側でも入力を解釈する際の待機時間を理解し、考慮することができます。 プレイヤーの待機時間を短縮するために使用できる手法の詳細については、「ゲーム ストリーミング待機時間の測定」と「ゲーム ストリーミング待機時間の補正の概要」に関するページを参照してください。

言語

  • 複数のパッケージではなくコンテンツのローカライズにインテリジェント配信を使用する

    Xbox ゲーム ストリーミングは、ユーザーが接続している物理的な地域 (国/地域とも呼ばれる) を検出します。 また、Xbox ゲーム ストリーミングは、ユーザーがローカル デバイスで設定したロケールを検出します。 これらの検出された地域とロケールの値は、Xbox サーバーに渡され、一致するように構成されます。 また、Xbox ゲーム ストリーミングでは、パートナー センターで構成されたゲーム パッケージもその地域向けに確実に提供されます。

    このため、開発者は、ローカライズされたコンテンツのセットを含む複数のパッケージではなく、インテリジェント配信言語指定子を使用するすべてのローカライズされたコンテンツを含む 1 つのゲームのパッケージを送信することをお勧めします。 これにより、ユーザーがどの国/地域でプレイしているかに関わらず、ユーザーは自分の優先する言語でゲームを楽しむことができます。

記憶域

  • ゲームプレイ セッション間にデータを保持する一時的なドライブの必要性を避けます

    Xbox ゲーム ストリーミングでは、セッションの間に一時ドライブのデータがすべてクリアされます。 続きのゲーム セッションは、別のデータ センター内の別の Xbox Server で発生する可能性があります。 ゲームでは、セッション間に必要なデータを一時ドライブに保存してはいけません。

  • 永続ローカル ストレージ (PLS) の大量使用を避けます

    Xbox ゲーム ストリーミングはセッション間で永続ローカル ストレージをローミングするため、4GB 以上の PLS を使用すると、Xbox ゲーム ストリーミングでゲームを起動するまでの時間が長くなります。 PLS の使用量が 4 GB 増えるごとに、ロード時間が 20 秒増加することが想定されます。

ネットワーク

  • 様々なネットワークの待機時間と特性を考慮する

    Xbox ゲーム ストリーミングは、Azure データ センターから Xbox 本体を実行します。 これにより、1 人のユーザーが複数の IP 範囲からプレイすることができ、ホーム コンソールのゲーマーよりも ping 時間が短くなりことがあります。

  • ポート 9002 を避けます

    Xbox ゲーム ストリーミングでは、ネットワークにポート 9002 を使用するため、ゲーム開発者は TCP または UDP 通信のいずれかにポート 9002 を使用しないでください。 ゲームの特定のポートとネットワーク構成の詳細については、「開発ネットワーク アクセスの構成」を参照してください。

注意

ポート 9002 は最近の GDK でブロックされるようになりました。

サポートされていないゲーム内シナリオ

Xbox ゲーム ストリーミングでは、ユーザー エクスペリエンスをゲーム プレイのみに限定する設計のため、次のゲーム内のシナリオをクラウド ストリーミング中はサポートしていません。 ただし、これらのシナリオの一部は、ユーザーがホーム 本体をストリーミングするときには機能する場合があります。

  • 他のアプリやゲームの起動を試みないようにします

    Xbox ゲーム ストリーミングでは、Edge ブラウザーの起動以外でのゲームやアプリの個別起動をサポートしていません。

  • プレイ中のゲームと同じ物理マシン上に Web ブラウザーあることに依存しないようにする

    Xbox ゲーム ストリーミングでプロトコルのライセンス認証を Web ブラウザーまたはシステムがホストする Web ブレンドに送信すると、ユーザーがプレイしているローカル デバイス上でライセンス認証が開始されます。 開発者は、これらのエクスペリエンスが、ゲームと同じデバイス上で実行するブラウザーに依存しないようにする必要があります。 例: ゲームが起動する Web サイトに「戻る」ボタンがあり、ゲームのプロトコルのライセンス認証を試行します。

  • いかなる時も、ユーザーが手動でゲームを再起動しなければいけない状況を避けます

    これには、ゲームが自動的に更新され、ユーザーが手動でゲームを再起動する必要がある場合も含まれます。 Xbox ゲーム ストリーミングは、ゲームが終了するとユーザー セッションが終了するため、ゲームを再起動するとストリームが終了します。

  • アイドル時間が長すぎることを理由にユーザーを不当に罰することを避けます

    Xbox ゲーム ストリーミングでは、ユーザーが予期せずにセッションを切断した後も、5 分から 10 分間はセッションを維持します。 そのため、ゲームがアイドル状態のユーザーを罰すると、Xbox ゲーム ストリーミング ユーザーに不必要なダメージを与えることになります。 ゲームは XGameStreamingGetClients API を使用して、GameStreaming クライアントの切断を具体的に検出できます。

ゲーム サービス

Xbox ゲーム ストリーミングは、データ センターの Xbox Server を通して、より多くの対象ユーザーがゲームをプレイできるようにするものであり、Ping 時間やデバイス ID などのデバイスの特性を利用してゲームの動作を変化させるゲーム サービスにも影響を与えます。

  • 不正/詐欺の検出に Xbox サービス セキュリティ トークン (XSTS) を使用しないようにする

    Xbox ゲーム ストリーミング ユーザーは、セッションごとに新しい Xbox サーバーを取得するため、全体的には同じデバイスから多くの個別ユーザー セッションが発生することが予想されます。 また、この場合、ゲーム サービスはこれらのデバイスを禁止するべきではありません。 これらのセッションが Xbox Server から配信されたものであることを知るために、開発者はゲーム内で XGameStreamingGetServerLocationName GDK API を使用することができます。 XSTS トークンからこれを検出することもできます。ゲーム サービスでデバイス ID を処理する方法に関する詳細情報は、「Xbox サービス セキュリティ トークン (XSTS) クレームで Xbox ゲーム ストリーミング サーバーを参照する」を参照してください。

  • 同じ Xbox サーバーでプレイするユーザーが多すぎる場合でも、ユーザーがプレイすることを禁止することを避けます

    個々の Xbox サーバーは、異なる時間帯に複数のゲーマーが使用します。ゲームでそのようなケースが禁止されると、Xbox ゲーム ストリーミング ゲーマーの操作性にダメージがあります。 (例: 同じ IP アドレスまたはデバイス ID から多くのゲーム セッションが配信されると問題が発生する場合)

  • ゲーム サービスが同一の IP アドレスから配信される多数のセッションを疑わしいとフラグを設定することを避けます

    データ センター内の複数の Xbox サーバーが、送信および受信通信に同じパブリック IP アドレスを共有する場合があります。 ゲーム サービスでは、同じ IP アドレスを使用して 100 台以上の Xbox 本体を処理できるようにしてください。

  • ユーザーに関するポリシーの判断に、ゲームを実行している場所の IP アドレスに依存するロジックを使用することを避けます

    Xbox Server は、ユーザーの拠点である国/地域と同じ場所にあるとは限りません。 ゲーム中の意思決定に IP アドレスを使用すると、ユーザー エクスペリエンスが低下します。 XGameStreamingGetClientIPAddress 関数は、ストリーミング クライアントの IP アドレスを決定するために使用することができ、ゲーム プレイのロジックに適しています。

  • 待機時間チェックの結果、ゲーマーの待機時間が非常に小さいことが判明した場合、ゲームやゲーム サービスが壊れたり、ユーザーにペナルティが与えられたりすることを避けます

    データ センターの構成により、Xbox ゲーム ストリーミングのユーザーの ping 時間は、常にローカル コンソールのユーザーよりも低い状態になります。 ping 時間が 0 ミリ秒になる場合もありますが、ユーザーの品質レベルを下げたり禁止したりするために ping 時間を使用しないことが重要です。 ping 時間に基づいて、ゲームやサーバーの内部ロジックを削除または調整しないでください。

関連項目

クラウド対応 API 呼び出し

XGameStreamingGetStreamPhysicalDimensions

XGameStreamingGetClientIPAddress

XGameStreamingGetClients

タッチの概要

DirectCapture の概要

カスタム解像度の概要

Xbox Live セキュリティ トークン (XSTS) 要求での Xbox ゲーム ストリーミング サーバーの参照