Amazon GameLift Streams のトラブルシューティング - Amazon GameLift Streams

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon GameLift Streams のトラブルシューティング

接続の問題

Amazon GameLift Streams バックエンドサービスを設定するときは、以下を確認してください。

  • エンドユーザー AWS リージョン に最も近いものを選択します。クライアントからストリームをホストするリージョンへのレイテンシーが高いと、ストリームの品質に影響する可能性があります。リージョンの AWS コンソールエンドポイントに ping を実行して、おおよそのレイテンシー測定値を取得できます。

  • ストリームグループに新しいストリームの容量があることを確認します。

  • ConnectionTimeoutSeconds が合理的に設定されていることを確認します。タイムアウト前に接続する時間を増やすことができます。

顧客に以下を確認するようアドバイスします。

  • UDP ポート 33435-33465 を開き、Amazon GameLift Streams からのストリーミングを許可します。Amazon GameLift Streams がこれらのポートに到達できない場合、黒や灰色の画面などのストリーミングの問題が発生する可能性があります。

  • インターネット接続が 1080p ストリームで少なくとも 10 Mbps の接続速度を維持できることを確認します。Amazon GameLift Streams でプレイ中にネットワークの問題を検出すると、インターネット速度が変動し、少なくとも 10 Mbps が一貫して得られない可能性があります。インターネット速度テストを実行し、トラブルシューティングの手順に進みます。

  • 可能であれば、有線ネットワークを使用します。Wi-Fi を使用する場合は、デバイスをルーターの近くに移動して、信号強度を強化します。

  • 2.4 GHz 帯と 5 GHz 帯の両方の Wi-Fi ルーターを使用している場合は、別の帯に接続してみてください。ルーターを別のバンドに切り替える方法が不明な場合は、Wi-Fi ルーターの製造元またはプロバイダーのサポートページにアクセスしてください。カスタマーサービスに連絡することもできます。

  • 同じネットワーク上の他のユーザー (特にホーム Wi-Fi の場合) が、ビデオストリーミング、ダウンロード、オンラインゲーム、バックアップなどの高帯域幅アプリケーションを実行しているかどうかを特定します。

  • 帯域幅を占めるデバイス上の他のアプリケーションを閉じます。

  • ストリーミング中に VPN またはプロキシを使用しないでください。レイテンシーが高くなり、ゲームプレイがブロックされる可能性があります。

  • iPad または iPhone で再生するときに、セルラーネットワークの代わりに Wi-Fi を使用していることを確認します。セルラーネットワークを使用すると、接続の問題が発生する可能性があります。

  • MacOS ユーザーは、Wi-Fi が時折一時停止し、ストリーミングエクスペリエンスが低下するため、位置情報サービスを無効にする必要があります。

パフォーマンスの問題

このセクションでは、ゲームストリーミングのパフォーマンスが低下する潜在的な原因を特定し、Amazon GameLift Streams でストリームを最適化するための提案を提供します。

Amazon GameLift Streams でストリーミングするとゲームのパフォーマンスが低下する

ゲームが独自のマシンでうまく動作しているが、Amazon GameLift Streams でストリーミングするときにパフォーマンスの問題が発生した場合は、次の点を考慮してください。

  • マシンには、Amazon GameLift Streams よりも強力なハードウェアがある可能性があります。Amazon GameLift Streams が使用するハードウェアと同様のパフォーマンスのマシンでアプリケーションをテストしてください。gen4n ストリームクラスの場合、これは NVIDIA RTX 2060 GPU を搭載したコンピュータと同等です。gen5n ストリームクラスの場合、これは NVIDIA RTX 3080 GPU を搭載したコンピュータと同等です。

  • 問題は、ネットワーク接続または Amazon GameLift Streams の設定が原因である可能性があります。接続の問題 「」セクションのトラブルシューティングのヒントを試してください。

ローカルで実行してもゲームが遅い場合は、そのパフォーマンスを最適化する必要があります。最適な最適化方法は、使用している特定のエンジンまたはフレームワークによって異なります。

