1. Introduzione
Ultimo aggiornamento: 18/10/2022
Come si prepara il gioco per Google Play Giochi su PC?
Google Play Giochi ti consente di portare facilmente il tuo gioco mobile su PC Windows. Ciò significa che puoi aumentare il coinvolgimento dei giocatori e il tuo pubblico senza dover riprogettare il tuo gioco o riprogettare il tuo modello di business. Ci sono ancora alcune modifiche da apportare per offrire ai nuovi giocatori su PC la migliore esperienza possibile.
Cosa imparerai a fare
Questo codelab tratta le parti di base dell'elenco di controllo dei requisiti per far decollare il tuo gioco e ti aiuterà 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 trattate.
- Come creare un'architettura x86 con Unity.
- Come testare ed eseguire il deployment nell'emulatore Google Play Giochi
- Come modificare l'interfaccia utente per renderla ottimale su PC.
- Come capire se è in esecuzione nell'emulatore Google Play Giochi e adattare il gioco di conseguenza.
Che cosa ti serve
- Installazione di Unity 2020 LTS (questo codelab è stato creato con 2020.3.30f1).
- L'emulatore Google Play Giochi.
2. Configurazione
Apri o crea un nuovo progetto
- Crea un nuovo progetto utilizzando 2D Platformer Microgame oppure apri un progetto tutto tuo.
- Dal progetto, seleziona File -> Impostazioni build e verifica di avere configurato la build per Android.
3. Preparare l'emulatore Google Play Giochi
Per prima cosa, scarica l'emulatore.
Dopo l'installazione, in una finestra dovrebbe essere visualizzato un desktop Android:
Si tratta di un ambiente Android con funzionalità complete e ad alte prestazioni 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
È necessaria una versione recente di adb per rilevare l'emulatore. La versione in bundle con Android Studio funziona, ma potrebbe non essere disponibile in ADB così come fornita con Unity. Nell'emulatore è inclusa una versione compatibile, disponibile all'indirizzo C:\Program Files\Google\Play Games Developer Emulator\current\emulator
. Per una migliore esperienza di sviluppo, ti consigliamo di installare Android Studio e di utilizzarlo per gestire il tuo SDK Android.
Se l'emulatore si disconnette da adb, ricollegalo dalla riga di comando in questo modo:
adb connect localhost:6520
4. (Facoltativo) Configura Unity per creare ed eseguire il deployment direttamente nell'emulatore
La versione di adb fornita con Unity potrebbe non essere compatibile con l'emulatore. Per assicurarti, seleziona File -> Impostazioni build e controlla la finestra di dialogo Esegui dispositivo per verificare se è presente.
A seconda del progetto, del processo di compilazione e del livello di comfort, puoi scegliere di configurare Unity per il deployment direttamente nell'emulatore Google Play Giochi oppure di creare un APK e di 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 direttamente nell'emulatore seguendo questi due passaggi:
- Configura Unity in modo che utilizzi un altro SDK Unity, idealmente quello installato da Android Studio.
- Aggiorna la versione di Strumenti di creazione per risolvere un bug in Unity.
Poiché la versione dell'SDK Android fornita con Unity probabilmente non rileverà l'emulatore, utilizzi Android Studio per installare un SDK più recente.
- Apri Android Studio e seleziona Modifica -> Preferenze -> Strumenti esterni.
- Deseleziona
Android SDK Tools Installed with Unity
e indica il percorso di installazione di Android Studio (di solitoAppData/Local/Android/sdk
). Non modificare l'opzioneAndroid NDK
.
quando aggiorni i dispositivi connessi, dovresti vedere Google HPE device (localhost:6520)
nella finestra della build:
A seconda dello stato di questo bug e della tua versione Unity, potresti anche dover cambiare la versione degli strumenti di build. Per farlo, verifica di generare un mainTemplate.gradle
e un launcherTemplate.gradle
.
- Apri la finestra Impostazioni progetto per Impostazioni del player e individua la sezione
Publishing Settings
. - Scorri verso il basso fino alle opzioni Crea e seleziona "Modello di Gradle principale personalizzato". e "Custom Launcher Gradle Template", che genererà entrambi i file Gradle in
Assets\Plugins\Android\
.
- Sostituisci qualsiasi istanza della stringa
**BUILDTOOLS**
con30.0.0
. In entrambi i file, la sezione del codice ora dovrebbe essere:
android { compileSdkVersion **APIVERSION** buildToolsVersion '30.0.0'
5. (Facoltativo) Distribuzione su Chromebook
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 sono dotati di tastiere e mouse, di schermi di grandi dimensioni e sono disponibili in configurazioni x86. Utilizzeremo il plug-in Unity di Android Logcat con Chromebook.
- Apri Gestione pacchetti e cerca
Android Logcat
inUnity Registry
.
Devi anche configurare Chromebook per lo sviluppo Android. Per prima cosa, abilita Linux.
- Seleziona Impostazioni -> Sviluppatore -> Linux.
Quindi attiva il debug ADB.
- Seleziona Impostazioni -> Sviluppatori -> Ambiente di sviluppo Linux -> Sviluppa app per Android -> Attiva il debug ADB.
Ti consigliamo anche di trovare l'indirizzo IP del tuo Chromebook. Il modo più semplice per farlo è
- Fai clic sull'icona Informazioni sulla rete per ottenere l'indirizzo IP del tuo Chromebook.
- Seleziona Finestra -> Analisi -> Android Logcat per aprire la finestra di Android Logcat.
- Apri l'elenco dei dispositivi. Se al momento non è connesso nulla, potrebbe essere indicato
No Device
.
- Fai clic su Altre opzioni di connessione e inserisci l'indirizzo IP del tuo Chromebook.
- Fai clic su Connect (Connetti). Dovresti vedere una finestra di dialogo Operazione riuscita:
Il tuo Chromebook viene ora visualizzato nell'elenco Esegui dispositivi di Unity (prima potrebbe essere necessario aggiornare la schermata):
Ora puoi distribuire giochi su Chromebook e iniziare test e sviluppo su hardware simile a un PC.
6. Esegui il deployment di una build di test
Google Play Giochi richiede l'implementazione di una versione x86 del gioco, che fa parte del modo in cui raggiunge i benchmark delle prestazioni su PC desktop. Tutte le varianti LTS di Unity possono generare build Android compatibili con x86 e x86-64 (con etichetta "Chrome OS") e le versioni Unity 2018 e precedenti possono generare build x86. Per sbloccare queste architetture, devi prima passare al backend di scripting di IL2CPP, che probabilmente lo fai già in produzione per il supporto di arm64.
- Seleziona File -> Impostazioni build per aprire la finestra Impostazioni build, quindi fai clic su Impostazioni player.
- Vai alla sezione Altre impostazioni e imposta
Scripting Backend
suIL2CPP
.
Dovresti anche attivare il supporto x86 o x86-64. Per la spedizione sulla piattaforma Google Play Giochi, devi supportare solo x86, anche se consigliamo x86-64.
Anche la versione dei pacchetti Unity della raccolta Pacing del frame è incompatibile con Google Play Giochi e causa l'arresto anomalo del gioco al momento del lancio.
- Per disattivare il pacing del frame dalla finestra Impostazioni del player, apri la sezione Risoluzione e presentazione e deseleziona Pacing del frame ottimizzato.
Ora puoi iniziare a creare!
- Apri di nuovo la finestra Impostazioni build e fai clic su Crea ed esegui. Il gioco viene visualizzato nella finestra dell'emulatore.
Se non riesci a eseguire il deployment del gioco, controlla se "Dispositivo Google HPE (localhost:6520)" viene visualizzato nella sezione "Esegui dispositivo" dall'elenco di lettura. Se non lo è, assicurati che HPE_Dev sia in esecuzione e di visualizzare la schermata Home di Android. Se il dispositivo non viene ancora visualizzato nell'elenco dei dispositivi, esegui adb connect localhost:6520
con lo stesso adb.exe
in uso. 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.
Apri terminale" in evidenza" style="width: 624.00px" src="img/9101ce3c95fb1aa2.png" 1, img/910101ce3c9101ce36.png 1, img/9101.png img/9101ce36.png 36w, img/9101ce2_48.png 48w, img/48.png 48w, img/9101ce3c95oo55o, img/9101ce3c951o36, img/9101ce3c9555o, img/9101ce5101ce36.png. dimensioni="(max-width: 840px) 100vw, 856px">
7. Adatta il gioco per PC
Se possibile, prova ad 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 oppure un monitor, quindi modificare lo schema di controllo o gli elementi HUD in reazione alla configurazione del dispositivo ti consente di utilizzare Google Play Giochi su PC su tutte le piattaforme supportate.
Se ha senso cambiare la logica a seconda che il player sia presente 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 uno schermo più grande rispetto a un tipico smartphone Android. Se possibile, consigliamo che l'HUD occupi non più del 20% dello schermo. Poiché molti giochi mobile utilizzano l'opzione "Scala con dimensioni dello schermo", la modifica in "Dimensioni fisiche costanti" o "Dimensione pixel costante" può essere un buon primo passo per raggiungere questo obiettivo.
Potresti anche provare a configurare dinamicamente le impostazioni relative alla qualità usando il comando QualitySettings.SetQualityLevel
in fase di runtime, se rilevi che sono in esecuzione in Google Play Giochi. L'emulatore di Google Play Giochi utilizza ANGLE per inviare comandi nativi di OpenGL o Vulkan emessi da OpenGL Unity, quindi è probabile che tu possa ottenere una fedeltà grafica superiore rispetto a quella disponibile nelle build di giochi mobile.
8. Gestione dell'input
La distribuzione dei giochi su Google Play Giochi deve basarsi sull'input di mouse e tastiera. Dovrai pianificare come interagire con il gioco usando mouse e tastiera, quindi dedica un po' di tempo all'acquisizione dell'unitypackage SDK Input. Se non trovi 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 sviluppano controlli di base per mouse e tastiera per lo sviluppo nell'editor. Se possibile, ti consigliamo di attivarle quando utilizzi un dispositivo ChromeOS o nell'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 continuerà a funzionare come previsto. Se utilizzi l'input multi-touch, ad esempio i controlli con doppio pollice o pizzica per eseguire lo zoom, devi mappare l'azione alle pressioni dei tasti. Devi anche mappare le azioni in-game alle pressioni dei tasti, ad esempio premere I per aprire il tuo inventario, Esc per chiudere le finestre di dialogo e Invio per inviare messaggi in-game.
Il microgioco a piattaforme 2D utilizza le frecce per muoversi e lo spazio per saltare. Se utilizzi il tuo gioco, assicurati di avere le associazioni di tasti che preferisci per il passaggio successivo.
9. Integrazione SDK di input
Ora che hai configurato i controlli del mouse e della tastiera, devi aggiungere il supporto dell'SDK di input . Questo aiuta i giocatori a scoprire gli input del tuo PC con un pratico popover:
- Dopo aver importato l'SDK nel 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 { } }
- Ora compila
ActionIds
con l'elenco delle azioni che usi nel gioco. Per Microgame a piattaforme 2D, le azioni sono Sinistra, Destra e Salta:
private enum ActionIds { Left, Right, Jump }
- In
OnProvideInputMap
, crea unInputAction
per ogni azione. A questo scopo, sono necessari il nome dell'azione, l'input e i pulsanti del mouse o i codici chiave associati. 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 } } };
- Quindi, inserisci queste azioni di input in gruppi.
Per il microgioco abbiamo un solo gruppo, ma puoi crearne quanti ne hai bisogno per aiutare i tuoi giocatori a trovare le azioni di cui hanno bisogno. Aggiungi questo a OnProvideInputMap
:
var movementInputGroup = new InputGroup { GroupLabel = "Movement", InputActions = new List<InputAction> { leftAction, rightAction, jumpAction } };
- Aggiungi tutti i gruppi di input creati alla mappa di input. Modifica l'istruzione di restituzione in
OnProvideInputMap
in modo che sia:
return new InputMap { InputGroups = new List<InputGroup> { movementInputGroup }, MouseSettings = new MouseSettings { InvertMouseMovement = false, AllowMouseSensitivityAdjustment = false } };
- Infine, aggiungi lo script che hai creato al tuo gioco:
- Quando distribuisci nuovamente il gioco, premi
Shift+Tab
per aprire l'overlay in-game.
- Fai clic su Controlli per visualizzare i controlli che hai configurato.
10. Rimuovi le visualizzazioni web incorporate
Per offrire ai giocatori un'esperienza ottimale, devi rimuovere le visualizzazioni web incorporate. È pratica comune utilizzare le visualizzazioni web incorporate per mostrare elementi quali le norme sulla privacy o i Termini di servizio. Funzionano in Google Play Giochi, ma vengono visualizzate in un file "dispositivo mobile" incorporato piuttosto che il browser desktop preferito del player, questo potrebbe creare confusione per i lettori su PC. Di conseguenza, in Unity, se utilizzi estensioni per mostrare un browser incorporato, utilizza Application.OpenURL(url)
.
11. Autorizzazioni e funzionalità
Esistono un certo numero di funzionalità e autorizzazioni Android che non sono supportate in Google Play Giochi. Una regola generale è che nella build del PC non dovrebbe mai aprire una finestra di dialogo delle autorizzazioni. Una cosa buona da fare, ora che la build è pronta, è eseguire una nuova installazione tipica e annotare le finestre di dialogo che vedi da aggiungere alla tua "da fare". elenco per inviare il gioco.
Alcuni giochi Unity richiedono autorizzazioni utilizzando l'API Android.Permission. Devi aggregarli nei controlli if (GoogleDeviceUtilities.IsGooglePlayGames)
e andare direttamente alla logica di errore, se applicabile.
12. Ottimizzazioni desktop
Google Play Giochi presenta alcune differenze rispetto a un tipico smartphone Android, pertanto ti consigliamo di configurare il tuo gioco di conseguenza.
Passa a DXT per comprimere la texture. I formati di texture Android comuni, come ETC, vengono decodificati in memoria in fase di runtime se non possono essere trasmessi direttamente alla GPU di un player. ASTC offre la migliore compatibilità desktop, sebbene sia necessario utilizzare uno strumento di profilazione GPU desktop per verificare il comportamento previsto per il gioco.
Poiché ora stai utilizzando una GPU per desktop, potresti anche voler migliorare la qualità della grafica. Puoi modificarlo direttamente in Impostazioni progetto sotto Qualità.
13. Complimenti
Hai tutto a disposizione 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 lo stesso codebase, è consigliabile adattare il gioco in modo che risulti come un gioco per PC nativo.
Passaggi successivi
C'è ancora molto lavoro da fare per offrire un gioco su Google Play Giochi:
- Per le informazioni più recenti, consulta la Guida rapida.
- Esegui l'upgrade all'accesso ai servizi per i giochi di Play v2 per far accedere automaticamente un giocatore all'avvio e soddisfare i requisiti di continuità.
- Implementa l'API Play Integrity per assicurarti che la tua esperienza su PC sia sicura come quella mobile.
Infine, gran parte del lavoro che hai svolto fino a questo punto per il supporto di Google Play Giochi ti aiuta a distribuire ChromeOS e dovresti considerare di supportare questa piattaforma insieme al PC.