

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

# Amazon GameLift Streams でのカスタムストリーム解決
<a name="custom-stream-resolution"></a>

デフォルトでは、Amazon GameLift Streams は、業界標準の 1920 x 1080 ピクセルのフル HD 解像度で、16 x 9 のアスペクト比でインタラクティブストリームを配信します。プレイヤーのデバイスの画面形状またはアスペクト比に合わせて、セッションごとにカスタム解像度を設定できます。カスタム解像度は、横向き、縦向き、正方形のアスペクト比をサポートします。

カスタム解像度を使用して以下を行います。
+ パディングやトリミングを行わずに、フルスクリーンエクスペリエンスをネイティブデバイスアスペクト比で電話やタブレットにストリーミングします。
+ 超ワイドモニターのアスペクト比をマッチングして、ネイティブのワイドスクリーンエクスペリエンスを実現します。
+ non-full-screenウェブエクスペリエンスに埋め込むための任意のディメンションでゲームストリームをサポートします。

ストリームクラスやランタイム環境に関係なく、すべての Amazon GameLift Streams サービス設定でカスタム解決を使用できます。

## 解像度の仕組み
<a name="custom-stream-resolution-how-it-works"></a>

カスタム解像度を設定すると、Amazon GameLift Streams はセッションの仮想モニターを希望の解像度に設定します。これはセッションの**モニター解像度**になります。最高のビジュアル品質を得るには、アプリケーションが設定されたモニター解像度にレンダリングする必要があります。

