Pixonic ha aumentato il coinvolgimento del 25% su ChromeOS ottimizzandolo per gli schermi di grandi dimensioni

Premessa

Pixonic, un team di sviluppatori di videogiochi con sede a Mosca, è orgoglioso di cogliere ogni opportunità di eseguire l'upgrade delle sue app mobile e di raggiungere un pubblico ancora più più ampio di giocatori. Uno dei titoli più noti dell'azienda è War Robots, un'esperienza PvP (Player-vs-Player) di 12 persone in cui i giocatori operano e sfidano robot personalizzati su un campo di battaglia dal vivo.

Rilasciato nel 2014, War Robots è stato originariamente progettato per i dispositivi Android di prima generazione, con movimento basato sul touchpad e nessun input del mouse. Poiché il team di Pixonic è un appassionato di giochi, si è reso conto che l'app aveva bisogno di alcune modifiche per offrire un'esperienza utente ottimale su una gamma più ampia di dispositivi, come laptop e tablet. È già possibile giocare a War Robots su qualsiasi dispositivo Android poiché i Chromebook eseguono una versione completa del framework Android all'interno di un container. Apportando qualche altra modifica alla programmazione, Pixonic è riuscita a sfruttare tutte le funzionalità di ChromeOS.

Ecco come il team di Pixonic ha ottimizzato War Robots per offrire esperienze ottimali su schermi più grandi.

Cosa hanno fatto

Per avviare le ottimizzazioni, Pixonic ha aggiunto un tag di metadati in AndroidManifest.xml che indica al sistema che è pronto per il supporto completo di ChromeOS e deve disattivare l'emulazione al 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 per tastiera e mouse

Nei giochi PvP in terza persona come War Robots, muoversi e puntare è molto più semplice usando tastiera e mouse, soprattutto sui dispositivi con schermi più grandi. Quindi, il passaggio successivo è stato riscrivere il codice per il supporto di tastiera e mouse per la modalità di battaglia del gioco, mantenendo i controlli del touchscreen.

Per fornire i controlli giusti al momento giusto, il team di Pixonic ha scritto un nuovo codice per verificare 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. Il joystick di movimento nell'angolo in basso a sinistra scompare e tutte le azioni disponibili (come l'ordinamento di armi, abilità e menu) sono etichettate con scorciatoie da tastiera.

Robot da guerra in modalità laptop.

Se non viene rilevata alcuna tastiera, il joystick di movimento viene visualizzato nell'angolo in basso a sinistra e le scorciatoie da tastiera sono nascoste nei pulsanti del menu in basso a destra.

War Robots in modalità di gameplay su tablet/dispositivi mobili.

Successivamente, Pixonic voleva assicurarsi che il cursore resti nascosto quando un giocatore utilizzava il mouse per ruotare la videocamera. Scegliendo come target Android 7.0 (livello API 24) o versioni successive, il team poteva impostare qualsiasi icona puntatore. In questo caso, il team ha utilizzato una 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 chiuse e era in corso una battaglia. Se vengono visualizzate finestre popup, ad esempio il menu Pausa, Pixonic ha reso visibile il cursore, visualizzando la relativa icona predefinita.

Adattare i meccanismi e i tutorial del gameplay

Per migliorare l'esperienza utente, Pixonic ha anche scritto un nuovo codice per mostrare vari tutorial di gameplay in base all'attuale modalità del dispositivo dell'utente. Se un giocatore passa dal gameplay su tablet a quello su laptop durante la battaglia e non ha ancora visto un tutorial per l'altra modalità, il tutorial viene mostrato prima della ripresa del gameplay.

Tutorial di gameplay in modalità laptop con input da tastiera e mouse.

Tutorial del gameplay in modalità tablet con controlli touchscreen.

Quando i giocatori sono in modalità laptop, Pixonic disattiva anche il controllo della fotocamera touchscreen (dal momento che i giocatori controlleranno la fotocamera con un mouse) mentre tutti i pulsanti di gameplay funzionano 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 di più finestre

Come ultimo passaggio, Pixonic voleva assicurarsi che il gioco non si bloccasse in modalità a schermo intero al momento del lancio. L'attivazione del gameplay a finestre in ChromeOS consente agli utenti di guardare contemporaneamente i loro autori di streaming preferiti durante il gioco, aggiornare i robot mentre leggono le nuove abilità sul sito web del gioco o assistere a una battaglia in modalità 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">

Tenendo presente che l'interfaccia di gioco può essere utilizzata solo in un determinato intervallo di dimensioni, il team ha impostato le dimensioni minime delle finestre supportate:

<activity … >
    <layout android:gravity="center" android:minHeight="800dp" android:minWidth="1200dp" />
</activity>

Per un gameplay più coinvolgente, Pixonic ha utilizzato i meta tag per impostare la modalità a schermo intero come predefinita e l'orientamento orizzontale a seconda delle esigenze.

<application>
    <meta-data android:name="WindowManagerPreference:FreeformWindowSize" android:value="maximize" />
    <meta-data android:name="WindowManagerPreference:FreeformWindowOrientation" android:value="landscape" />
    ….
</application>

War Robots è stato lanciato in modalità a finestre.

Queste ottimizzazioni hanno anche fatto in modo che il gioco non si interrompesse e che l'HUD di battaglia si adatti di conseguenza man mano che i giocatori espandono e riducono le finestre di gameplay.

Risultati

Grazie a una vasta raccolta di risorse online, l'intero processo ha richiesto solo due settimane al team di sviluppo composto da cinque membri di Pixonic.

Da quando Pixonic ha implementato le ultime ottimizzazioni,più di 100.000 giocatori hanno già giocato a War Robots su ChromeOS. Poiché il gameplay ora può sfruttare lo spazio aggiuntivo su schermi più grandi, le battaglie di War Robots sono ancora più coinvolgenti e coinvolgenti di prima. Infatti, le sessioni utente sono del 25% più lunghe sui Chromebook rispetto ad altri dispositivi Android. I primi feedback sono stati incredibilmente positivi e alcuni giocatori hanno persino notato che il gioco ottimizzato per Chromebook funziona più facilmente dell'emulatore di BlueStacks.

Sulla base del successo ottenuto, gli sviluppatori di Pixonic hanno in programma di aggiornare la grafica di War Robots su tutti i dispositivi Android per rendere il gameplay ancora più vicino a un'esperienza di qualità PC.

Consulta alcune best practice per ottimizzare le tue app per ChromeOS.