Windows アプリケーションでは、ロード時間が遅い、またはスタッタリングの問題が発生する

ゲームのロード時間が長いか、動作が途切れている場合は、次の一連のアクションをお勧めします。

  1. コンテンツとシェーダーのパフォーマンスの最適化に関するエンジンベンダーのガイダンスを使用して、アプリケーションがパッケージ化され、ロードパフォーマンス用に最適化されていることを確認します。

  2. アプリケーションがストリームグループのデフォルトアプリケーションに設定されていることを確認します。

  3. アプリケーションパッケージの一部としてシェーダーをキャッシュすることで、サービスでのアプリケーションの初回起動を最適化します。

シェーダーキャッシュを有効にするには、次の 2 つの方法があります。

  • ドライバーベースのキャッシュ – このアプローチは、ランタイム環境の GPU とドライバーのバージョンに固有のものです。このオプションはすべてのアプリケーションに適用できるため、デフォルトの推奨アプローチです。このアプローチのステップは、GPU/ドライバーの組み合わせごとにレプリケートする必要があります。

  • エンジンベースのキャッシュ – このアプローチにより、利用可能な場合はゲームエンジンを通じてシェーダーキャッシュが可能になります。これにより、事前にベイクされたパイプライン状態オブジェクト (PSO) キャッシュを開発者に作成する負担がかかります。また、エンジンが同じ GPU ハードウェア上の異なるドライバーのキャッシュサポートを処理できることを前提としています。

ベストプラクティスとして、まずドライバーベースのキャッシュを実装することをお勧めします。これは、特定のエンジンに PSO キャッシュがどのように実装されるかを深く理解する必要がないためです。

これらの実装では、シェーダーファイルをエクスポートしてアプリケーションにパッケージ化できるため、新しいストリームの開始ごとに生成する必要はありません。

Windows ランタイムアプリケーションのドライバーベースのキャッシュ修正を実装するには
  1. デフォルトのアプリケーションのストリーミングを開始し、広範囲に再生してアプリケーションのシェーダーを生成します。

    重要

    可能な限り多くのシェーダーを生成するには、必ず環境のすべての領域またはレベルにアクセスしてください。

  2. ストリームを閉じる前に、アクティブなストリームセッションでエクスポート機能を有効にします。詳細については、「ストリームセッションファイルのエクスポート」を参照してください。

  3. 前のステップで指定した Amazon S3 バケットからストリームセッションエクスポート .zip ファイルをダウンロードします。ダウンロードリンクは、セッションページの Amazon GameLift Streams コンソールにあります。

  4. ストリームセッションエクスポート内のシェーダーフォルダを見つけます。通常、 という場所に保存されますAppData\Local\NVIDIA\DXCache。生成されたシェーダーファイル (*.nvph) をアプリケーションの Amazon S3 バケットにアップロードします。

  5. 実行時にシェーダー.batファイルを NVIDIA キャッシュフォルダにコピーするファイルを作成します。このフォルダは通常、 にありますC:\Users\Administrator\AppData\Local\NVIDIA\DXCache.bat ファイルを Amazon S3 アプリケーションバケットにアップロードします。

  6. ファイルを実行可能なパス.batとして新しい Amazon GameLift Streams アプリケーションを作成します。

アプリケーションがストリーミングを開始すると、.batファイルはアプリケーションを起動する前に事前に生成されたシェーダーをシェーダーキャッシュにコピーし、ストリームのロードパフォーマンスを向上させます。

注記

アプリケーションを更新したり、Amazon GameLift Streams アプリケーションを新しいストリームグループにリンクしたりするたびに、これらのステップを繰り返す必要がある場合があります。新しいストリームグループには、 サービスから更新された GPU ドライバーを含めることができます。

次のサンプル.batファイルは、シェーダーファイルが Amazon S3 バケットプレフィックス に保存されていることを前提としていますShaders\。別のフォルダ構造を使用できます。

