「Xbox によって設計されたハンドヘルド互換性プログラムのガイドライン」に既に記載されている確認事項に加えて、開発者がハンドヘルド デバイス上で動作するゲームを開発する際に考慮すべき点がいくつかあります。
ハンドヘルドのドッキング時の動作
一部のハンドヘルドは、ドッキング時にプレイできる場合があります。 ハンドヘルドがドッキングされているかどうかを確認する単純な API はありませんが、ドッキングされたデバイスには外部ディスプレイが接続されている可能性があります。 開発者は、EnumDisplayDevices および EnumDisplaySettings API を使用して外部ディスプレイの有無を確認できます。
外部ディスプレイがあることを判断する方法は他にも多数あります。
ハンドヘルド デバイスがドッキングされている場合:
- 追加のゲームパッドを確認します。 ハンドヘルドに組み込まれているものはありますが、ユーザーが追加のゲームパッドを接続している可能性もあります。
- 接続されたディスプレイの画面サイズを確認します。
- ゲームパッドは依然として主要な入力メカニズムであるため、仮想キーボードの推奨事項は引き続き維持されます。
- 一部のプレイヤーは、本体と同様にマウスとキーボードを接続する場合があります。
保証された入力
ゲーム用ハンドヘルド デバイスによっては追加の入力オプションを備えているものもありますが、開発者はゲーム用ハンドヘルド デバイスが次の入力を備えていることを前提にできます:
- A、B、X、Y ボタン
- LB/RB
- 左右のトリガー
- 左/右サム スティック
- D-pad
- Menu button
- ビュー ボタン
ドッキング時に確認すべき事項として言及されていましたが、ドッキングされているかどうかに関係なく、開発者は常に、接続されているすべてのゲームパッドと入力デバイスを必ず確認する必要があります。
電源
ハンドヘルドがバッテリーではなく AC 電源を使用しているかどうかを確認したいゲームは、GetSystemPowerStatus 関数を呼び出すことができます。 この関数は、デバイスが AC 電源を使用しているかどうかを示し、バッテリーの充電状態 (高、低、重大、充電中) の概要を提供します。
特定のゲームにどれだけの電力が必要になるかが明らかではないため、開発者はデバイスのバッテリー寿命への影響も考慮する必要があります。 Xbox Sustainability Toolkit には、電力を節約するための一般的な推奨事項が記載されており、これらはハンドヘルドにも適用できます。
最大の節電方法は次のとおりです。
- VSync を有効にして、GPU のアイドル時間を増やし、電力を節約する。
- 内部レンダリングの解像度を下げ、アップスケール パスを使用する。
- フレーム レートを下げ、電力を節約する。 これはゲームプレイに影響を与える可能性があります。
- 全画面表示メニューまたは UI 要素が表示されている場合 (またはゲームがポーズされている場合)、ワールドのレンダリングを停止する。
- プレイヤーが離席したと判断される入力のアイドル状態が検出されたときに、ゲームをポーズする。
画面の寸法
ゲーム用ハンドヘルドによって画面の解像度が異なる場合がありますが、以下を参考にできます:
- 画面サイズは 7 インチ以上です。
- 画面の縦横比は 16:9 または 16:10 です。
デバイスに物理的に統合されたディスプレイの画面サイズを知りたい開発者は、GetIntegratedDisplaySize 関数を呼び出すことができます。 この関数は、マシンに物理的に統合されているディスプレイの対角画面サイズを報告します。
ハンドヘルド エクスペリエンスのベスト プラクティス サンプル
ハンドヘルド デバイス向けにゲームを構築および最適化するための詳細情報として、ネイティブ C++ サンプルと Unity マネージド C# サンプルの 2 つのサンプルを公開しました。 どちらも、API を活用してゲームのハンドヘルド体験を簡単に管理するための同様のベスト プラクティスを提供します。
- デバイスがハンドヘルドであるかどうかを判断します。
- デバイスがバッテリ電源、充電、または外部電源で実行されているかどうかを判断します。
- 統合ディスプレイのプロパティを含む、デバイス固有のプロパティを参照します。
- DPI の変更を処理し、それに応じて UI をスケーリングします。
- テキスト入力に仮想キーボードを活用します。
- ネットワーク デバイスと種類を調べます。
- ネットワークと Bluetooth の接続状況を判断します。
- ゲームパッド、キーボード、マウスからの入力を処理します。
- 入力のモーダル性を決定します (つまり、最新の入力デバイスが使用されています)。
これらのサンプルは、Windows のハンドヘルド ゲーム シナリオに役立つ Windows の機能強化や、これらのデバイス向けに開発するゲーム開発者からのフィードバックを反映して、今後も更新を続けます。
これらのサンプルを取得するには、次を参照してください:
- ネイティブ C++ サンプル: GitHub の C++ サンプル。
- Unity マネージド C# サンプル: GitHub 上の Unity マネージド C# サンプル。