TV-Spiele entwickeln

Der Fernsehbildschirm stellt Entwickler von mobilen Spielen vor einige Herausforderungen, die sie vielleicht noch nicht kennen. Zu diesen Bereichen z�hlen die Gr��e, das Steuerungsschema und die Tatsache, dass alle Spieler sie sich gleichzeitig ansehen.

Anzeige

Die beiden wichtigsten Dinge, die Sie bei der Entwicklung von Spielen f�r den Fernsehbildschirm beachten sollten, sind die Ausrichtung des Spiels im Querformat und die Unterst�tzung einer niedrigen Latenz.

Unterst�tzung f�r Displays im Querformat

Ein Fernseher ist immer seitlich gedreht: Sie k�nnen ihn nicht drehen und der Fernseher ist auch nicht im Hochformat ausgerichtet. Immer designen TV-Spiele im Querformat anzeigen.

Automatischer Modus f�r geringe Latenz

Bestimmte Displays k�nnen die Nachverarbeitung von Grafiken durchf�hren. Durch diese Nachverarbeitung werden Grafiken verbessert, aber die Latenz erh�hen kann. Neuere Bildschirme, die HDMI 2.1 unterst�tzen, haben eine automatische niedrige Latenzmodus (ALLM), der die Latenz durch Deaktivieren dieser Nachverarbeitung minimiert. F�r erhalten Sie in der HDMI 2.1-Spezifikation. Sonstiges Bildschirme k�nnen einen Spielmodus mit einem �hnlichen Verhalten unterst�tzen.

Unter Android�11 und h�her kann ein Fenster die Verwendung des automatischen Modus mit niedriger Latenz oder des Spielmodus anfordern, sofern verf�gbar, indem minimale Nachbearbeitung angefordert wird. Das ist besonders f�r Spiele- und Videokonferenzanwendungen n�tzlich, bei denen eine niedrige Latenz wichtiger ist als die bestm�gliche Grafik.

Wenn Sie die minimale Nachbearbeitung aktivieren oder deaktivieren m�chten, rufen Sie Window.setPreferMinimalPostProcessing() auf oder legen Sie das preferMinimalPostProcessing-Attribut des Fensters auf true fest. Nicht alle Displays unterst�tzen eine minimale Nachverarbeitung. um herauszufinden, bestimmte Display unterst�tzt, rufen Sie die Display.isMinimalPostProcessingSupported()-Methode.

Eingabeger�te

Fernseher haben keine Touchbedienung. Daher ist es umso wichtiger, die Steuerelemente richtig zu gestalten und daf�r zu sorgen, dass sie f�r die Spieler intuitiv und unterhaltsam sind. Bei der Verarbeitung von Controllern m�ssen Sie auch auf einige andere Probleme achten, z.�B. auf die Verfolgung mehrerer Controller und die reibungslose Verarbeitung von Unterbrechungen. Alle TV-Apps, einschlie�lich Spiele, sollten Controller einheitlich verarbeiten. Weitere Informationen zur Verwendung von Fernseher-Controllern findest du unter Fernseher-Controller verwalten. Unter Umgang mit Controllern f�r Spiele findest du spezielle Informationen zur Verwendung von Fernseher-Controllern f�r Spiele.

Tastaturlayouts

Unter Android�13 (API-Level�33) und h�her k�nnen Sie Tastaturlayouts mit getKeyCodeForKeyLocation() festlegen. Angenommen, Ihr Spiel unterst�tzt die Bewegung mit den WASD-Tasten. Dies funktioniert jedoch m�glicherweise nicht richtig auf einer AZERTY-Tastatur, auf der die Tasten A und W an unterschiedlichen Stellen sind. Sie k�nnen die Keycodes abrufen, f�r die Tasten, die Sie an bestimmten Positionen erwarten:

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);
}

In diesem Beispiel ist bei einer AZERTY-Tastatur keyUp auf KeyEvent.KEYCODE_Z, keyLeft ist auf KeyEvent.KEYCODE_Q festgelegt, w�hrend keyDown und keyRight auf KeyEvent.KEYCODE_S festgelegt sind bzw. KeyEvent.KEYCODE_D. Sie k�nnen jetzt Schl�ssel-Event-Handler f�r diese und das erwartete Verhalten implementieren.

Manifest

