Der Fernsehbildschirm zeigt eine Reihe von Aspekten, die in Spielen für Mobilgeräte neu sein könnten. zu entwickeln. Zu diesen Bereichen zählen die Größe, das Steuerungsschema und die Tatsache, dass alle Spieler sie sich gleichzeitig ansehen.
Anzeige
Bei der Entwicklung von Spielen für Fernsehbildschirme sollten zwei Dinge beachtet werden: für eine Ausrichtung im Querformat und Unterstützung für niedrige 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 Latenzzeit
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 den automatischen Modus für geringe Latenzzeit oder ein Spiel anfordern verwendet werden, falls verfügbar, indem eine minimale Nachbearbeitung angefordert wird. Dies gilt insbesondere für nützlich für Spiele- und Videokonferenzanwendungen, bei denen eine niedrige Latenz mit der bestmöglichen Grafik.
Um die minimale Nachverarbeitung zu aktivieren oder zu deaktivieren, rufen Sie
Window.setPreferMinimalPostProcessing()
,
oder legen Sie die
preferMinimalPostProcessing
auf true
setzen. 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 Touchoberfläche, daher ist es noch wichtiger, die Steuerung richtig einzustellen und damit die Spieler sie intuitiv und nutzungsfreundlich finden. Controller handhaben bringt auch einige andere Probleme mit sich, auf die Sie achten sollten, z. B. die Verfolgung mehrerer die Verbindung zwischen den Controllern und der Handhabung reibungslos ab. Alle TV-Apps, einschließlich Spiele, sollten kontinuierlich mit den Controllern zusammenarbeiten. Weitere Informationen finden Sie unter TV verwalten finden Sie weitere Informationen zur Verwendung von TV-Controllern und die Verarbeitung von Controllern für Spiele Informationen zur Verwendung von TV-Controllern für Spiele
Tastaturlayouts
Unter Android 13 (API-Level 33) und höher können Sie Tastaturlayouts mit
getKeyCodeForKeyLocation()
Dein Spiel unterstützt beispielsweise die Bewegung mithilfe der WASD-Tasten, das funktioniert aber möglicherweise nicht richtig auf
eine AZERTY-Tastatur, bei der sich die Tasten A und W an unterschiedlichen Positionen befinden. 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 keyUp
bei einer AZERTY-Tastatur 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 dein Spiel in der Liste der Spiele erscheint, lege die
<ph type="x-smartling-placeholder"></ph>
android:isGame
-Attribut im Manifest deines App-Manifests auf "true"
<application>
-Tag hinzu. 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. Um die richtigen Nutzer darüber zu informieren, dass Ihr Spiel einen Controller unterstützt, müssen Sie den folgenden Eintrag in App-Manifest ein:
<uses-feature android:name="android.hardware.gamepad" android:required="false"/>
Hinweis: Wenn Sie die android:hardware:gamepad
-Unterstützung angeben, geben Sie nicht die Methode
android:required
-Attribut zu "true"
. 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 Ihr Spiel die Google Play-Spieldienste integriert, sollten Sie eine Reihe von Überlegungen zu Erfolgen, der Anmeldung und dem Speichern von Spielen.
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
Beim Start sollte in Ihrem Spiel versucht werden, den Nutzer anzumelden. Wenn der Spieler die Anmeldung nach mehreren sollte das Spiel aufhören zu 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 auch eine Option in der Benutzeroberfläche Ihres Spiels anbieten,
mit der der Spieler Daten lokal löschen und
in der Cloud gespeicherte Daten. Du kannst die Option auf dem Settings
-Bildschirm des Spiels platzieren. Für
Weitere Informationen zur Implementierung gespeicherter Spiele mithilfe der Play-Dienste 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. Dies sollten Sie tun, anstatt sich auf die Schaltfläche zum Beenden der Home-Taste, da diese auf verschiedenen Controllern weder einheitlich noch zuverlässig ist.
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 folgenden Fällen verwenden:
Social-Media-Dienste.
Netzwerke
Spiele benötigen häufig eine größere Bandbreite, um eine optimale Leistung zu bieten, und viele Nutzer bevorzugen Ethernet zu WLAN für diese Leistung. Deine App sollte sowohl WLAN- als auch Ethernet-Verbindungen prüfen Verbindungen. 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.