Natürliche Eingabe für alle Formfaktoren aktivieren

Desktop-Computer mit Tastatur und Maus. Auf dem Bildschirm ist ein Spiel zu sehen, auf dem Touchscreen-Eingabe für die Richtungssteuerung und die Maus angezeigt werden.
Abbildung 1. Tastatur, Maus und Touchscreen

Android-Geräte gibt es in vielen Formen und Größen. Erhöhen Sie die Reichweite Ihres Spiels, indem Sie es Nutzern ermöglichen, es überall zu spielen – auf einem Smartphone, Tablet, PC, Fernseher, in einem Auto oder mit einem XR-Headset. Sie erfahren hier Folgendes:

  • Wie Sie mit der Unterstützung von Maus und Tastatur Ihr Spiel für Spieler auf PCs und ChromeOS verfügbar machen und die Spielbarkeit auf Geräten mit großem Bildschirm verbessern können.
  • Mit der Gamepad-Integration können Sie Ihre treuesten Spieler dort abholen, wo sie sind.
  • So fügen Sie die Unterstützung für Stylus hinzu, um unterwegs präzise und reaktionsschnell zu spielen.
  • So unterstützen Sie den Fernseher-Controller und nutzen den größten Bildschirm Ihrer Spieler: ihren Fernseher.
  • Designüberlegungen dazu, wann zwischen Eingabemethoden gewechselt werden sollte.
  • Wie Spiele mit unterschiedlichen Formfaktoren die Eingabeeinstellungen der Spieler unterstützen.
  • und vieles mehr.

Automatische Kompatibilität

Android bietet nach Möglichkeit automatische Unterstützung für die Bedienung ohne Touchbedienung, z. B.:

  • dispatchTouchEvent/onTouchEvent reagieren auch bei Klicks oder Eingaben per Eingabestift mit Bewegungsereignissen. Wenn Sie also den Tooltyp nicht aktivieren, sollte Ihre Logik für die Touchbedienung mit der Maus und dem Eingabestift funktionieren.
  • Einige nicht verarbeitete Ereignisse von Gamepads und TV-Controllern werden als Tastaturereignisse noch einmal gesendet.
  • Bei PC-ähnlichen Formfaktoren wie Google Play Spiele und ChromeOS werden standardmäßig Touch-Ereignisse durch Mausklicks generiert. Da es möglicherweise keinen Touchscreen gibt, auf den man ausweichen kann, bietet dies eine grundlegende Kompatibilität.

  • Maus- und Stylus-Ereignisse werden an Touch-Callbacks gesendet.

  • Nicht verarbeitete Gamepad- und TV-Controller-Ereignisse werden als Tastatur-Ereignisse noch einmal gesendet.

  • PC-ähnliche Formfaktoren wie Google Play Spiele und ChromeOS generieren standardmäßig Touch-Ereignisse anstelle von Mausereignissen, um die Kompatibilität mit Spielen zu maximieren, die Touchscreen-Eingabe erfordern.

Für eine optimale Nutzerfreundlichkeit sollten Sie direkten Support für Eingaben ohne Touchbedienung implementieren, anstatt sich auf die automatische Kompatibilität zu verlassen.

Alle Formfaktoren unterstützen

Android wird auf einer ständig wachsenden Liste von Geräten ausgeführt. Ganz gleich, ob Ihre Spieler ihr Smartphone zu einem Tablet mit großem Bildschirm entfalten, ihren Android-fähigen Fernseher einschalten, ein Android-Spiel auf ihrem Chromebook öffnen oder ein schnelles Spiel in ihrem Auto starten, während sie auf das Aufladen warten: Sie können Ihre Spieler an mehr Orten und auf mehr Displays als je zuvor erreichen. Achten Sie nur darauf, dass Ihr Spiel dort spielbar ist, wo sich Ihre Spieler befinden:

Formfaktor Typische Standardeingabe Touchscreen Maus und Tastatur Gamepad Eingabestift1 Fünf-Wege-Steuerkreuz
Telefon Touchscreen Ja Ja Ja Ja Ja
Großer Bildschirm Touchscreen Ja Ja Ja Ja Ja
PC2 Maus und Tastatur Nein Ja Ja Nein Nein
ChromeOS3 Touchpad, Maus und Tastatur Manchmal Ja Ja Ja Ja
Fernseher Fünf-Wege-Steuerkreuz Nein Ja Ja Nein Ja
Google Pixel Automotive 4
(Automotive OS)
Touchscreen Ja Ja Ja Nein Ja
5 ansehen Touchscreen Ja Nein Nein Nein Nein

