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.