Attiva l'input naturale in tutti i fattori di forma

Computer desktop con tastiera e mouse. Il gioco è sullo schermo e mostra gli input del touchscreen per il controllo della direzione e del mouse.
Figura 1. Input da tastiera, mouse e touchscreen.

I dispositivi Android sono disponibili in molte forme e dimensioni. Estendi la copertura del tuo gioco consentendo ai giocatori di giocare ovunque vogliano, che si tratti di uno smartphone, un tablet, un PC, una TV, un'auto o un visore XR. Qui scoprirai:

  • In che modo il supporto di mouse e tastiera può portare il tuo gioco a giocatori su PC e ChromeOS, nonché migliorare la giocabilità su dispositivi con schermi di grandi dimensioni.
  • Come raggiungere i giocatori più appassionati ovunque si trovino con l'integrazione del gamepad.
  • Come aggiungere il supporto del pennino per un gameplay preciso e reattivo ovunque ti trovi.
  • Come supportare il controller TV e sbloccare lo schermo più grande di cui dispongono i tuoi giocatori: la TV.
  • Considerazioni di progettazione sul momento in cui passare da un metodo di inserimento all'altro.
  • Cosa fanno i giochi multipiattaforma per supportare le preferenze di input dei giocatori.
  • E molto altro ancora.

Compatibilità automatica

Android è compatibile con i dispositivi non touch automaticamente, se possibile, ad esempio:

  • dispatchTouchEvent/onTouchEvent rispondono con eventi di movimento anche per clic o input con stilo. Ciò significa che se non selezioni il tipo di strumento, la logica di gestione del tocco dovrebbe funzionare con il mouse e lo stilo.
  • Alcuni eventi del gamepad e del telecomando della TV non gestiti vengono rimessi in onda come eventi da tastiera.
  • I fattori di forma come i PC, ad esempio Play Giochi e ChromeOS, generano tocchi dai clic del mouse per impostazione predefinita. Poiché potrebbe non essere disponibile un touchscreen di riserva, questo approccio fornisce un livello di compatibilità di base.

  • Gli eventi mouse e stylus vengono inviati ai callback tocco.

  • Gli eventi gamepad e controller TV non gestiti vengono rimessi come eventi tastiera.

  • I fattori di forma simili a PC, come Play Giochi e ChromeOS, generano per impostazione predefinita eventi tocco anziché eventi mouse per massimizzare la compatibilità con i giochi che richiedono l'input del touchscreen.

Per una migliore esperienza utente, implementa il supporto diretto per gli input non touch anziché fare affidamento sulla compatibilità automatica.

Supporta tutti i fattori di forma

Android funziona su un elenco in continua crescita di dispositivi. Che i giocatori aprano lo smartphone per trasformarlo in un tablet con schermo grande, accendano la TV con Android integrato, aprano un gioco per Android su Chromebook o accendano una partita veloce in auto in attesa di una ricarica, puoi coinvolgerli in più luoghi e su più display che mai. Devi solo assicurarti che il tuo gioco sia giocabile dove si trovano i tuoi giocatori:

Fattore di forma Input predefinito tipico Touchscreen Mouse e tastiera Gamepad Stilo1 D-pad a 5 vie
Telefono Touchscreen
Schermo grande Touchscreen
PC2 Mouse e tastiera No No No
ChromeOS3 Touchpad, mouse e tastiera A volte
TV D-pad a 5 vie No No
Auto4
(sistema operativo Automotive)
Touchscreen No
Guarda5 Touchscreen No No No No

Questa tabella ha lo scopo di aiutarti ad assegnare la priorità al supporto di nuovi meccanismi di input evidenziando l'input previsto su ogni fattore di forma. Tieni presente che devi:

  • Evita di avere un solo meccanismo di immissione predefinito. In questo modo potresti limitare inavvertitamente la copertura delle tue iniziative non touch. Ad esempio, anche se la maggior parte dei giocatori vuole giocare ai giochi per ChromeOS con mouse e tastiera, alcuni potrebbero comunque volere il supporto del touchscreen, a seconda del profilo del dispositivo.
  • Evita di bloccare i meccanismi di input ai fattori di forma. Android è compatibile con una vasta gamma di periferiche e i dispositivi ibridi stanno diventando sempre più popolari. La rimozione del supporto della tastiera dalla build per smartphone potrebbe rendere il gioco incompleto se il giocatore ha un tablet con tastiera rimovibile.

