TV ゲームを作成する

テレビ画面には、モバイルゲームでは新しいと思われるさまざまな考慮事項が提示されている 開発できます。これらの分野には、その規模、コントロール方法、すべてのプレーヤーが 表示されます。

ディスプレイ

テレビ画面用のゲームを開発する際には、 低レイテンシに対応できるよう 設計されています

横向き表示のサポート

テレビは常に横向きで、回転させることはできず、縦向きにはなりません。常に設計する テレビゲームを横向きで表示できます

自動低遅延モード

一部のディスプレイでは、グラフィックの後処理を実行できます。この後処理によりグラフィックスが改善します。 レイテンシが増加する可能性がありますHDMI 2.1 対応の新しいディスプレイには、 レイテンシ モードALLM)は、この後処理をオフに切り替えることでレイテンシを最小限に抑えます。対象 ALLM について詳しくは、このモジュールの HDMI 2.1 仕様その他 ディスプレイが、同様の動作のゲームモードをサポートしている場合があります。

Android 11 以降では、ウィンドウで自動低遅延モードまたはゲームをリクエストできます。 モードを使用する場合は、最小限の後処理をリクエストします。これは特に ゲーム アプリケーションやビデオ会議アプリケーションに役立ちます。これらのアプリケーションでは、アプリケーションよりもレイテンシの 最適なグラフィックで最適な状態を 提供することを目指しています

最小限の後処理を有効または無効にするには、 Window.setPreferMinimalPostProcessing(), またはウィンドウの preferMinimalPostProcessing 属性を true に設定します。すべてのディスプレイが最小限の後処理をサポートしているわけではありません。問題の有無を サポートしている場合は、 Display.isMinimalPostProcessingSupported() メソッドを使用します。

入力デバイス

テレビにはタッチ操作のインターフェースがないので 正しく操作して プレーヤーが直感的で楽しいと 感じられることが重要ですコントローラの処理 また、複数のイベントの追跡など、注意を払うべき 正常な切断の処理を行いますゲームを含むすべてのテレビアプリは、 整合性を維持します。詳しくは、テレビの管理 コントローラをご覧ください。 特定のインスタンスのゲーム用のコントローラを処理する ゲームでのテレビ コントローラの使用に関する情報をご覧ください。

キーボードレイアウト

Android 13(API レベル 33)以降では、 getKeyCodeForKeyLocation()。 たとえば、ゲームは WASD キーを使用した動きをサポートしていますが、 異なる位置に A キーと W キーがある AZERTY キーボードキーコードは 次のようなキーが返されます。

Kotlin

val inputManager: InputManager? = requireActivity().getSystemService()

inputManager?.inputDeviceIds?.map { inputManager.getInputDevice(it) }
    ?.firstOrNull { it.keyboardType == InputDevice.KEYBOARD_TYPE_ALPHABETIC }
    ?.let { inputDevice ->
        keyUp = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_W)
        keyLeft = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_A)
        keyDown = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_S)
        keyRight = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_D)
    }

Java

InputManager inputManager = requireActivity().getSystemService(InputManager.class);
InputDevice inputDevice = Arrays.stream(inputManager.getInputDeviceIds())
        .mapToObj(inputManager::getInputDevice)
        .filter( device -> device.getKeyboardType() == InputDevice.KEYBOARD_TYPE_ALPHABETIC)
        .filter(Objects::nonNull)
        .findFirst()
        .orElse(null);
if (inputDevice != null) {
    keyUp = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_W);
    keyLeft = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_A);
    keyDown = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_S);
    keyRight = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_D);
}

この例では、AZERTY キーボードの keyUp が次のように設定されています。 KeyEvent.KEYCODE_ZkeyLeftKeyEvent.KEYCODE_Q に設定されています。 keyDownkeyRightKeyEvent.KEYCODE_S に設定されています KeyEvent.KEYCODE_D を使用します。では、これらのイベントに対応するキーイベント ハンドラを 想定された動作を実装する必要があります。

マニフェスト

ゲームでは、Android マニフェストに必ず含めるべきものがあります。

ゲームをホーム画面に表示する

Android TV のホーム画面では、通常のアプリとは別の行にゲームが表示されます。 ゲームをゲームリストに表示するには、 <ph type="x-smartling-placeholder"></ph> android:isGame 属性を、アプリ マニフェストの "true" に追加する <application> タグを付けます。次に例を示します。

<application
    ...
    android:isGame="true"
    ...
>

ゲーム コントローラのサポートを宣言する

テレビデバイスのユーザーがゲーム コントローラを利用できない場合、あるいはアクティブでない場合があります。Google Cloud で ゲームがゲーム コントローラに対応していることをユーザーに通知する場合は、 アプリ マニフェストを次のように設定します。

  <uses-feature android:name="android.hardware.gamepad" android:required="false"/>

注: android:hardware:gamepad サポートを指定する場合は、 android:required 属性を "true" に設定。この操作を行うと、ユーザーは テレビデバイスにアプリをインストールします。

マニフェスト エントリの詳細については、このモジュールの アプリ マニフェスト

Google Play ゲームサービス

ゲームが Google Play Games サービスを統合している場合は、 注意すべき点として 実績、ログイン、ゲームの保存に関する考慮事項。

実績

ゲームには、少なくとも 5 つの(獲得可能な)実績がなければなりません。ゲームプレイを制御しているユーザーのみ 実績を獲得できるようにする必要があります。詳細については、このモジュールの およびその実装方法については、Android での実績をご覧ください。

ログイン

ゲームの起動時には、ユーザーのログインを試す必要があります。プレーヤーがログインを何度か拒否した場合 質問が止まるようにする必要があります。ログインについて詳しくは、ログインを実装する Android

保存

Google Play 開発者サービスの保存済みゲームを使用してデータを保存 表示されます。ゲームは、ゲーム セーブを特定の Google アカウントにバインドして、 たとえば、プレーヤーが使用しているのがハンドセットかテレビかにかかわらず、 ゲームは、同じユーザー アカウントからゲーム保存情報を取得できる必要があります。

また、プレーヤーがローカルで削除したり、削除したりできるオプションをゲームの UI で提供する必要があります。 クラウドに保存されたデータです。このオプションはゲームの Settings 画面に置くことができます。対象 Play 開発者サービスを使用して保存済みゲームを実装する方法について詳しくは、Android の保存済みゲームをご覧ください。

終了

ユーザーがゲームを正常に終了できる、一貫性のある明確な UI 要素を用意してください。この 要素には、D-pad ナビゲーション ボタンでアクセスできる必要があります。この方法は、基盤となるインフラストラクチャ 終了するためのホームボタンを使用する。これは、コントローラ間で一貫性もなく、信頼性もない。

ウェブ

Android TV のゲームではウェブ ブラウジングを有効にしないでください。Android TV はウェブブラウザをサポートしていません。

注: ログインに WebView クラスを使用すると、 ソーシャル メディア サービスなど、

ネットワーク

ゲームで最適なパフォーマンスを実現するには、大容量の帯域幅が必要になることが多く、ユーザーの多くは そのパフォーマンスを提供しますアプリで Wi-Fi とイーサネットの両方を確認する必要があります。 接続しますアプリがテレビのみを対象としている場合、それまでと同様に 3G/LTE サービスを確認する必要はありません。 モバイルアプリの場合は