In dieser Tabelle wird die Unterstützung für neue Eingabemechanismen priorisiert, indem die für jeden Formfaktor erwartete Eingabe hervorgehoben wird. Beachten Sie Folgendes:

  • Verwenden Sie nicht nur einen Eingabemechanismus. Dadurch wird die Reichweite Ihrer Offline-Kampagnen möglicherweise versehentlich eingeschränkt. Die meisten Spieler möchten ChromeOS-Spiele beispielsweise mit Maus und Tastatur spielen, einige möchten aber je nach Geräteprofil möglicherweise auch Touchscreen-Unterstützung.
  • Vermeiden Sie es, Eingabemechanismen an Formfaktoren zu binden. Android funktioniert mit einer Vielzahl von Peripheriegeräten und Hybridgeräte werden immer beliebter. Wenn Sie die Tastaturunterstützung aus der Smartphone-Version entfernen, wirkt Ihr Spiel möglicherweise unvollständig, wenn der Spieler ein Tablet mit abnehmbarer Tastatur hat.

Mauseingabe

Der größte und wirkungsvollste Bildschirm eines Spielers ist möglicherweise ein Android-Gerät, z. B. ein ChromeOS-Laptop, ein Android-Tablet oder ein PC. Spieler erwarten oft, dass sie auf diesen Geräten mit einer Maus spielen können. Wenn Sie die Unterstützung hinzufügen, können Sie die Interaktionen der Spieler steigern. Android unterstützt die für Desktop-Betriebssysteme typischen Funktionen, darunter:

  • Unterstützung für Links-, Rechts- und Mittelklick sowie zusätzliche Schaltflächen wie Zurück und Vorwärts
  • Scrollraderkennung
  • Erfassung der Mausbewegungen entweder absolut oder relativ (auch als Cursorerfassung bezeichnet)
  • Möglichkeit, benutzerdefinierte Zeigersymbole zu definieren

Formfaktorspezifische Anleitungen gibt es für:

Touchpad-Eingabe

Die Touchpad-Eingabeerfassung unter Android unterscheidet sich geringfügig von der Mausunterstützung. Wenn Sie requestPointerCapture() aufrufen, fordern Sie den Rohzugriff auf Berührungen auf dem Touchpad an. Das bedeutet, dass Sie für jede Berührung Ereignisse erhalten, genau wie bei Multitouch-Ereignissen von einem Touchscreen. Der Unterschied besteht darin, dass sich die Koordinaten im Koordinatenraum des Touchpads befinden, nicht im Koordinatenraum des Displays. Die integrierte Touchpad-Gestenerkennung und die Handflächenfilterung von Android sind in diesem Modus deaktiviert. Wenn der Nutzer beispielsweise einen Finger auf dem Touchpad bewegt und gleichzeitig den Daumen links unten zum Klicken bereithält, muss Ihr Spiel bestimmen, welche Fingerbewegung in Ihrer Logik verwendet werden soll (z. B. zum Bewegen der Kamera).

Das bedeutet, dass Gamepads mit integrierten Touchpads ähnlich wie ein Touchscreen für eine robuste gestenbasierte Eingabe verwendet werden können.

Wenn du wissen möchtest, ob dein Spieler während der Mauszeigererfassung eine Maus oder ein Touchpad verwendet, prüfe die Quellwerte von InputDevice#getSources() oder MotionEvent#getSource() für InputDevice.SOURCE_TOUCHPAD.

Tastatureingabe

Die Tastaturunterstützung ist auf fast allen Android-Geräten verfügbar. Je nach Art des Spiels, das Sie entwickeln, können Sie durch die Tastaturunterstützung die Spielerbasis vergrößern, indem Sie Ihr Spiel barrierefreier gestalten, oder es immersiver und intuitiver machen.