Input del mouse

Lo schermo più grande e coinvolgente di un giocatore potrebbe essere un dispositivo Android, che si tratti di un laptop ChromeOS, di un tablet Android o di un PC. Spesso i giocatori si aspettano di giocare con un mouse su questi dispositivi e l'aggiunta del supporto può aumentare il loro coinvolgimento. Android supporta le funzionalità tipiche comuni ai sistemi operativi desktop, tra cui:

  • Supporto per i clic con il tasto sinistro, destro e centrale, nonché per pulsanti aggiuntivi come Indietro e Avanti
  • Rilevamento della rotellina di scorrimento
  • Report sul movimento del mouse assoluto o relativo (noto anche come acquisizione del cursore)
  • La possibilità di definire icone del cursore personalizzate

Esistono guide specifiche per i fattori di forma per:

Input del touchpad

La cattura dell'input del touchpad su Android è leggermente diversa dal supporto del mouse. Quando chiami requestPointerCapture(), richiedi l'accesso non elaborato ai tocchi sul pad. Ciò significa che ricevi eventi per ogni tocco nello stesso modo in cui ricevi eventi multitouch da un touchscreen, tranne per il fatto che le coordinate si trovano nello spazio delle coordinate del touchpad anziché in quello del display. In questa modalità, il rilevamento dei gesti del touchpad e il filtro della palma integrati in Android sono disattivati. Se, ad esempio, l'utente muove un dito sul pad e contemporaneamente tiene il pollice nell'angolo in basso a sinistra pronto a fare clic, sta al tuo gioco determinare il movimento del dito da utilizzare nella logica (ad esempio, per spostare la fotocamera).

Ciò significa che i gamepad con touchpad integrati possono essere utilizzati in modo molto simile a un touchscreen per un input affidabile basato su gesti.

Per determinare se il player utilizza un mouse o un touchpad durante la cattura del cursore, controlla i valori di origine di InputDevice#getSources() o MotionEvent#getSource() per InputDevice.SOURCE_TOUCHPAD.

Immissione da tastiera

Il supporto della tastiera è quasi universale su tutti i dispositivi Android. A seconda del tipo di gioco che sviluppi, i vantaggi dell'aggiunta della rilevabilità della tastiera vanno dall'ampliamento della base di giocatori rendendo il gioco più accessibile al rendere il gioco più coinvolgente e intuitivo.

Ecco alcuni modi comuni per migliorare il tuo gioco con il supporto della tastiera:

  • La funzionalità multitouch deve essere mappata alla tastiera per i dispositivi non touch. I giochi che richiedono due o più tocchi simultanei, come spostarsi e saltare, traggono vantaggio dalla mappatura di queste azioni alle pressioni dei tasti per migliorare la giocabilità su schermi grandi e non touch.
  • Rendi i menu navigabili tramite tastiera. L'aggiunta di pulsanti di navigazione, come i tasti freccia e Invio, ai menu e agli elementi di gameplay statici consente di giocare sui televisori e migliora l'accessibilità su tutti i fattori di forma.
  • Aggiungi tasti di scelta rapida per le azioni sullo schermo. Mappa qualsiasi elemento che un giocatore può toccare sullo schermo a un'azione della tastiera. L'accesso rapido ad azioni come la selezione di unità in un gioco di strategia o l'attivazione di slot di inventario in un gioco di azione mantiene i giocatori immersi nel tuo gioco.

Ricorda che, anche se le tastiere QWERTY sono abbastanza comuni, esistono molti layout diversi e alcuni caratteri che corrispondono a una singola pressione in un layout possono essere un accordo in un altro.

Se il tuo gioco utilizza la posizione relativa dei tasti per eseguire azioni, ad esempio W, A, S e D come i tasti freccia per spostarti, utilizza InputDevice.getKeyCodeforKeyLocation() per mappare la posizione di un tasto QWERTY a un codice a tasti in KeyEvent.getKeyCode(). Se il layout del player cambia, viene chiamato onInputDeviceChanged().

Quando aggiungi l'inserimento di testo a un gioco, TextInput in GameActivity fornisce un meccanismo per gestire in modo affidabile l'input IME, i segni diacritici o altre variazioni del layout specifiche per regione, continuando a utilizzare il motore di rendering del testo in-game. In questo modo, si evitano molti problemi di gestione dell'input da tastiera direttamente o utilizzando un widget EditText offscreen.

