> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ハンドヘルド デバイスに関する追加の考慮事項

> ドック モード検出、保証されたゲームパッド入力、GetSystemPowerStatus 電源管理、画面サイズの考慮事項を含む、追加のハンドヘルド ガイダンス。

この記事では、ハンドヘルド デバイスで効果的に動作するゲームを開発する際に留意すべきその他の事項を扱います。これらの考慮事項は、[ハンドヘルド Windows デバイス向けの GDK ゲームの最適化](/build/gdk-and-engines/handheld/handheld-guidance) のチェック項目を補完します。

## ハンドヘルドのドック時の挙動

一部のハンドヘルドはドックした状態でプレイされます。ハンドヘルドがドックされているかを確認する API はありませんが、ドックされたデバイスには外部ディスプレイが接続されている可能性があります。[EnumDisplayDevices](https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-enumdisplaydevicesa) および [EnumDisplaySettings](https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-enumdisplaysettingsa) API を使用して、外部ディスプレイを確認できます。

ハンドヘルド デバイスがドックされている場合、次の方法で接続された外部ディスプレイを確認してください。

* 追加のゲームパッドを確認します。ハンドヘルドの内蔵ゲームパッドは常に利用可能ですが、ユーザーは追加のゲームパッドを接続することもあります。
* 接続されたディスプレイの画面サイズを確認します。
* ゲームパッドが依然として主要な入力メカニズムであるため、仮想キーボードに関する推奨事項は引き続き有効です。
* 一部のプレイヤーは、コンソールと同様にマウスとキーボードを接続することがあります。

## 保証される入力

さまざまなゲーミング ハンドヘルドは追加の入力オプションを持つことがありますが、ハンドヘルド デバイスには以下の入力があります。

* A、B、X、Y ボタン
* 左バンパー、右バンパー
* 左トリガー、右トリガー
* 左サムスティック、右サムスティック
* 方向パッド
* メニュー ボタン
* View ボタン

デバイスがドックされているかどうかに関わらず、接続されているすべてのゲームパッドと入力デバイスを常に確認してください。ドック時には View ボタンも確認します。

## 電源

ハンドヘルド デバイスがバッテリーではなく AC 電源を使用しているかを確認するには、[GetSystemPowerStatus](https://learn.microsoft.com/windows/win32/api/winbase/nf-winbase-getsystempowerstatus) 関数を呼び出します。これは、デバイスが AC 電源を使用しているかを示し、バッテリー充電状態（high、low、critical、または charging）のサマリーを提供します。

ゲームが必要とする電力は常に明白ではないため、ゲームがデバイスのバッテリー寿命に与える影響を考慮してください。[XBOX Sustainability Toolkit](https://aka.ms/SustainabilityToolkit) の可能な節電推奨事項は、ハンドヘルドにも適用できます。

次の方法で節電を最大化してください。

* VSync を有効にして GPU にアイドル時間を増やし、消費電力を削減します。
* 内部レンダリング解像度を下げ、アップスケール パスを適用します。
* フレームレートを下げて電力を節約します。注: フレームレートを下げるとゲームプレイに影響することがあります。
* フル スクリーンのメニューや UI 要素が表示されているとき、またはゲームが一時停止しているときは、世界のレンダリングを停止します。
* 入力アイドルが検出され、プレイヤーが非アクティブな場合はゲームを一時停止します。

## 画面サイズ

異なるゲーミング ハンドヘルドはさまざまな画面解像度を持ちますが、次の標準は信頼できます。

* 画面の対角サイズは少なくとも 7 インチ（17.8 cm）です。
* 画面のアスペクト比は 16:9 または 16:10 です。

ハンドヘルドに統合されたディスプレイの対角サイズを取得するには、[GetIntegratedDisplaySize](https://learn.microsoft.com/windows/win32/api/sysinfoapi/nf-sysinfoapi-getintegrateddisplaysize) 関数を呼び出します。

## ハンドヘルド体験のベスト プラクティス サンプル

ハンドヘルド デバイス向けにゲームを構築および最適化する方法に関する詳細については、Microsoft は 2 つのサンプル（ネイティブ C++ サンプルと Unity マネージド C# サンプル）をリリースしました。両方とも、API を使ってゲームのハンドヘルド体験を容易に管理する方法に関する類似のベスト プラクティスを提供します。

* デバイスがハンドヘルドかを判定します。
* デバイスがバッテリー電源で動作しているか、充電中か、外部電源を使用しているかを判定します。
* 統合ディスプレイのプロパティを含む、デバイス固有のプロパティを参照します。
* DPI 変更を処理し、UI を適切にスケールします。
* テキスト入力に仮想キーボードを使用します。
* ネットワーク デバイスとタイプを参照します。
* ネットワークと Bluetooth® の接続を判定します。
* ゲームパッド、キーボード、マウスからの入力を処理します。
* 入力モダリティを判定します。たとえば、最も最近使われた入力デバイスの識別です。

Microsoft は、Windows がハンドヘルド ゲーミング シナリオに役立つ機能強化を追加すると、およびこれらのデバイス向けにゲームを構築する開発者からのフィードバックが集まると、これらのサンプルを更新します。

これらのサンプルを取得するには、次のリソースを参照してください。

* Native C++ Sample: [GitHub 上の C++ サンプル](https://aka.ms/hhexpsample)。
* Unity Managed C# Sample: [GitHub 上の Unity マネージド C# サンプル](https://aka.ms/hhexpsample_unity)。


## Related topics

- [ゲーム ランチャーとハンドヘルド](/ja-jp/build/gdk-and-engines/handheld/handheld-launchers.md)
- [Handheld Compatibility プログラム ガイドライン](/ja-jp/build/gdk-and-engines/handheld/handheld-guidance.md)
- [PC ハンドヘルド概要](/ja-jp/build/gdk-and-engines/handheld/overview.md)
- [Handheld Compatibility ガイドラインとテスト ケース](/ja-jp/build/gdk-and-engines/handheld/handheld-guidelines-and-testcases.md)
- [Unity で GDK を使用する](/ja-jp/build/gdk-and-engines/unity/unity.md)