So kannst du mit der Tastatur dein Spiel verbessern:

  • Die Multitouch-Mechanik muss auf der Tastatur für Geräte ohne Touchbedienung zugewiesen werden. Bei Spielen, bei denen zwei oder mehr gleichzeitige Berührungen erforderlich sind, z. B. zum Bewegen und Springen, ist es sinnvoll, diese Aktionen Tastendrucke zuzuordnen, um die Spielbarkeit auf großen Bildschirmen und Bildschirmen ohne Touchbedienung zu verbessern.
  • Menüs können mit der Tastatur bedient werden. Wenn Sie Ihren Menüs und statischen Gameplay-Elementen Tastennavigation wie Pfeiltasten und die Eingabetaste hinzufügen, können Spiele auf Fernsehern gespielt werden und die Barrierefreiheit wird auf allen Formfaktoren verbessert.
  • Hotkeys für Aktionen auf dem Bildschirm hinzufügen Ordnen Sie alles, was ein Spieler auf dem Bildschirm berühren kann, einer Tastaturaktion zu. Ein schneller Zugriff auf Aktionen wie die Auswahl von Einheiten in einem Strategiespiel oder die Aktivierung von Inventarplätzen in einem Actionspiel sorgt dafür, dass sich die Spieler voll und ganz auf Ihr Spiel konzentrieren können.

Denken Sie daran, dass QWERTY-Tastaturen zwar recht häufig sind, es aber viele verschiedene beliebte Layouts gibt. Einige Zeichen, die in einem Layout mit einer einzelnen Tastenaktivierung eingegeben werden, können in einem anderen Layout ein Akkord sein.

Wenn in Ihrem Spiel die relative Position von Tasten zum Ausführen von Aktionen verwendet wird, z. B. W, A, S und D wie die Richtungstasten zum Bewegen, ordnen Sie mit InputDevice.getKeyCodeforKeyLocation() die Position einer QWERTY-Taste einem Tastencode in KeyEvent.getKeyCode() zu. Wenn sich das Layout des Players ändert, wird onInputDeviceChanged() aufgerufen.

Wenn Sie einem Spiel eine Texteingabe hinzufügen, bietet TextInput in GameActivity einen Mechanismus, mit dem Sie IME-Eingabe, diakritische Zeichen oder andere regionsspezifische Layoutvarianten zuverlässig verarbeiten können, während Sie weiterhin die In-Game-Text-Rendering-Engine verwenden. So lassen sich viele Fallstricke vermeiden, die bei der direkten Verarbeitung der Tastatureingabe oder der Verwendung eines EditText-Widgets außerhalb des Bildschirms auftreten.

Gamepad-Eingabe

Ein Bild eines typischen Gamepads. Er hat ein Steuerkreuz, vier Tasten auf der Oberseite mit den Beschriftungen A, B, X und Y, zwei Analogsticks und vier Trigger. Auf dem Bild sind Zahlen zu sehen, auf die auf dieser Seite aber nicht verwiesen wird.
Abbildung 2. Gamepad-Eingabe

Gamepads werden offiziell von Android unterstützt, einschließlich Verbindungs- und Trennungsereignissen, haptischer Unterstützung, erweiterter Eingabeunterstützung einschließlich Gyroskopen und Ausgabeunterstützung wie Farbe der Beleuchtung, sofern verfügbar.

App-Entwickler können über View- oder Activity-Callbacks auf Gamepad-Eingabe warten. Spieleentwickler sollten jedoch die Game Controller Library verwenden, da sie:

  • Sie ist in C++ geschrieben, um die Integration in Ihre eigene Game Engine zu erleichtern.
  • Alle Gamepad-Funktionen in einer API zentralisieren
  • Erläutert die Symbole auf den Tasten eines Gamepads, damit die Labels Ihres Spiels mit dem Gamepad eines Spielers übereinstimmen können
  • Die Berichterstellung für Gamepad-Ereignisse wird vereinheitlicht, wenn Schaltflächen bei einigen Gamepads analoge Eingaben, bei anderen aber binäre Eingaben sind.
  • Bietet eingeschränkte Abwärtskompatibilität auf älteren Android-Geräten für neuere Gamepads

Eingabe per Eingabestift

Ein Bild mit einer Zeichenanwendung. Die Pinsel sind geöffnet und zeigen Formen, die mit dem Eingabestift gezeichnet werden können.
Abbildung 3. Zeichenanwendung mit Pinselpalette.

Android bietet auf den meisten Geräten erweiterte Eingabestiftunterstützung, einschließlich Druck-, Ausrichtungs-, Neigungs-, Schwebe- und Handflächenerkennung. Eingabestiftereignisse werden an Touch-Callbacks gesendet, um die Kompatibilität zu verbessern. Es ist jedoch wichtig, mit einem Eingabestift zu testen, falls Ihre Engine-Logik diese Ereignisse herausfiltert. Die vollständige Integration bietet Vorteile für Spiele mit kleinen Touch-Zielpunkten oder Spiele, bei denen das Zeichnen in kostenloser Form natürlich wirkt.