Input del gamepad

Un'immagine di un tipico gamepad. È dotato di un D-pad, quattro pulsanti etichettati A, B, X e Y, due stick analogici e quattro grilletti. L'immagine contiene numeri, ma non sono citati in questa pagina.
Figura 2. Input del gamepad.

I gamepad sono ufficialmente supportati su Android, inclusi gli eventi di connessione e disconnessione, il supporto aptico, il supporto avanzato dell'input, inclusi i giroscopio, e il supporto dell'output come il colore della luce, se disponibile.

Gli sviluppatori di app possono ascoltare gli input del gamepad tramite i callback View o Activity, ma gli sviluppatori di giochi sono invitati a utilizzare la libreria Game Controller che:

  • È scritto in C++ per facilitare l'integrazione nel tuo motore di gioco
  • Consente di centralizzare tutte le funzionalità del gamepad in un'unica API
  • Consente di distinguere i simboli sui pulsanti frontali di un gamepad, in modo che le etichette del gioco corrispondano a quelle del gamepad di un giocatore
  • Unifica la generazione di report sugli eventi del gamepad nei casi in cui i pulsanti siano input analogici su alcuni gamepad, ma input binari su altri
  • Fornisce una compatibilità in avanti limitata sui dispositivi Android meno recenti per i gamepad più recenti

Input con stilo

Un'immagine che mostra un'app di disegno. I pennelli sono aperti e mostrano le forme che possono essere disegnate con lo stilo.
Figura 3. App di disegno con tavolozza di pennelli.

Android offre il supporto avanzato degli stili sulla maggior parte dei dispositivi, tra cui il rilevamento di pressione, orientamento, inclinazione, passaggio del mouse e del palmo. Eventi dello stilo inviati ai callback tocco per migliorare la compatibilità, ma è importante eseguire il test con un dispositivo con stilo nel caso in cui la logica del motore filtri questi eventi. L'integrazione completa è vantaggiosa per i giochi con piccoli target touch o per i giochi in cui il disegno a mano libera è naturale.

Quando il rendering non segue il movimento dello stilo, la latenza è più evidente rispetto a quando viene bloccato da un dito o disconnesso dallo schermo, come con una tastiera, un mouse o un gamepad. Per questo motivo, Android fornisce una pipeline a bassa latenza per il rendering dei tratti con una latenza minima di 4 ms dal movimento della penna alla visualizzazione sullo schermo. Esistono tre modi in cui il tuo gioco può sfruttare questa funzionalità, facendolo sentire direttamente collegato al mondo reale:

Controller TV

Un'immagine del telecomando della TV per Android. Sono indicati un D-pad, un pulsante di selezione, un pulsante del microfono o dell'assistente, un pulsante Indietro e un pulsante Home.
Figura 4. Telecomando della TV.

I dispositivi Android TV sono dotati di un telecomando con un D-pad a 5 direzioni che comprende le quattro direzioni cardinali e un pulsante OK. Le applicazioni che utilizzano il sistema di widget integrato di Android li supportano per impostazione predefinita, ma gli sviluppatori devono testare i widget personalizzati del proprio gioco per mantenere la compatibilità sui dispositivi TV.

Per ulteriori informazioni, consulta la documentazione di Android TV.

Considerazioni aggiuntive

Per offrire ai giocatori la migliore esperienza, progetta il gioco in base a più forme di input e passa da una all'altra in tempo reale. In questo modo, un giocatore può passare rapidamente da un metodo di input all'altro a seconda della modalità di gioco in cui si trova oppure un gioco può passare facilmente da una configurazione all'altra di un dispositivo Android.

Tieni presente che:

  • È preferibile verificare la presenza di un tipo di input anziché applicare un filtro in base al fattore di forma. Ad esempio, se attivi il supporto del mouse e della tastiera solo su ChromeOS, i giocatori su tablet con tastiere rimovibili non trarranno vantaggio dal tuo impegno extra.
  • Esistono considerazioni al di fuori del fattore di forma che influiscono sulla forma migliore di input. Ad esempio, le esigenze di accessibilità di un giocatore potrebbero rendere difficile o spiacevole l'utilizzo di un mouse o di un touchscreen, ma essere ideali per un gamepad o una tastiera.
  • Qualsiasi assistenza è meglio di nessuna. È ideale rispondere alle modifiche dell'input in tempo reale, ma i giocatori apprezzano un po' di assistenza rispetto a nessuna, purché riescano ad accedervi.
  • L'input migliore può cambiare da una corsa all'altra del gioco. Ad esempio, è preferibile un touchscreen quando si gioca in viaggio, un gamepad quando lo smartphone è collegato a una TV e un mouse e una tastiera quando si è seduti alla scrivania.

