設計上の重要な考慮事項

ゲームパッドのサポートを実装する際は、プレーヤーがスムーズにゲームをプレイできるように、次の重要な要件を考慮してください。

ゲームがコントローラに対応していることを Google Play ストアのユーザーに知らせる

Android マニフェストでゲームパッド機能を宣言すると、Google Play にゲームパッド対応のアイコンとタグが表示されます。この申告を行うことで、より多くのユーザーにゲームを見つけてプレイしてもらえるようになります。構成手順の詳細とマニフェストの例については、Google Play ストアでの公開設定とゲームパッドのハードウェア機能をご覧ください。

プレーヤーが入力デバイスをシームレスに切り替えられるようにする

プレーヤーが入力デバイスを切り替えるときに、シームレスに切り替えられるようにします。プレーヤーが設定メニューで入力方法を手動で切り替えたり、ゲームを再起動したりする必要がないようにしてください。

レーシング ゲームの画面を並べて表示: モバイルでのプレイ中はタッチ ステアリングとニトロボタンが表示され、物理的なゲームパッドが接続されると自動的に非表示になります。
図 1. ゲームプレイを中断することなく、入力方法をシームレスに切り替えることができます。

自動的に切り替え、ホットプラグをサポート

サポートされているすべての入力デバイスを同時にアクティブにして、プレーヤーがすぐに切り替えられるようにします。実行時に入力デバイスの変更をリッスンして、アプリを再起動することなく、接続時にゲームパッドがすぐに動作するようにします。また、ゲームプレイ中にアクティブなコントローラが切断された場合は、利用可能な他の入力方法にシームレスに移行します。コントローラの接続と切断を検出するには、ゲーム コントローラが接続されていることを確認する(Kotlin または Java)またはコントローラ ステータス コールバックを登録または削除する(C++ ゲーム コントローラ ライブラリ)をご覧ください。Android 16(API レベル 36)以前では、コントローラの接続または切断によってアクティビティが再起動されないように、マニフェストで android:configChanges="keyboard|keyboardHidden|navigation" も宣言します(構成変更を処理するをご覧ください)。

非推奨 推奨
非推奨: コントローラが検出されたときに、プレーヤーが [設定] で入力モードを手動で切り替えてゲームを再起動する必要があるモーダル ダイアログ。 推奨: コントローラが接続されていることを確認する、邪魔にならないバナー。入力はゲームパッドのプロンプトで自動的に切り替わります。

アクティブなデバイスに合わせてボタンのアイコンとテキストガイドを更新

アクティブな入力デバイスに基づいて、画面上のボタンアイコンとテキストガイドを動的に切り替えます。たとえば、ゲームがゲームパッド入力を検出したときに、「タップしてジャンプ」などのタップ操作ガイドを「B を押してジャンプ」(またはプラットフォームに相当するボタン)に移行します。

アドベンチャー ゲームの画面を並べて表示: ゲームパッドを接続すると、「タップしてジャンプ」と「タップして宝箱を開く」というプロンプトが「B を押してジャンプ」と「A を押して宝箱を開く」に切り替わります。
図 2. 画面上のボタンアイコンとガイドテキストを、アクティブなコントローラに合わせて動的に更新する。

ゲームパッドがアクティブなときに仮想タップ操作を非表示にする

画面が煩雑になり、プレーヤーが混乱するのを防ぐため、ゲームパッドがアクティブなときは、仮想ジョイスティックや画面上のボタンなど、仮想タッチ UI 要素をすべて非表示にします。プレーヤーが画面をタップしたら、すぐにタッチ UI を復元します。

アドベンチャー ゲームの画面を並べて表示。仮想ジョイスティックと剣攻撃ボタンは、タッチプレイ中は表示され、ゲームパッドが接続されると非表示になり、視界を遮らない。
図 3. ゲームパッド入力がアクティブなときに仮想タップ操作を非表示にする。

すべてのゲーム内ロジックでゲームパッドを完全にサポートする

フォールバック メカニズムとしてタッチに依存しないようにします。メニューを終了したり、ゲームの特定の部分を実行したりするためにタッチを使用すると、没入感が損なわれる可能性があります。プレーヤーがゲームパッドのみを使用して操作できるように、すべてのゲーム内インタラクションを実装します。

すべての HUD 要素とダイアログをコントローラ入力にマッピングする

プレーヤーが画面に触れる必要がないように、専用のショートカット ボタン、バンパー、方向パッド(D-pad)ナビゲーションを使用して、コントローラですべての画面上のヘッドアップ ディスプレイ(HUD)要素、メニュー、ダイアログを開いたり、操作したり、閉じたりできるようにします。

非推奨 推奨
非推奨: モーダル ダイアログと画面上のインターフェース アイコンにコントローラのショートカットがなく、プレーヤーが画面上の閉じるボタンをタップする必要がある。 推奨: 画面上のインターフェース アイコンとモーダル ダイアログ ボタンが、明確な A ボタンと B ボタンのプロンプトでコントローラの入力にマッピングされている。

ゲームプレイと UI の入力コンテキストを分離する

ゲームプレイ中にメニューやダイアログが開いた場合は、コンテキストを切り替えるか、バックグラウンド コントロールをブロックして、ゲームパッドがアクティブな UI のみを操作するようにします。この分離により、メニューでの方向ナビゲーションやボタンの押下が、バックグラウンドでキャラクターの移動やアクションを誤ってトリガーすることを防ぎます。

非推奨 推奨
非推奨: インベントリ メニューを開いて操作しているときに、誤ってキャラクターが移動したり、バックグラウンドで武器を振ったりする。 推奨: インベントリ メニューを開くと、バックグラウンドのゲームプレイ入力がブロックされるため、D-pad とボタンを押しても、キャラクターは静止したまま、アイテム グリッドのフォーカスのみが移動します。

画面が開いたらすぐに初期フォーカスを割り当てる

プレーヤーがボタンを直接タップするタップ入力とは異なり、ゲームパッド ナビゲーションでは、現在フォーカスされている要素から隣接する要素に移動します。初期フォーカス ターゲットなしで新しいメニューまたはダイアログが開くと、D-pad と確認入力が応答しないか、バックグラウンド要素にトラップされたままになることがあります。画面が開いたらすぐに、デフォルトのボタンに初期フォーカスを割り当てます。

非推奨 推奨
非推奨: 一時停止メニューが開いたときに、どのボタンにもフォーカスが当たっていないため、プレーヤーは D-pad での操作を開始できません。 推奨: 一時停止メニューでは、デフォルトの [続行] ボタンが、明確なフォーカス枠と A ボタンのプロンプトですぐにハイライト表示されます。