Premessa
Pixonic un team di sviluppatori di videogiochi con sede a Mosca, è orgoglioso a cogliere ogni opportunità di upgrade delle sue app mobile e raggiungere un pubblico di giocatori. Uno dei titoli più noti dell'azienda è Robot da guerra Un'esperienza PvP (Player-vs-Player) di 12 persone in cui i giocatori operano e duello robot personalizzati su un campo di battaglia live.
Rilasciato nel 2014, War Robots è stato originariamente progettato per il dispositivi di prima generazione con movimento basato sul touchpad e nessun input del mouse. La Il team di Pixonic, essendo loro stessi accaniti giocatori, ha capito che l'app aveva bisogno di modifiche per offrire un'esperienza utente ottimale su una gamma più ampia di dispositivi, come laptop e tablet. War Robots era già utilizzabile su qualsiasi dispositivo Android perché i Chromebook eseguono una versione completa del framework Android all'interno di un container. Apportando qualche ulteriore modifica al codice, Pixonic è riuscita a i vantaggi delle funzionalità ChromeOS funzionalità complete.
Ecco come il team di Pixonic ha ottimizzato War Robots per esperienze ottimali su schermi più grandi.
Cosa è stato fatto
Per avviare le ottimizzazioni, Pixonic ha aggiunto un tag di metadati Il file AndroidManifest.xml che indica al sistema che è pronto per il supporto completo di ChromeOS e deve disattivare l'emulazione del tocco:
<uses-feature android:name="android.hardware.type.pc" android:required="false" />
Pixonic ha anche impostato il valore minSdk dell'app su 24 in modo che il motore di gioco Unity possa ricevere direttamente i clic del mouse e tutti gli eventi API relativi al movimento (non solo gli eventi del touchpad).
Supporto di tastiera e mouse
Nei giochi PvP in terza persona come War Robots, spostare e mirare è molto più facile usando la tastiera e il mouse, soprattutto sui dispositivi con schermi più grandi. Di conseguenza, il passo successivo è stato riscrivere il codice per il supporto di tastiera e mouse per la modalità di combattimento del gioco, mantenendo al contempo i controlli touchscreen.
Per offrire i controlli giusti al momento giusto, il team di Pixonic ha scritto un nuovo codice per controllare l'attuale modalità di gameplay dell'utente:
@Override
public void onConfigurationChanged(Configuration newConfig) {
boolean hasQwertyKeyboard = newConfig.keyboard == Configuration.KEYBOARD_QWERTY && newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO;
try {
UnityPlayer.UnitySendMessage("Receiver", "ConfigChange", new JSONObject().put("keyboard", hasQwertyKeyboard).toString());
} catch (JSONException e) {
e.printStackTrace();
}
}
Se viene rilevata una tastiera QWERTY, il gioco si adatta alla modalità desktop. La il joystick di movimento nell'angolo in basso a sinistra scompare e tutti i dispositivi disponibili azioni (come l'ordinamento di armi, abilità e menu) siano etichettate usando le scorciatoie da tastiera.
Se non viene rilevata una tastiera, in basso a sinistra viene visualizzato il joystick di movimento e le scorciatoie da tastiera sono nascoste nei pulsanti del menu in basso a destra.
In seguito, Pixonic ha voluto assicurarsi che il cursore rimanga nascosto quando un giocatore utilizza il mouse per ruotare la fotocamera. Se scegli come target Android 7.0 (livello API 24) oppure più in alto, il team può impostare qualsiasi icona del puntatore. In questo caso, il team ha utilizzato bitmap trasparente per rendere invisibile il cursore durante il gameplay:
public boolean setPointerVisibility(boolean visible) {
View = activity.findViewById(android.R.id.content);
view.setPointerIcon(PointerIcon.getSystemIcon(activity, visible ? PointerIcon.TYPE_DEFAULT : PointerIcon.TYPE_NULL));
}
In questo modo il cursore sarebbe stato disattivato e invisibile quando tutte le altre finestre sono chiusi ed è in corso una battaglia. Se vengono visualizzate finestre popup, ad esempio il menu di pausa, Pixonic ha reso visibile il cursore mostrando la sua icona predefinita.
Adattamento dei tutorial e delle meccaniche del gameplay
Per una migliore esperienza utente, Pixonic ha anche scritto un nuovo codice per visualizzare tutorial di gameplay basati sulla modalità attuale del dispositivo di un utente. Se un giocatore cambia tra tablet e laptop durante la battaglia e non hanno ancora visto per le diverse modalità, viene mostrato prima della ripresa del gameplay.
Quando i giocatori sono in modalità laptop, Pixonic disattiva anche la fotocamera touchscreen.
(poiché i giocatori controlleranno la videocamera con il mouse) mentre tutte le
i pulsanti per il gameplay come al solito. Per distinguere i tocchi dai movimenti del mouse,
Il team utilizza la proprietà Input.touchCount
(negli script Unity):
if(Input.touchCount > 0) {
// this is screen touch event
} else {
// this is mouse (touchpad) event
}
Supporto multi-finestra
Come passaggio finale, Pixonic voleva assicurarsi che il gioco non si bloccasse modalità a schermo intero quando viene avviata. L'attivazione del gameplay con finestre in ChromeOS consente agli utenti di guardare contemporaneamente i loro autori di streaming preferiti mentre giocano, eseguire l'upgrade i propri robot mentre leggono delle nuove abilità sul sito web del gioco o assistere a una battaglia passiva durante la visione di un video separato.
Per farlo, Pixonic ha contrassegnato UnityPlayerActivity
come ridimensionabile:
<activity android:name="com.unity3d.player.UnityPlayerActivity" ....
android:resizeableActivity="true">
Tieni presente che l'interfaccia di gioco sembra utilizzabile solo in un determinato di dimensioni, il team ha impostato le dimensioni minime supportate delle finestre:
<activity … >
<layout android:gravity="center" android:minHeight="800dp" android:minWidth="1200dp" />
</activity>
Per un gameplay più coinvolgente, Pixonic ha utilizzato meta tag per impostare la modalità a schermo intero predefinito e l'orientamento orizzontale desiderato.
<application>
<meta-data android:name="WindowManagerPreference:FreeformWindowSize" android:value="maximize" />
<meta-data android:name="WindowManagerPreference:FreeformWindowOrientation" android:value="landscape" />
….
</application>
Queste ottimizzazioni hanno anche assicurato che il gioco non si mettesse in pausa e che la battaglia L'HUD si adatta di conseguenza man mano che i giocatori espandono e rimpiccioliscono le loro finestre di gameplay.
Risultati
Grazie a un'ampia libreria di risorse online, l'intero di processo ha impiegato appena due settimane al team di sviluppo di Pixonic, composto da cinque membri.
Più di 100.000 giocatori hanno già giocato a War Robots su ChromeOS da allora Pixonic ha implementato le ultime ottimizzazioni. Ora che il gameplay può sfruttare lo spazio aggiuntivo offerto dagli schermi più grandi, le battaglie di War Robots sono ancora più immersive e coinvolgenti di prima. Infatti, le sessioni utente sono più lunghe del 25% sui Chromebook rispetto ad altri dispositivi Android. I primi feedback sono stati incredibilmente positivo. Alcuni giocatori hanno persino notato che Il gioco ottimizzato per Chromebook funziona in modo più fluido rispetto a quello di BlueStacks un emulatore.
Sulla base del loro successo, gli sviluppatori di Pixonic hanno in programma di aggiornare War Robots grafica su tutti i dispositivi Android per rendere il gameplay ancora più simile a quello di un PC un'esperienza senza intervento manuale.
Consulta alcune best practice per ottimizzare le tue app per ChromeOS.