Come rispondere all'input dell'utente

I giochi mobile tipici supportano un giocatore per dispositivo. Per risultati ottimali, un gioco risponde a tutti gli input possibili e modifica l'interfaccia utente in base a ciò che il giocatore sta utilizzando attivamente. In questo modo, una versione del gioco funziona automaticamente su tutti i fattori di forma e i giocatori possono persino combinare i vari input in base alle proprie esigenze.

Spesso gli sviluppatori vogliono avere un metodo di inserimento predefinito con ritardi incorporati prima di spostare l'interfaccia utente. Che cosa significa?

  • Poiché la maggior parte dei giocatori gioca su touchscreen, mostra i controlli touch al momento dell'avvio. Se un giocatore inizia a giocare con una tastiera o un gamepad e non utilizza il touchscreen per un po' di tempo, il livello tocco viene attenuato.
  • Se un giocatore utilizza il gamepad e preme un tasto della tastiera, sposta i suggerimenti in-game in modo da mostrare i tasti della tastiera anziché quelli del gamepad.
  • Quando un giocatore utilizza contemporaneamente la tastiera e il gamepad, inserisci un ritardo prima di passare dall'interfaccia utente da un insieme di suggerimenti a un altro per evitare il tremolio del display.
  • Controlla il tipo di origine di input durante l'elaborazione degli input. I tasti della tastiera e i pulsanti del gamepad emettono entrambi eventi di pressione dei tasti.
  • Cerca di non contrassegnare un input come gestito, a meno che il tuo gioco non possa gestirlo. Android emette di nuovo alcuni eventi per facilitare la compatibilità sui fattori di forma più recenti, ad esempio trasformando il pulsante A del gamepad nel pulsante OK.

Aggiungi un'annotazione per il supporto dell'input nel manifest

Anche se non è obbligatorio, è consigliabile annotare con i flag delle funzionalità manifest il tipo di input gestiti. I flag comuni sono:

  • android.hardware.type.pc: disattiva i livelli di compatibilità di input sia su ChromeOS che su PC per consentire agli sviluppatori di gestire direttamente gli eventi del mouse. Imposta android:required="false" in modo che il gioco venga comunque consegnato agli smartphone.
  • android.hardware.gamepad: le app e i giochi ricevono eventi del gamepad indipendentemente dal fatto che supportino o meno i gamepad. La definizione di questo flag manifest e l'impostazione android:required="false" consente di pubblicare il gioco sui dispositivi Android TV con gamepad collegati.

  1. I produttori possono integrare il supporto dello stilo per alcuni dispositivi, ma non esiste un fattore di forma per cui il supporto è garantito. Le tavolette da disegno possono essere collegate a un dispositivo Android e apparire come uno stilo. 

  2. Sebbene alcuni PC supportino il touchscreen e lo stilo, il client di Google Play Giochi risponde solo agli eventi del mouse del sistema operativo host. Per massimizzare la compatibilità, per impostazione predefinita nel client gli eventi del mouse vengono visualizzati come eventi tocco. Per ulteriori informazioni, consulta la sezione Input del mouse

  3. I dispositivi ChromeOS in genere supportano mouse e tastiera, ma i touchscreen sono facoltativi. Molti dispositivi con touchscreen supportano anche l'input con lo stilo. 

  4. Android Automotive OS si riferisce alle auto con Android integrato, che possono funzionare senza uno smartphone Android. Automotive OS è il sistema operativo a cui si riferisce questo grafico. Android Auto proietta un'app da uno smartphone sull'auto e i dispositivi che supportano Android Auto (proiezione) potrebbero non avere un touchscreen. 

  5. I dispositivi Wear OS hanno una connettività limitata. Puoi cercare periferiche Bluetooth, ma spesso il sistema operativo non riesce a connettersi.