モニター解像度は、仮想モニターのディメンションとフレームがキャプチャされる解像度を決定します。2 つの追加の Web SDK 設定は、プレイヤーに配信されるストリームの解像度に影響します。
+ **最大解像度:** ストリーム解像度を上限とするウェブ SDK 設定。指定しない場合、上限は適用されず、完全なモニター解像度がストリーミングされます。「[最大解像度でのインタラクション](#custom-stream-resolution-max-resolution)」を参照してください。
+ **動的解像度:** ストリーム解像度を自動的に調整して、ビューワーのネットワーク接続が維持できる最高のビジュアル品質を実現します。「[動的解像度とのやり取り](#custom-stream-resolution-dynamic-resolution)」を参照してください。

いずれの設定もセッションのモニター解像度を変更しません。

## カスタム解決の制約
<a name="custom-stream-resolution-constraints"></a>

指定する解像度は、次の要件を満たしている必要があります。


| 制約 | 値 | 
| --- | --- | 
| 最大合計ピクセル数 | 2,073,600 (1920 × 1080) | 
| 幅と高さの範囲 | 320～4096 ピクセル | 
| ディメンションパリティ | 幅と高さの両方を偶数にする必要があります | 

サービスは、セッションを開始するときにこれらの制約を検証します。解決が要件を満たしていない場合、リクエストは検証エラーで失敗します。

## カスタム解像度を設定する
<a name="custom-stream-resolution-set"></a>

コンソール、CLI、または API AWS を使用してストリームセッションを開始するときに、カスタム解決を設定できます。

### Amazon GameLift Streams コンソールの使用
<a name="custom-stream-resolution-set-console"></a>

カスタム解像度でストリームをテストするには:

1. [Amazon GameLift Streams コンソール](https://console.aws.amazon.com/gameliftstreams/)を開き、ストリームグループに移動します。

1. **ストリームのテスト**を選択します。

1. **解像度**ドロップダウンで、デスクトップ、タブレット、またはモバイルデバイスの解像度を選択します。

1. **テストストリーム**を選択してセッションを開始します。

ストリームがアクティブになったら、リアルタイム統計オーバーレイで現在の解像度を表示できます。

### CLI AWS の使用
<a name="custom-stream-resolution-set-cli"></a>

`--display-configuration` パラメータがある `start-stream-session` コマンドを使用します。

```
aws gameliftstreams start-stream-session \
  --identifier sg-ExampleStreamGroup \
  --application-identifier a-ExampleApp \
  --protocol WebRTC \
  --signal-request "your-signal-request" \
  --display-configuration '{"Resolution":{"Width":1920,"Height":1080}}'
```

### API を使用する
<a name="custom-stream-resolution-set-api"></a>

[StartStreamSession](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_StartStreamSession.html) API リクエストに、 `DisplayConfiguration`パラメータを含めます。

```
{
  "ApplicationIdentifier": "a-ExampleApp",
  "Protocol": "WebRTC",
  "SignalRequest": "your-signal-request",
  "DisplayConfiguration": {
    "Resolution": {
      "Width": 1920,
      "Height": 1080
    }
  }
}
```

## デバイスに最適な解像度を計算する
<a name="custom-stream-resolution-calculate"></a>

解像度の制約を満たす任意の解像度を使用できます。次の式は、特定のアスペクト比の最大解像度を見つけるために推奨されるアプローチの 1 つです。使用可能なピクセルを最大化して、最高のビジュアル品質を実現します。

```
height = floor_to_even( sqrt(2,073,600 * H / W) )
width  = floor_to_even( height * W / H )
```

この式では、 `W:H`はターゲットアスペクト比で、 `2,073,600`は最大合計ピクセル数 (1920 × 1080) です。関数は、最も近い偶数に`floor_to_even(x)`切り下げます。

**Example 19.5:9 (携帯電話)**  

```
height = floor_to_even( sqrt(2,073,600 * 9 / 19.5) ) = floor_to_even(978.2) = 978
width  = floor_to_even( 978 * 19.5 / 9 )             = floor_to_even(2118.3) = 2118
→  Resolution: 2118 × 978  (2,071,404 pixels, 99.9% utilization)
```

ポートレート解像度の場合は、ランドスケープ解像度を計算し、幅と高さの値を入れ替えます。

## デバイスの一般的な解像度値
<a name="custom-stream-resolution-presets"></a>

次の値は、一般的なデバイスカテゴリをカバーする汎用標準比率を使用します。個々のデバイスのネイティブアスペクト比がわずかに異なるため、視覚的に黒い棒はごくわずかです。ピクセル完全フィルの場合は、上記の式でデバイスの正確なネイティブアスペクト比を使用します。


| Category | アスペクト比 | ランドスケープ | ポートレート | 一致するデバイス | 
| --- | --- | --- | --- | --- | 
| Desktop | 16:9 | 1920 × 1080 | 1080 × 1920 | デスクトップモニター、TVs、HD モバイル | 
| Desktop | 16:10 | 1820 × 1138 | 1138 × 1820 | ワイドスクリーンモニター、Amazon Fire タブレット | 
| Desktop | 21:9 | 2198 × 942 | 該当しない | 超ワイドモニター | 
| Tablet | 3:2 | 1760 × 1174 | 1174 × 1760 | さまざまな iPads | 
| Tablet | 4:3 | 1660 × 1246 | 1246 × 1660 | iPadsAndroid タブレット | 
| モバイル | 20:9 | 2142 × 964 | 964 × 2142 | Google Pixel、Samsung Galaxy | 
| モバイル | 19.5:9 | 2118 × 978 | 978 × 2118 | iPhonesSamsung Galaxy | 
| モバイル | 18:9 | 2036 × 1018 | 1018 × 2036 | その他の Android スマートフォン | 
| その他 | 1:1 | 1440 × 1440 | 該当しない | 正方形モニター | 

## 最大解像度でのインタラクション
<a name="custom-stream-resolution-max-resolution"></a>

カスタム解像度と最大解像度は、さまざまな目的を果たします。
+ **カスタム解像度:** カスタム解像度を設定すると、セッションのモニター解像度になります。これは、キャプチャされたフレームのアスペクト比やピクセル寸法など、サーバーがレンダリングするものです。
+ **最大解像度:** ストリーム解像度を上限とするウェブ SDK 設定。キャップは、選択した階層の向きの境界ボックス内に収まります (720p の場合は 1280 × 720 など）。フル解像度イメージをデコードできない下位デバイスをターゲットにするには、この設定を使用します。

最大解像度パラメータの詳細については、Amazon GameLift Streams [ドキュメントページの Amazon GameLift Streams](https://docs.aws.amazon.com/gameliftstreams/) Web SDK API リファレンスを参照してください。

## 動的解像度とのやり取り
<a name="custom-stream-resolution-dynamic-resolution"></a>

動的解像度は、ビューワーのネットワーク接続が維持できる最高のビジュアル品質を提供するために、ストリーム解像度を自動的に調整します。この機能は、Amazon GameLift Streams Web SDK バージョン 1.3.0 以降で使用できます。

動的解像度は、セッションのモニター解像度には影響しません。Amazon GameLift Streams は、プレイヤーに配信されるストリーム解像度のみを調整します。帯域幅が制限されている場合、アスペクト比を維持しながらストリーム解像度がスケールダウンします。帯域幅が回復すると、フルモニター解像度または最大解像度の上限までスケールアップします。

たとえば、カスタム解像度を 1080 × 1920 (モバイルポートレート、9:16) に設定すると、プレイヤーは通常の帯域幅で 1080 × 1920 ストリーム全体を受け取ります。プレイヤーのネットワークが制約された場合、動的解像度は 9:16 アスペクト比を維持しながらストリームを低解像度 (720 × 1280 など) にスケールダウンする可能性があります。サーバーのモニター解像度は、全体で 1080 × 1920 のままです。

動的解決パラメータの詳細については、Amazon GameLift Streams [ドキュメントページの Amazon GameLift Streams Web SDK API ](https://docs.aws.amazon.com/gameliftstreams/)リファレンスを参照してください。

## ベストプラクティス
<a name="custom-stream-resolution-best-practices"></a>

Amazon GameLift Streams でカスタム解像度を使用する場合は、次のベストプラクティスに従ってください。
+ **プレイヤーのデバイスアスペクト比を一致させて、文字箱や柱箱を使わずに画面を埋めます。**一般的な解像度値または計算式を使用して、特定のアスペクト比に最適な解像度を見つけます。ポートレート指向のモバイルゲームでは、ポートレート解像度を使用してネイティブの垂直エクスペリエンスを提供します。
+ **ストリーミングエクスペリエンスのためにフロントエンドを最適化します。**モバイルデバイスまたはタブレットにストリーミングするときに、ウェブクライアントがストリームのアスペクト比を正しく処理していることを確認します。
+ **プレイヤーにデプロイする前に、カスタム解像度でアプリケーションをテストします。**ほとんどのアプリケーションは、全画面で実行するときにモニターの解像度に自動的に適応します。ただし、一部のアプリケーションでは 16:9 以外の解像度が適切に処理されない場合があります。
+ **ゲーム内のカメラと UI がアスペクト比に適応していることを確認します。**ゲームカメラの視野を調整して、ビューポートをトリミングするのではなく、シーンの適切な量を表示します。新しいアスペクト比に合わせて UI 要素をリフローまたは再配置します。
+ **アプリケーション内で実行時に仮想モニターの解像度を変更しないでください。**Amazon GameLift Streams は、セッションの開始時にモニターの解像度を設定します。ゲームプレイ中に変更するアプリケーションは、予期しない結果を生成する可能性があります。
+ **アプリケーションとフロントエンドでデバイスのローテーションを処理します。**モニターの解像度は、セッション中に固定されます。ストリーム中のデバイスローテーションをサポートするには、 を介してアプリケーション[アプリケーションとウェブクライアント間のデータチャネル通信](data-channels.md)にローテーションシグナルを送信することをお勧めします。アプリケーションにレンダリングをローテーションさせ、それに応じてフロントエンドを更新します。

## トラブルシューティング
<a name="custom-stream-resolution-troubleshooting"></a>

次の表に、一般的な問題、その原因、推奨される解決策を示します。


| 問題 | 原因 | ソリューション | 
| --- | --- | --- | 
| セッションが検証エラーで開始されない | 解決策が制約を満たさない | 解像度が にリストされているすべての制約を満たしていることを確認します[カスタム解決の制約](#custom-stream-resolution-constraints)。 | 
| アプリケーションレンダリングの解像度が正しくない | アプリケーションが全画面で実行されていないか、ウィンドウモードで別の解像度でレンダリングされている | アプリケーションを全画面で実行するように設定します。アプリケーションは、設定された解像度についてシステムにクエリを実行できます。 | 
| ストリーム解像度が予想よりも低い (同じアスペクト比) | 最大解像度の上限または動的解像度がアクティブ | これは、最大解像度または動的解像度がアクティブな場合に予想される動作です。どちらの機能も、アスペクト比を維持しながらストリーム解像度をスケールダウンします。Web SDK で最大解像度または動的解像度設定を確認します。 | 
| ストリーム解像度がカスタム解像度 (異なるアスペクト比) と異なる | アプリケーションが起動時またはストリーム中にモニターの解像度を変更する | 最大解像度と動的解像度では、この問題は発生しません。これは、モニターの解像度を上書きする一部のアプリケーションの既知の動作です。モニターの解像度を上書きしないアプリケーションを使用すること、またはモニターの解像度で全画面でレンダリングするようにアプリケーションを設定することを検討してください。 | 
| 黒いバーがプレイヤーの画面に表示されます。 | ストリームとデバイス間のアスペクト比の不一致、または内部的に黒いバーを持つアプリケーションレンダリング | 黒いバーがクライアントからのものであるか (アスペクト比の不一致）、アプリケーション自体内にあるかを確認します。プレイヤーのデバイスアスペクト比に一致する解像度値を使用するか、 の式を使用して最適な解像度を計算します[デバイスに最適な解像度を計算する](#custom-stream-resolution-calculate)。 | 