Spiele sollten im Android-Manifest einige Besonderheiten enthalten.

Spiel auf dem Startbildschirm anzeigen

Im Startbildschirm von Android TV werden Spiele in einer anderen Zeile als regul�re Apps pr�sentiert. Damit Ihr Spiel in der Liste der Spiele angezeigt wird, m�ssen Sie das Attribut android:isGame im Tag <application> Ihres App-Manifests auf "true" festlegen. Beispiel:

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

Unterst�tzung f�r Controller deklarieren

Spielecontroller sind f�r Nutzer eines Fernsehers m�glicherweise nicht verf�gbar oder nicht aktiv. Damit Nutzer richtig informiert werden, dass Ihr Spiel einen Gamecontroller unterst�tzt, m�ssen Sie den folgenden Eintrag in Ihr App-Manifest aufnehmen:

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

Hinweis: Wenn Sie die Unterst�tzung von android:hardware:gamepad angeben, d�rfen Sie das Attribut android:required nicht auf "true" festlegen. Wenn Sie dies tun, k�nnen Nutzer um deine App auf Fernsehern zu installieren.

Weitere Informationen zu Manifesteintr�gen finden Sie unter App-Manifest:

Google Play-Spieldienste

Wenn Sie in Ihrem Spiel Google Play-Spieldienste einbinden, sollten Sie einige Aspekte im Hinblick auf Erfolge, Anmeldung und Speichern von Spielen beachten.

Erfolge

Ihr Spiel sollte mindestens f�nf (erzielbare) Erfolge enthalten. Nur ein Nutzer, der das Spiel steuert mit einem unterst�tzten Eingabeger�t Erfolge erzielen k�nnen. Weitere Informationen zu Erfolge und deren Implementierung finden Sie unter Erfolge in Android.

Anmelden

Ihr Spiel sollte versuchen, den Nutzer beim Start anzumelden. Wenn der Spieler die Anmeldung mehrmals hintereinander ablehnt, sollte Ihr Spiel nicht mehr danach fragen. Weitere Informationen zur Anmeldung finden Sie unter Anmeldung implementieren auf Android-Ger�te

Wird gespeichert

�ber Gespeicherte Spiele in den Google Play-Diensten den Spielstand. Ihr Spiel sollte gespeicherte Spielst�nde an ein bestimmtes Google-Konto binden, damit auch ger�te�bergreifend eindeutig identifiziert werden k�nnen: Egal, ob der Spieler ein Mobiltelefon oder einen Fernseher verwendet, Das Spiel sollte in der Lage sein, die gespeicherten Spieldaten vom selben Nutzerkonto abzurufen.

Sie sollten in der Benutzeroberfl�che Ihres Spiels auch eine Option anbieten, mit der Spieler lokal und in der Cloud gespeicherte Daten l�schen k�nnen. Du kannst die Option auf dem Bildschirm Settings des Spiels platzieren. Weitere Informationen zur Implementierung gespeicherter Spiele mit Play-Diensten finden Sie unter Gespeicherte Spiele unter Android.

Beenden

Stellen Sie ein einheitliches und offensichtliches UI-Element bereit, mit dem der Nutzer das Spiel anmutig beenden kann. Dieses sollte �ber die Navigationsschaltfl�chen auf dem Steuerkreuz zug�nglich sein. Verwenden Sie diese Option, anstatt das Beenden �ber die Startbildschirmtaste zu erm�glichen, da dies auf verschiedenen Controllern nicht einheitlich und zuverl�ssig funktioniert.

Web

Das Surfen im Web in Spielen f�r Android TV nicht aktivieren. Android�TV unterst�tzt keinen Webbrowser.

Hinweis: Sie k�nnen die Klasse WebView f�r Anmeldungen in sozialen Medien verwenden.

Netzwerke

Spiele ben�tigen h�ufig eine gr��ere Bandbreite, um eine optimale Leistung zu erzielen. Viele Nutzer bevorzugen Ethernet gegen�ber WLAN, um diese Leistung zu erzielen. Ihre App sollte sowohl nach WLAN- als auch nach Ethernetverbindungen suchen. Wenn Ihre App nur f�r den Fernseher gedacht ist, m�ssen Sie nicht pr�fen, ob ein 3G/LTE-Dienst verf�gbar ist. f�r eine mobile App.