Wenn das Rendering hinter der Bewegung des Eingabestifts zurückbleibt, ist die Latenz stärker wahrnehmbar als bei einer Blockierung durch einen Finger oder einer Unterbrechung der Verbindung zum Display, wie bei einer Tastatur, Maus oder einem Gamepad. Aus diesem Grund bietet Android eine Pipeline mit niedriger Latenz für das Rendern von Strichen mit einer Latenz von nur 4 ms von der Stiftbewegung bis zur Anzeige auf dem Bildschirm. Es gibt drei Möglichkeiten, wie Sie diese Funktion in Ihrem Spiel nutzen können, um es direkt mit der realen Welt zu verknüpfen:

  • Die Jetpack Ink-Bibliothek bietet ein praktisches Toolkit, mit dem Sie jedem Android-Projekt ein responsives Strich-Rendering hinzufügen können.
  • Für Spiele, die nicht oder nicht bereit sind, für das Zeichnen von Strichen eine Kotlin-Komponente zu verwenden, ist der vollständige C++-Quellcode verfügbar. So können Entwickler die benötigten Funktionen direkt in ihre Technologie einbinden.
  • Bei Spielen, die eine vollständige benutzerdefinierte Integration erfordern, können Sie benutzerdefinierte Renderinglogik direkt im Front-Buffer ausführen, um sowohl die Reaktionsfähigkeit als auch die Kontrolle zu maximieren.

TV-Controller

Ein Bild der TV-Fernbedienung für Android. Dargestellt sind ein Steuerkreuz, eine Auswahltaste, eine Mikrofon- oder Assistant-Taste, eine Zurück- und eine Startbildschirmtaste.
Abbildung 4: Fernseher-Controller

Android TV-Geräte werden mit einer Fernbedienung mit einem 5‑Wege-D-Pad geliefert, das die vier Himmelsrichtungen und eine OK-Schaltfläche umfasst. Apps, die das integrierte Widget-System von Android verwenden, unterstützen diese standardmäßig. Entwickler müssen jedoch die benutzerdefinierten Widgets ihres Spiels testen, um die Kompatibilität auf Fernsehgeräten aufrechtzuerhalten.

Weitere Informationen finden Sie in der Android TV-Dokumentation.

Weitere Überlegungen

Um Ihren Spielern das bestmögliche Erlebnis zu bieten, sollten Sie mehrere Eingabemethoden entwerfen und während des Spiels zwischen ihnen wechseln. So kann ein Spieler je nach Spielmodus schnell zwischen verschiedenen Eingabemethoden wechseln oder ein Spiel kann ganz einfach zwischen verschiedenen Konfigurationen eines Android-Geräts wechseln.

Beachten Sie dabei Folgendes:

  • Es ist besser, nach einer bestimmten Art von Eingabe zu suchen, als nach dem Formfaktor zu filtern. Wenn Sie beispielsweise nur die Unterstützung für Maus und Tastatur unter ChromeOS aktivieren, können Spieler auf Tablets mit abnehmbarer Tastatur nicht von Ihren zusätzlichen Bemühungen profitieren.
  • Es gibt weitere Faktoren als den Formfaktor, die sich auf die beste Eingabeform auswirken. Beispielsweise kann es sein, dass die Bedienungshilfen eines Spielers die Verwendung einer Maus oder eines Touchscreens erschweren oder schmerzhaft machen, während ein Gamepad oder eine Tastatur ideal ist.
  • Jede Art von Unterstützung ist besser als gar keine. Idealerweise reagieren Sie auf Eingabeänderungen sofort. Spieler schätzen aber auch etwas Unterstützung, solange sie sie erreichen können.
  • Die beste Eingabe kann sich zwischen den Durchläufen Ihres Spiels ändern. Ein Touchscreen ist beispielsweise für unterwegs besser geeignet, ein Gamepad, wenn ein Smartphone an einen Fernseher angeschlossen ist, und eine Maus und Tastatur, wenn Sie am Schreibtisch sitzen.

Auf Nutzereingaben reagieren

