Inizia a usare Unity e Google Play Giochi per PC

1. Introduzione

Logo Google Play Giochi

Ultimo aggiornamento: 18/10/2022

Come si prepara un gioco per Google Play Giochi su PC?

Google Play Giochi semplifica il porting del tuo gioco mobile su PC Windows. Ciò significa che puoi aumentare il coinvolgimento dei giocatori e il tuo pubblico senza dover riprogettare il gioco o il modello di business. Devi ancora apportare alcune modifiche per offrire ai nuovi giocatori su PC la migliore esperienza possibile.

Cosa imparerai a fare

Questo codelab copre le parti di base della lista di controllo dei requisiti per avviare il tuo gioco e ti aiuta a preparare il tuo gioco Unity per Google Play Giochi su PC. Le integrazioni più approfondite, come l'accesso a Play Giochi e l'API Play Integrity, non sono coperte.

  • Come creare per l'architettura x86 da Unity.
  • Come testare ed eseguire il deployment nell'emulatore Google Play Games.
  • Come modificare l'interfaccia utente per visualizzarla al meglio su un PC.
  • Come rilevare se stai eseguendo l'emulatore Google Play Giochi e adattare il gioco di conseguenza.

Che cosa ti serve

2. Configurazione

Aprire o creare un nuovo progetto

  1. Crea un nuovo progetto utilizzando il microgioco platform 2D o apri un tuo progetto.

The Unity

  1. Nel progetto, seleziona File -> Build Settings e verifica di aver configurato la build per Android.

Uno screenshot di Unity

3. Preparare l'emulatore di Google Play Games

Inizia scaricando l'emulatore.

Dopo l'installazione, dovresti vedere un desktop Android in una finestra:

Screenshot della finestra dell'emulatore di Google Play Games. La schermata Home di Android è visibile.

Si tratta di un ambiente Android ad alte prestazioni e ricco di funzionalità adatto allo sviluppo di giochi. Dovrebbe essere visualizzato in Android Debug Bridge (adb) come dispositivo su localhost:

❯ adb devices
List of devices attached
localhost:6520  device

Per rilevare l'emulatore, devi avere una versione recente di adb. La versione inclusa in Android Studio funziona, ma adb fornito con Unity potrebbe non funzionare. Una versione compatibile è inclusa nell'emulatore e puoi trovarla in C:\Program Files\Google\Play Games Developer Emulator\current\emulator. Per un'esperienza di sviluppo ottimale, ti consigliamo di installare Android Studio e utilizzarlo per gestire l'SDK Android.

Se l'emulatore si disconnette da adb, riconnettilo dalla riga di comando nel seguente modo:

adb connect localhost:6520

4. (Facoltativo) Configurare Unity per la creazione e il deployment direttamente nell'emulatore

La versione di adb fornita con Unity potrebbe non essere compatibile con l'emulatore. Per verificare, seleziona File -> Build Settings e controlla la finestra di dialogo Run Device per vedere se è presente nell'elenco.

Esegui il dispositivo in

A seconda del progetto, del processo di compilazione e del livello di comfort, puoi scegliere di configurare Unity per il deployment diretto nell'emulatore Google Play Giochi oppure creare un APK ed eseguirne il deployment manualmente con adb install. Il deployment manuale richiede il minor numero di modifiche, ma potrebbe rallentare il ciclo di iterazione.

Esegui il deployment nell'emulatore direttamente con questi due passaggi:

  1. Configura Unity in modo che utilizzi un altro SDK Unity, idealmente quello installato da Android Studio.
  2. Aggiorna la versione di Build Tools per risolvere un bug in Unity.

Poiché la versione dell'SDK Android fornita con Unity probabilmente non rileva l'emulatore, utilizza Android Studio per installare un SDK più recente.

  1. Apri Android Studio e seleziona Modifica -> Preferenze -> Strumenti esterni.
  2. Deseleziona Android SDK Tools Installed with Unity e fornisci il percorso di installazione di Android Studio (di solito AppData/Local/Android/sdk). Lascia l'opzione Android NDK invariata.

Screenshot di

Quando aggiorni i dispositivi connessi, dovresti visualizzare Google HPE device (localhost:6520) nella finestra di compilazione:

Screenshot del