@echo off set CURRENT_PATH=%cd% set DXCACHE_DIR=%CURRENT_PATH%\Shaders set NVIDIA_DXCACHE_DIR=C:\Users\Administrator\AppData\Local\NVIDIA\DXCache if not exist "%NVIDIA_DXCACHE_DIR%" ( mkdir "%NVIDIA_DXCACHE_DIR%" ) xcopy /s /f "%DXCACHE_DIR%" "%NVIDIA_DXCACHE_DIR%" start %CURRENT_PATH%\app.exe
Unreal Engine を使用してアプリケーションのエンジンベースのキャッシュ修正を実装するには

このアプローチでは、Unreal Engine 機能を使用して、Amazon GameLift Streams アプリケーションのパイプライン状態オブジェクト (PSO) キャッシュを作成できます。PSO キャッシュを使用すると、事前コンパイルされたグラフィックスパイプラインの状態をランタイムコンパイル時間を短縮して配信できるため、ロードとレンダリング中のハイッチを減らすことができます。これには Unreal Engine に関する高度な知識が必要なため、ここではエンジン固有の詳細をすべて網羅するわけではありません。その他の手順については、バンドルされた PSO キャッシュの作成、「コレクションフロー」セクションの「Unreal Engine」のガイダンスを参照してください。

  1. PSO ログ記録が有効になっているアプリケーションのシェーダーを生成します。

    1. PSO 対応アプリケーションでパッケージ化されたビルドを使用して、新しい Amazon GameLift Streams アプリケーションを作成します。

    2. PSO ログ記録アプリで -logPSO コマンドを使用してストリームを開始します。Amazon GameLift Streams コンソールのストリーム設定のテストページで、コマンドライン引数オプションを使用できます。

      重要

      可能な限り多くのシェーダーを生成するには、必ず環境のすべての領域またはレベルにアクセスしてください。

    3. ストリームを閉じる前に、アクティブなストリームセッションでエクスポート機能を有効にします。詳細については、「ストリームセッションファイルのエクスポート」を参照してください。

    4. メニューまたは Unreal シャットダウンコマンドを使用して、アプリケーションを終了します。ストリームを直接閉じた場合、Unreal シェーダーパイプラインファイルは生成されません。

    5. エクスポートステップで指定した Amazon S3 バケットからストリームセッションエクスポート .zip ファイルをダウンロードします。ダウンロードリンクは、セッションページの Amazon GameLift Streams コンソールにあります。

  2. Unreal シェーダーパイプラインファイルを Amazon GameLift Streams アプリケーションにパッケージ化します。

    1. のストリームセッションエクスポートで、記録された PSO ファイル (rec.pipelinecache) を見つけますSaved/CollectedPSOs。Unreal コマンドを使用して PSO ファイルを解凍します。

    2. 解凍から生成された出力を使用して、新しい Unreal ビルドをパッケージ化します。Unreal ガイダンスのセクション「PSO キャッシュの変換」および「アプリケーションに PSO キャッシュを含める」に従ってください。

      重要

      「PSO キャッシュの変換」セクションで Unreal コマンドを実行するときは、同じドライバーのバージョン入力ファイルを使用していることを確認してください。例: DX12 では、入力として SM6 ファイルのみを使用します。そうしないと、新しいアプリケーションのパッケージ化時にエラーが発生します。

    3. PSO ファイルを使用して、新しいパッケージ化されたビルド用の新しい Amazon GameLift Streams アプリケーションを作成します。

    4. ストリームを起動してテストするときは、PSO キャッシュがロードされていることを確認します。ゲームログで次の行を確認します。

      Opened FPipelineCacheFile: ../../...
注記

アプリケーションを更新したり、Amazon GameLift Streams アプリケーションを新しいストリームグループにリンクしたりするたびに、これらのステップを繰り返す必要がある場合があります。新しいストリームグループには、 サービスから更新された GPU ドライバーを含めることができます。

