ゲームパッドのサポートを実装する際は、プレーヤーがスムーズにゲームをプレイできるように、次の重要な要件を考慮してください。
ゲームがコントローラに対応していることを Google Play ストアのユーザーに知らせる
Android マニフェストでゲームパッド機能を宣言すると、Google Play にゲームパッド対応のアイコンとタグが表示されます。この申告を行うことで、より多くのユーザーにゲームを見つけてプレイしてもらえるようになります。構成手順の詳細とマニフェストの例については、Google Play ストアでの公開設定とゲームパッドのハードウェア機能をご覧ください。
プレーヤーが入力デバイスをシームレスに切り替えられるようにする
プレーヤーが入力デバイスを切り替えるときに、シームレスに切り替えられるようにします。プレーヤーが設定メニューで入力方法を手動で切り替えたり、ゲームを再起動したりする必要がないようにしてください。
自動的に切り替え、ホットプラグをサポート
サポートされているすべての入力デバイスを同時にアクティブにして、プレーヤーがすぐに切り替えられるようにします。実行時に入力デバイスの変更をリッスンして、アプリを再起動することなく、接続時にゲームパッドがすぐに動作するようにします。また、ゲームプレイ中にアクティブなコントローラが切断された場合は、利用可能な他の入力方法にシームレスに移行します。コントローラの接続と切断を検出するには、ゲーム コントローラが接続されていることを確認する(Kotlin または Java)またはコントローラ ステータス コールバックを登録または削除する(C++ ゲーム コントローラ ライブラリ)をご覧ください。Android 16(API レベル 36)以前では、コントローラの接続または切断によってアクティビティが再起動されないように、マニフェストで android:configChanges="keyboard|keyboardHidden|navigation" も宣言します(構成変更を処理するをご覧ください)。
| 非推奨 | 推奨 |
|---|---|
|
|
アクティブなデバイスに合わせてボタンのアイコンとテキストガイドを更新
アクティブな入力デバイスに基づいて、画面上のボタンアイコンとテキストガイドを動的に切り替えます。たとえば、ゲームがゲームパッド入力を検出したときに、「タップしてジャンプ」などのタップ操作ガイドを「B を押してジャンプ」(またはプラットフォームに相当するボタン)に移行します。
ゲームパッドがアクティブなときに仮想タップ操作を非表示にする
画面が煩雑になり、プレーヤーが混乱するのを防ぐため、ゲームパッドがアクティブなときは、仮想ジョイスティックや画面上のボタンなど、仮想タッチ UI 要素をすべて非表示にします。プレーヤーが画面をタップしたら、すぐにタッチ UI を復元します。
すべてのゲーム内ロジックでゲームパッドを完全にサポートする
フォールバック メカニズムとしてタッチに依存しないようにします。メニューを終了したり、ゲームの特定の部分を実行したりするためにタッチを使用すると、没入感が損なわれる可能性があります。プレーヤーがゲームパッドのみを使用して操作できるように、すべてのゲーム内インタラクションを実装します。
すべての HUD 要素とダイアログをコントローラ入力にマッピングする
プレーヤーが画面に触れる必要がないように、専用のショートカット ボタン、バンパー、方向パッド(D-pad)ナビゲーションを使用して、コントローラですべての画面上のヘッドアップ ディスプレイ(HUD)要素、メニュー、ダイアログを開いたり、操作したり、閉じたりできるようにします。
| 非推奨 | 推奨 |
|---|---|
|
|
ゲームプレイと UI の入力コンテキストを分離する
ゲームプレイ中にメニューやダイアログが開いた場合は、コンテキストを切り替えるか、バックグラウンド コントロールをブロックして、ゲームパッドがアクティブな UI のみを操作するようにします。この分離により、メニューでの方向ナビゲーションやボタンの押下が、バックグラウンドでキャラクターの移動やアクションを誤ってトリガーすることを防ぎます。
| 非推奨 | 推奨 |
|---|---|
|
|
画面が開いたらすぐに初期フォーカスを割り当てる
プレーヤーがボタンを直接タップするタップ入力とは異なり、ゲームパッド ナビゲーションでは、現在フォーカスされている要素から隣接する要素に移動します。初期フォーカス ターゲットなしで新しいメニューまたはダイアログが開くと、D-pad と確認入力が応答しないか、バックグラウンド要素にトラップされたままになることがあります。画面が開いたらすぐに、デフォルトのボタンに初期フォーカスを割り当てます。
| 非推奨 | 推奨 |
|---|---|
|
|