A seconda dello stato di questo bug e della tua versione di Unity, potresti anche dover modificare la versione degli strumenti di compilazione. Per farlo, verifica di generare un mainTemplate.gradle e un launcherTemplate.gradle.

  1. Apri la finestra Impostazioni progetto per Impostazioni player e individua la sezione Publishing Settings.
  2. Scorri verso il basso fino alle opzioni Build (Compila) e seleziona "Custom Main Gradle Template" (Modello Gradle principale personalizzato) e "Custom Launcher Gradle Template" (Modello Gradle di avvio personalizzato), che genereranno entrambi i file Gradle in Assets\Plugins\Android\.

Screenshot del

  1. Sostituisci qualsiasi istanza della stringa **BUILDTOOLS** con 30.0.0. In entrambi i file, la sezione di codice ora dovrebbe essere:
android {
    compileSdkVersion **APIVERSION**
    buildToolsVersion '30.0.0'

5. Eseguire il deployment su un Chromebook (facoltativo)

Puoi iniziare a sviluppare giochi per Google Play Giochi senza accedere all'emulatore Google Play Giochi utilizzando un dispositivo ChromeOS. Proprio come Google Play Giochi su PC, i Chromebook hanno tastiere e mouse, schermi grandi e sono disponibili in configurazioni x86. Utilizzeremo il plug-in Unity Android Logcat con Chromebook.

  1. Apri Package Manager e cerca Android Logcat in Unity Registry.

Finestra di Package Manager con

Devi anche configurare Chromebook per lo sviluppo per Android. Inizia attivando Linux.

  1. Seleziona Impostazioni -> Sviluppatore -> Linux.

Immagine animata che mostra come attivare il supporto di Linux.  Sviluppatore è selezionato nella finestra Impostazioni. Poi

Poi attiva il debug ADB.

  1. Seleziona Impostazioni -> Sviluppatori -> Ambiente di sviluppo Linux -> Sviluppa app per Android -> Attiva debug ADB.

Il debug ADB è attivato dal menu Sviluppatore.

Ti consigliamo anche di recuperare l'indirizzo IP di Chromebook. Il modo più semplice per farlo è

  1. Fai clic sull'icona Informazioni di rete per ottenere l'indirizzo IP di Chromebook.

Screenshot della finestra di rete aperta su un Chromebook.

Viene fatto clic sul pulsante delle informazioni di rete, che mostra l'indirizzo IP.

  1. Seleziona Window -> Analysis -> Android Logcat per aprire la finestra Android Logcat.

Finestra> Analisi aperta in Unity con

  1. Apri l'elenco dei dispositivi. Potrebbe essere visualizzato il messaggio No Device se al momento non è connesso alcun dispositivo.

Finestra Android Logcat visualizzata, menu a discesa del dispositivo selezionato.

  1. Fai clic su Altre opzioni di connessione e inserisci l'indirizzo IP di Chromebook.

Si apre la finestra Altre connessioni. Viene inserito un indirizzo IP.

  1. Fai clic su Connetti. Dovresti visualizzare una finestra Operazione riuscita:

Viene visualizzata una finestra di dialogo con il messaggio

Ora il tuo Chromebook viene visualizzato nell'elenco Run Device di Unity (potrebbe essere necessario aggiornare prima lo schermo):

The Unity

Ora puoi eseguire il deployment dei giochi su Chromebook e iniziare a testarli e svilupparli su hardware simile a quello di un PC.

6. Eseguire il deployment di una build di test

Google Play Giochi richiede di implementare una versione x86 del gioco, che fa parte del modo in cui raggiunge i benchmark di prestazioni sui PC. Tutte le varianti LTS di Unity possono generare build Android compatibili con x86 e x86-64 (etichettate come "ChromeOS") e Unity versione 2018 e precedenti possono generare build x86. Per sbloccare queste architetture, devi prima passare al backend di scripting IL2CPP, che probabilmente utilizzi già in produzione per il supporto di arm64.

  1. Seleziona File -> Build Settings per aprire la finestra Build Settings, quindi fai clic su Player Settings.

Screenshot del

  1. Vai alla sezione Altre impostazioni e imposta Scripting Backend su IL2CPP.

Screenshot del

Ti consigliamo di attivare anche il supporto x86 o x86-64. Per la pubblicazione sulla piattaforma Google Play Games è necessario supportare solo x86, anche se consigliamo x86-64.

Screenshot della sezione Configurazione delle impostazioni del player

Anche la versione della libreria Frame Pacing inclusa in Unity è incompatibile con Google Play Giochi e causa l'arresto anomalo del gioco all'avvio.

  1. Per disattivare la spaziatura dei fotogrammi dalla finestra Impostazioni del player, apri la sezione Risoluzione e presentazione e deseleziona Spaziatura dei fotogrammi ottimizzata.

Screenshot

Ora puoi iniziare a creare.

  1. Apri di nuovo la finestra Impostazioni build e fai clic su Build ed esegui. Il gioco viene visualizzato nella finestra dell'emulatore.

Screenshot dell'emulatore Google Play Games con il

Se non riesci a eseguire il deployment del gioco, controlla se "Google HPE device (localhost:6520)" viene visualizzato nell'elenco "Run Device" (Esegui dispositivo). Se non è presente, assicurati che HPE_Dev sia in esecuzione e che tu possa vedere la schermata Home di Android. Se ancora non viene visualizzato nell'elenco dei dispositivi, esegui adb connect localhost:6520 con l'adb.exe esatto che stai utilizzando. Se utilizzi il plug-in Android Logcat Unity, seleziona Strumenti -> Apri terminale per aprire un terminale nella directory con lo stesso adb.exe utilizzato da Unity.

Screenshot del Apri Terminale" evidenziato" style="width: 624.00px" src="img/9101ce3c95fb1aa2.png" srcset="img/9101ce3c95fb1aa2_36.png 36w, img/9101ce3c95fb1aa2_48.png 48w, img/9101ce3c95fb1aa2_72.png 72w, img/9101ce3c95fb1aa2_96.png 96w, img/9101ce3c95fb1aa2_480.png 480w, img/9101ce3c95fb1aa2_720.png 720w, img/9101ce3c95fb1aa2_856.png 856w, img/9101ce3c95fb1aa2_960.png 960w, img/9101ce3c95fb1aa2_1440.png 1440w, img/9101ce3c95fb1aa2_1920.png 1920w, img/9101ce3c95fb1aa2_2880.png 2880w" sizes="(max-width: 840px) 100vw, 856px">

7. Adattare il gioco per PC

Se possibile, cerca di apportare modifiche al gioco in base a metriche indipendenti dalla piattaforma o alla presenza di determinate funzionalità. Ad esempio, un giocatore su Android può collegare un mouse e una tastiera o un monitor. Se modifichi lo schema di controllo o gli elementi dell'HUD in base alla configurazione del dispositivo, puoi sfruttare Google Play Giochi per PC su tutte le piattaforme supportate.

Se è opportuno modificare la logica in base al fatto che il giocatore si trovi o meno in Google Play Giochi o ChromeOS, questo script ti aiuta a rilevarlo controllando la funzionalità di sistema HPE_EXPERIENCE:

using UnityEngine;

public class GoogleDeviceUtilities
{
#if UNITY_ANDROID && !UNITY_EDITOR
    private static AndroidJavaObject PackageManager
    {
        get
        {
            var unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            var currentActivity = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");
            return currentActivity.Call<AndroidJavaObject>("getPackageManager");
        }
    }

    public static bool IsChromeOS => PackageManager.Call<bool>("hasSystemFeature", "org.chromium.arc");

    public static bool IsGooglePlayGames =>
        PackageManager.Call<bool>("hasSystemFeature", "com.google.android.play.feature.HPE_EXPERIENCE");

    public static bool HasKeyboard
    {
        get
        {
            var unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            var currentActivity = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");
            var resources = currentActivity.Call<AndroidJavaObject>("getResources");
            var configuration = resources.Call<AndroidJavaObject>("getConfiguration");
            var keyboard = configuration.Get<int>("keyboard");
            return keyboard == 2; // Configuration.KEYBOARD_QWERTY
        }
    }
#else
    public static bool IsChromeOS => false;
    public static bool IsGooglePlayGames => false;
    public static bool HasKeyboard => true;
#endif
}

I PC hanno un display più grande rispetto al tipico smartphone Android. Se possibile, consigliamo che l'HUD occupi non più del 20% dello schermo. Poiché molti giochi per dispositivi mobili utilizzano l'opzione "Scala con le dimensioni dello schermo", passare a "Dimensioni fisiche costanti" o "Dimensioni in pixel costanti" può essere un buon primo passo per raggiungere questo obiettivo.

Screenshot del

Potresti anche voler impostare dinamicamente le impostazioni di qualità utilizzando il comando QualitySettings.SetQualityLevel in fase di runtime se rilevi che stai eseguendo l'app in Google Play Giochi. L'emulatore Google Play Giochi utilizza ANGLE per emettere comandi DirectX o Vulkan nativi da OpenGL Unity, in modo da ottenere una fedeltà grafica superiore rispetto a quella disponibile nelle build di giochi per dispositivi mobili.

8. Gestione dell'input

I giochi pubblicati su Google Play Games devono essere progettati per l'input da mouse e tastiera. Dovrai pianificare come interagire con il gioco con mouse e tastiera, quindi prenditi il tempo necessario per acquisire il unitypackage dell'SDK Input. Se non vedi un download in quella pagina, assicurati di aver eseguito l'accesso con un account del gruppo play-mp-libs.

A scopo di test, molti giochi creano controlli di base per mouse e tastiera per lo sviluppo nell'editor. Se possibile, ti consigliamo di attivarle quando utilizzi un dispositivo ChromeOS o l'emulatore Google Play Giochi.

Per impostazione predefinita, Google Play Giochi e ChromeOS convertono l'input del mouse in un tocco simulato. Se utilizzi Input.GetTouch e Input.touchCount, il gioco continua a funzionare come previsto. Se utilizzi l'input multitocco, ad esempio i controlli con due pollici o il pizzico per zoomare, devi mappare l'azione alle pressioni dei tasti. Devi anche mappare le azioni di gioco alla pressione dei tasti, ad esempio premere i per aprire l'inventario, Esc per chiudere le finestre di dialogo e Invio per inviare messaggi in-game.

Il microgioco Platform 2D utilizza le frecce per muoversi e la barra spaziatrice per saltare. Se utilizzi il tuo gioco, assicurati di avere le assegnazioni dei tasti che preferisci per il passaggio successivo.

9. Integrazione dell'SDK di input

Ora che hai configurato i controlli del mouse e della tastiera, devi aggiungere il supporto dell'SDK Input . In questo modo, i giocatori possono scoprire i tuoi input per PC con un pratico popover:

  1. Dopo aver importato l'SDK nel tuo progetto, crea un file denominato InputMappingProviderBehaviour.cs e aggiungi questi contenuti:
using System.Collections.Generic;
using Google.Play.InputMapping;
using UnityEngine;
using Input = Google.Play.InputMapping.Input;

public class InputMappingProviderBehaviour : MonoBehaviour
{
    private void Start()
    {
        Input.GetInputMappingClient().RegisterInputMappingProvider(new MyInputMappingProvider());
    }

    private class MyInputMappingProvider : InputMappingProvider
    {
        public InputMap OnProvideInputMap()
        {
            return new InputMap
            {
                InputGroups = new List<InputGroup> { },
                MouseSettings = new MouseSettings
                {
                    InvertMouseMovement = false,
                    AllowMouseSensitivityAdjustment = false
                }
            };
        }
    }

    private enum ActionIds
    {
    }
}
  1. Ora compila ActionIds con l'elenco delle azioni che utilizzi nel gioco. Per il microgioco Platform 2D, le azioni sono Sinistra, Destra e Salto:
private enum ActionIds
{
    Left,
    Right,
    Jump
}
  1. In OnProvideInputMap, crea un InputAction per ogni azione. Per questo, devi conoscere il nome dell'azione, l'input e i pulsanti del mouse o i codici chiave a cui verrà associata. Per il gioco di esempio:
var leftAction = new InputAction
{
    ActionLabel = "Walk Left",
    UniqueId = (int)ActionIds.Left,
    InputControls = new InputControls
    {
        AndroidKeycodes = new[]
        {
            AndroidKeyCode.KEYCODE_DPAD_LEFT
        }
    }
};

var rightAction = new InputAction
{
    ActionLabel = "Walk Right",
    UniqueId = (int)ActionIds.Right,
    InputControls = new InputControls
    {
        AndroidKeycodes = new[]
        {
            AndroidKeyCode.KEYCODE_DPAD_RIGHT
        }
    }
};

var jumpAction = new InputAction
{
    ActionLabel = "Jump",
    UniqueId = (int)ActionIds.Jump,
    InputControls = new InputControls
    {
        AndroidKeycodes = new[]
        {
            AndroidKeyCode.KEYCODE_SPACE
        }
    }
};
  1. Successivamente, raggruppa queste azioni di input.

Per il microgioco abbiamo un solo gruppo, ma puoi crearne quanti ne vuoi per aiutare i giocatori a trovare le azioni di cui hanno bisogno. Aggiungi questo codice a OnProvideInputMap:

var movementInputGroup = new InputGroup
{
    GroupLabel = "Movement",
    InputActions = new List<InputAction>
    {
        leftAction, rightAction, jumpAction
    }
};
  1. Aggiungi alla mappa di input tutti i gruppi di input che hai creato. Modifica la dichiarazione di reso in OnProvideInputMap in modo che reciti:
return new InputMap
{
    InputGroups = new List<InputGroup> { movementInputGroup },
    MouseSettings = new MouseSettings
    {
        InvertMouseMovement = false,
        AllowMouseSensitivityAdjustment = false
    }
};
  1. Infine, aggiungi lo script che hai creato al tuo gioco:

Screenshot di un nodo denominato

  1. Quando esegui di nuovo il deployment del gioco, premi Shift+Tab per aprire l'overlay in-game.

Screenshot del

  1. Fai clic su Controlli per visualizzare i controlli che hai configurato.

Screenshot del

10. Rimuovere le visualizzazioni web incorporate

Per offrire ai tuoi giocatori un'esperienza ottimale, devi rimuovere le visualizzazioni web incorporate. È comune utilizzare le librerie WebView incorporate per visualizzare elementi come le Norme sulla privacy o i Termini di servizio. Sebbene funzionino in Google Play Giochi, vengono visualizzati in un browser "mobile" incorporato, anziché nel browser desktop preferito dal giocatore, e potrebbero causare confusione per i giocatori su PC. Pertanto, in Unity, se utilizzi estensioni per mostrare un browser incorporato, torna a Application.OpenURL(url).

11. Autorizzazioni e funzionalità

Esistono diverse funzionalità e autorizzazioni di Android non supportate in Google Play Games. Una regola generale è che la build del PC non deve mai mostrare una finestra di dialogo delle autorizzazioni. Ora che la build è pronta, ti consigliamo di eseguire una tipica nuova installazione e annotare tutte le finestre di dialogo visualizzate da aggiungere all'elenco delle cose da fare per l'invio del gioco.

Alcuni giochi Unity richiedono autorizzazioni utilizzando l'API Android.Permission. Devi racchiuderli nei controlli if (GoogleDeviceUtilities.IsGooglePlayGames) e passare direttamente alla logica di errore, se applicabile.

12. Ottimizzazioni per il desktop

Google Play Giochi presenta alcune differenze rispetto a un tipico smartphone Android e potresti voler configurare il gioco di conseguenza.

Passa a DXT per la compressione delle texture. I formati di texture Android comuni, come ETC, vengono decodificati in memoria in fase di runtime se non possono essere trasferiti direttamente alla GPU di un player. ASTC offre la migliore compatibilità con i computer, anche se devi utilizzare uno strumento di profilazione della GPU del computer per verificare il comportamento previsto per il tuo gioco.

The Unity

Poiché ora utilizzi una GPU per computer, potresti anche voler aumentare la qualità della grafica. Puoi modificarlo direttamente in Impostazioni progetto nella sezione Qualità.

Screenshot del

13. Complimenti

Hai tutto ciò che ti serve per iniziare a lavorare al tuo gioco per Google Play Giochi. Puoi iniziare a testare e iterare il tuo gioco. Ricorda che, anche se puoi mantenere la stessa base di codice, dovrai adattare il gioco in modo che sembri un gioco nativo per PC.

Passaggi successivi

Per pubblicare un gioco su Google Play Giochi è necessario svolgere altre attività:

Infine, gran parte del lavoro che hai svolto finora per supportare Google Play Giochi ti aiuta anche a pubblicare su ChromeOS e dovresti prendere in considerazione il supporto di questa piattaforma insieme al PC.