アプリケーションの問題

事前チェック

  • 別のマシンでアプリケーションを実行して、正しくパッケージ化されていることを確認します。これにより、アプリケーションコンテンツに、他のデバイスで機能しない可能性のあるハードコードされたパス、欠落しているアセット、ライブラリ、またはバイナリが含まれていないことを確認します。

  • (オプション) Amazon GameLift Streams ストリームクラスと同等の GPU を備えたマシンでアプリケーションを実行します。これにより、アプリケーションのレンダリング設定が GPU と互換性があり、パフォーマンスが期待を満たしていることを確認します。

  • UDP ポート 33435-33465 を開いて、Amazon GameLift Streams からのストリーミングを許可します。Amazon GameLift Streams がこれらのポートに到達できない場合、黒や灰色の画面などのストリーミングの問題が発生する可能性があります。

アプリケーションが Proton の Amazon GameLift Streams と連携しない

画面解像度によるアプリケーションの問題

1920x1080 ではない全画面解像度を使用しようとすると、アプリケーションがフリーズ、クラッシュ、または正しくレンダリングされない可能性があります。ボーダーレス全画面ウィンドウを使用してアプリケーションを実行し、解像度を変更しないことをお勧めします。

MacOS クライアントでキー入力がスタックしているように見える

MacOS クライアントでは、コマンド修飾キーと別のキーを同時に押してキーイベントを繰り返すと、キーが突然停止しているように見えることがあります。たとえば、 コマンドキーも押されると、矢印キーがスタックすることがあります。ゲームでは、矢印キーを使用してカメラを回転すると、カメラは無限に回転します。

  • 問題: MacOS の コマンドキーは Meta キーイベントにマッピングされ、Microsoft Windows の Windows キーにマッピングされます。問題は、コマンドと別のキーを同時に押すと MacOS ブラウザに影響するバグです。ここでは、リリース時に Meta キーがリセットされますが、ブラウザが矢印キーのキーアップイベントをキャプチャしなかったため、Web SDK クライアントはキーアップイベントをサーバーに送信せず、ストリーミングアプリケーションはキーが押されていると見なします。

  • 解決策: コマンドキーを使用していない場合は、Web SDK のInputConfigurationインターフェイスにある Web SDK キーボードフィルターメカニズム (keyboardFilter) を使用して除外できます。

マウスの動きは Amazon GameLift Streams で動作が異なります

予想よりも速く移動するなど、Amazon GameLift Streams でストリーミングするときにマウスの動きの動作が異なる場合は、アプリケーションでマウス処理とカーソル管理のロジックを調整する必要がある場合があります。

  • 問題: Amazon GameLift Streams はヒューリスティックを使用して、マウスイベントを「相対」モードで送信するか「絶対」モードで送信するかを選択します。相対モードでは、新しいマウス更新は、前回の更新と少しずつ異なります。絶対モードでは、マウスカーソルはクライアントと同期された画面位置に継続的に強制されます。ストリーミングされたコンテンツにオペレーティングシステムカーソルが表示されると、ヒューリスティックは常に絶対座標を選択します。これにより、アプリケーションが小さな相対的な更新を期待している場合、予期しない大きな移動デルタが発生する可能性があります。

  • 解決策: アプリケーションでマウスの相対モーション (FPS 形式のカメラコントロールやドラッグベースのインタラクションなど) が予想される場合は、マウスインタラクション中にオペレーティングシステムカーソルを非表示にします。たとえば、マウスダウンでカーソルを非表示にし、マウスアップで再度表示します。これにより、ドラッグモーションは相対座標を使用し、絶対位置はボタンが放されたときにのみ同期されます。

Amazon GameLift Streams でのマウスの動きの詳細については、「」を参照してくださいマウスの移動処理

Unreal Engine アプリケーションがクラッシュするか、追加の依存関係が必要です