Normalerweise unterstützen mobile Spiele einen Spieler pro Gerät. Die besten Ergebnisse erzielen Sie, wenn ein Spiel auf alle möglichen Eingaben reagiert und die Benutzeroberfläche entsprechend den aktuell verwendeten Funktionen des Spielers anpasst. So funktioniert eine Version des Spiels automatisch auf allen Formfaktoren und Spieler können Eingaben sogar nach ihren Bedürfnissen kombinieren.

Oft möchten Entwickler eine Standardeingabemethode mit integrierten Verzögerungen haben, bevor die Benutzeroberfläche gewechselt wird. Was bedeutet das?

  • Da die meisten Spieler auf Touchscreens spielen, sollten Sie beim Start Touchbedienungselemente anzeigen. Wenn ein Spieler mit einer Tastatur oder einem Gamepad beginnt zu spielen und den Touchscreen einige Zeit nicht verwendet, blenden Sie die Touch-Ebene aus.
  • Wenn ein Spieler das Gamepad verwendet und eine Tastaturtaste drückt, werden in-game-Hinweise so geändert, dass Tastaturtasten anstelle von Gamepad-Tasten angezeigt werden.
  • Wenn ein Spieler sowohl die Tastatur als auch das Gamepad gleichzeitig verwendet, sollten Sie eine Verzögerung einbauen, bevor die Benutzeroberfläche von einer Reihe von Hinweisen zu einer anderen wechselt, um Flackern des Displays zu vermeiden.
  • Prüfen Sie den Typ der Eingabequelle, wenn Sie Eingaben verarbeiten. Sowohl Tastaturtasten als auch Gamepad-Tasten geben Tasten-Down-Ereignisse aus.
  • Markieren Sie eine Eingabe nur dann als verarbeitet, wenn Ihr Spiel sie verarbeiten kann. Android sendet einige Ereignisse noch einmal aus, um die Kompatibilität mit neueren Formfaktoren zu ermöglichen. So wird beispielsweise die Schaltfläche A des Gamepads in die Schaltfläche OK umgewandelt.

Unterstützung für Eingaben im Manifest angeben

Es ist zwar nicht erforderlich, aber es kann sinnvoll sein, mit Manifest-Feature-Flags anzugeben, welche Arten von Eingaben Sie verarbeiten. Gängige Flags:

  • android.hardware.type.pc: Deaktivieren Sie die Kompatibilitätsebenen für die Eingabe sowohl unter ChromeOS als auch auf dem PC, damit Entwickler Maus-Ereignisse direkt verarbeiten können. Legen Sie android:required="false" fest, damit das Spiel weiterhin an Smartphones ausgeliefert wird.
  • android.hardware.gamepad: Apps und Spiele erhalten Gamepad-Ereignisse, unabhängig davon, ob sie Gamepads unterstützen oder nicht. Wenn Sie dieses Manifest-Flag definieren und android:required="false" festlegen, kann Ihr Spiel auf Android TV-Geräten mit angeschlossenen Gamepads bereitgestellt werden.

  1. Hersteller können für einige Geräte eine Eingabestiftunterstützung einbinden, aber es gibt keinen Formfaktor, bei dem die Unterstützung garantiert ist. Zeichenpads können an ein Android-Gerät angeschlossen und als Eingabestift angezeigt werden. 

  2. Einige PCs unterstützen zwar Touchscreen und Eingabestift, der Google Play Spiele-Client reagiert jedoch nur auf Mausereignisse des Hostbetriebssystems. Um die Kompatibilität zu maximieren, werden Mausereignisse standardmäßig als Touch-Ereignisse im Client angezeigt. Weitere Informationen finden Sie im Abschnitt Mauseingaben

  3. ChromeOS-Geräte unterstützen in der Regel Maus und Tastatur, Touchscreens sind aber optional. Viele Geräte mit Touchscreen unterstützen auch die Eingabe per Eingabestift. 

  4. Android Automotive OS bezieht sich auf Autos mit integriertem Android, die ohne Android-Smartphone funktionieren können. Dieses Diagramm bezieht sich auf Automotive OS. Android Auto projiziert eine App von einem Smartphone auf das Auto. Geräte, die Android Auto (Projektion) unterstützen, haben möglicherweise keinen Touchscreen. 

  5. Wear OS-Geräte haben eine eingeschränkte Konnektivität. Sie können nach Bluetooth-Peripheriegeräten suchen, aber das Betriebssystem kann oft keine Verbindung herstellen.