Unreal Engine アプリケーションがクラッシュ、停止、または Microsoft Visual C++ ランタイムなどの追加の依存関係をインストールする必要がある場合は、以下を試してください。

  • 正しい実行可能ファイルを使用します。アプリケーションが Amazon GameLift Streams で正しく動作するには、アプリケーションパスをBinaries/Win64/サブフォルダにある完全な実行可能ファイル、または同様のファイルに設定します。Unreal Engine は、フォルダのルートに小さな実行可能ファイル (ショートカット) とBinaries/Win64/サブフォルダに完全な実行可能ファイルという 2 つの実行可能ファイルを生成します。完全な実行可能ファイルがない場合、アプリケーションが正しく構築されていない可能性があります。たとえば、サンプルの Unreal アプリケーションの次のフォルダ構造を参照してください。

    BuildApp |-> MyUnrealApp.exe |-> MyUnrealApp |-> Binaries |-> Win64 |-> MyUnrealApp.exe
  • Unreal Engine Asserts をオフにします。マクロのチェック、検証、確認を無効にします。これにより、アプリケーションがクラッシュダンプを作成するのを防ぐことができます。そうしないと、Amazon GameLift Streams でアプリケーションが停止します。アサートが有効になっている場合は、遅延が予想されます。詳細については、Unreal Engine ドキュメントの「アサート」を参照してください。

    • マクロのチェックと検証を無効にするUSE_CHECKS_IN_SHIPPING=0ように を設定します。

    • マクロの確認を無効にするhandleensurepercent=0ように を設定します。

Windows アプリケーションが起動時に終了する

Windows アプリケーションが起動時に終了した場合、アプリケーションに必要な DLLsがない可能性があります。アプリケーションがデバッグビルドの場合は、特に Visual C++ ライブラリ DLLs のデバッグバージョンが必要です。

これを解決するには、ビルドと DLLs side-by-sideパッケージ化することをお勧めします。手順については、「Microsoft によるデバッグ実行可能ファイルを実行するテストマシンを準備する」を参照してください。

パッケージ化されたビルドと DLLs、Amazon EC2 インスタンスなどのクリーンマシンでアプリケーションをテストします。Amazon GameLift Streams で試す準備ができたら、このパッケージを使用して新しいアプリケーションを作成します。必ず、含まれている DLLs でビルドを実行する正しい実行可能ファイルを選択してください。

一般的に、Amazon GameLift Streams を試す前に、まずクリーンマシンでビルドをテストすることをお勧めします。Amazon EC2 インスタンスでのテストの手順については、「」を参照してくださいリモートマシンをセットアップする

Amazon GameLift Streams サービスへのリクエスト時にアクセスが拒否されました

Amazon GameLift Streams アクションを実行したり、リソースを使用しようとしたときに「アクセス拒否」例外が発生した場合、 AWS Identity and Access Management (IAM) ロールのアクセス許可が不十分である可能性があります。これは、StartStreamSession の呼び出しなど、Amazon GameLift Streams サービスへのリクエストが原因で発生します。

影響を受ける IAM ロールのポリシーに Amazon GameLift Streams の適切なアクセス許可があることを確認します。以下をチェックしてください:

  • IAM ロールに明示的な「すべて拒否」ポリシーがある場合は、NotAction 要素に を追加して、Amazon GameLift Streams "gameliftstreams:*"をそのポリシーの例外として明示的に一覧表示する必要があります。例:

    { "Sid": "DenyAllExceptListedIfNoMFA", "Effect": "Deny", "NotAction": [ "iam:CreateVirtualMFADevice", "iam:EnableMFADevice", "iam:GetUser", "iam:ListMFADevices", "iam:ListVirtualMFADevices", "iam:ResyncMFADevice", "sts:GetSessionToken", "gameliftstreams:*" // Add this ], "Resource": "*", "Condition": { "BoolIfExists": {"aws:MultiFactorAuthPresent": "false"} } }
  • その他のトラブルシューティングについては、IAM ユーザーガイド「アクセス拒否エラーメッセージのトラブルシューティング」を参照してください。