1. Einführung
Zuletzt aktualisiert:18.10.2022
Wie bereitest du dein Spiel für Google Play Spiele auf dem PC vor?
Mit Google Play Spiele ist es ganz einfach, Spiele für Mobilgeräte auf Windows-PCs zu bringen. So können Sie die Spielerbindung und die Zielgruppe steigern, ohne Ihr Spiel oder Ihr Geschäftsmodell umgestalten zu müssen. Es gibt aber noch ein paar Änderungen, die du vornehmen musst, um deinen neuen PC-Spielern das bestmögliche Erlebnis zu bieten.
Aufgaben in diesem Lab
Dieses Codelab deckt die grundlegenden Abschnitte der Checkliste mit Anforderungen ab, um dein Spiel auf den Weg zu bringen und dein Unity-Spiel für Google Play Spiele auf dem PC vorzubereiten. Detailliertere Integrationen wie die Play Spiele-Anmeldung und die Play Integrity API werden nicht abgedeckt.
- Informationen zum Erstellen der x86-Architektur von Unity.
- Testen und Bereitstellen im Google Play Spiele-Emulator
- Hier erfahren Sie, wie Sie Ihre Benutzeroberfläche so anpassen, dass sie auf einem PC gut aussieht.
- Feststellen, ob im Google Play Spiele-Emulator ausgeführt wird, und das Spiel entsprechend anpassen
Voraussetzungen
- Installation von Unity 2020 mit Langzeitsupport (dieses Codelab wurde mit 2020.3.30f1 erstellt).
- Den Google Play Spiele-Emulator
2. Einrichten
Projekt öffnen oder erstellen
- Erstelle mit dem 2D-Plattformer-Mikrospiel ein neues Projekt oder öffne ein eigenes Projekt.
- Wählen Sie im Projekt File -> Build-Einstellungen und prüfen Sie, ob Sie die Voraussetzungen für die Entwicklung von Apps für Android erfüllen.
3. Google Play Spiele-Emulator vorbereiten
Laden Sie zuerst den Emulator herunter.
Nach der Installation sollte ein Android-Desktop in einem Fenster angezeigt werden:
Dies ist eine leistungsstarke Android-Umgebung mit vollem Funktionsumfang, die sich für die Spieleentwicklung eignet. Es sollte in Android Debug Bridge (ADB) als Gerät auf localhost angezeigt werden:
❯ adb devices List of devices attached localhost:6520 device
Sie benötigen eine aktuelle Version von adb, um den Emulator zu erkennen. Die mit Android Studio gebündelte Version funktioniert, aber die mit Unity gelieferte ADB ist möglicherweise nicht verfügbar. Im Emulator ist eine kompatible Version enthalten, die unter C:\Program Files\Google\Play Games Developer Emulator\current\emulator
verfügbar ist. Für eine optimale Entwicklung sollten Sie Android Studio installieren und zur Verwaltung Ihres Android SDK verwenden.
Wenn die Verbindung zwischen dem Emulator und ADB getrennt wird, verbinden Sie ihn mit der Befehlszeile neu:
adb connect localhost:6520
4. Unity für die Erstellung und Bereitstellung direkt im Emulator konfigurieren (optional)
Die mit Unity gelieferte ADB-Version ist möglicherweise nicht mit dem Emulator kompatibel. Um sicherzugehen, wählen Sie File (Datei) -> Build Settings (Build-Einstellungen) und überprüfen Sie das Dialogfeld Run Device (Gerät ausführen), um festzustellen, ob es aufgeführt ist.
Je nach Projekt, Build-Prozess und Erfahrungsniveau können Sie Unity entweder für die direkte Bereitstellung im Google Play Spiele-Emulator konfigurieren oder ein APK erstellen und manuell mit adb install
bereitstellen. Die manuelle Bereitstellung erfordert nur wenige Änderungen, kann jedoch den Iterationszyklus verlangsamen.
Stellen Sie die Bereitstellung in zwei Schritten direkt im Emulator bereit:
- Konfigurieren Sie Unity für die Verwendung eines anderen Unity SDK, idealerweise das von Android Studio installierte.
- Aktualisieren Sie die Build-Tools-Version, um einen Fehler in Unity zu umgehen.
Da die Version des Android SDK, das mit Unity geliefert wurde, den Emulator wahrscheinlich nicht erkennt, verwenden Sie Android Studio, um ein neueres SDK zu installieren.
- Öffnen Sie Android Studio und wählen Sie Bearbeiten -> Einstellungen -> Externe Tools.
- Deaktiviere
Android SDK Tools Installed with Unity
und gib den Pfad zur Android Studio-Installation an (normalerweiseAppData/Local/Android/sdk
). Lassen Sie die OptionAndroid NDK
unverändert.
Wenn Sie die verbundenen Geräte aktualisieren, sollte Google HPE device (localhost:6520)
im Build-Fenster angezeigt werden:
Je nach Status dieses Programmfehlers und Ihrer Unity-Version müssen Sie möglicherweise auch die Version Ihrer Build-Tools ändern. Dazu müssen Sie prüfen, ob Sie mainTemplate.gradle
und launcherTemplate.gradle
generieren.
- Öffnen Sie das Fenster Projekteinstellungen zu Player Settings und suchen Sie den Abschnitt
Publishing Settings
. - Scrollen Sie nach unten zu den Build-Optionen und klicken Sie das Kästchen „Custom Main Gradle Template“ (Benutzerdefinierte Haupt-Gradle-Vorlage) an. und „Custom Launcher Gradle Template“ (Benutzerdefinierte Launcher-Gradle-Vorlage), mit der beide Gradle-Dateien unter
Assets\Plugins\Android\
generiert werden.
- Ersetzen Sie eine beliebige Instanz des Strings
**BUILDTOOLS**
durch30.0.0
. In beiden Dateien sollte der Codeabschnitt jetzt wie folgt lauten:
android { compileSdkVersion **APIVERSION** buildToolsVersion '30.0.0'
5. Auf einem Chromebook bereitstellen (optional)
Mit einem ChromeOS-Gerät können Sie ohne Zugriff auf den Google Play Spiele-Emulator Spiele für Google Play Spiele entwickeln. Ähnlich wie bei Google Play Spiele auf dem PC sind auch Chromebooks mit Tastatur und Mäuse ausgestattet, haben große Bildschirme und sind in x86-Konfigurationen verfügbar. Wir verwenden das Unity-Plug-in Android Logcat auf dem Chromebook.
- Öffnen Sie den Paketmanager und suchen Sie unter
Unity Registry
nachAndroid Logcat
.
Außerdem müssen Sie Ihr Chromebook für die Android-Entwicklung konfigurieren. Aktivieren Sie zuerst Linux.
- Wählen Sie Einstellungen -> Entwickler -> Linux
Aktivieren Sie dann die ADB-Fehlerbehebung.
- Wählen Sie Einstellungen -> Entwickler -> Linux-Entwicklungsumgebung -> Android-Apps entwickeln -> Aktivieren Sie die ADB-Fehlerbehebung.
Außerdem benötigen Sie die IP-Adresse Ihres Chromebooks. Am einfachsten geht das,
- Klicken Sie auf das Symbol Netzwerkinformationen, um die IP-Adresse Ihres Chromebooks abzurufen.
- Wählen Sie Window -> Analyse -> Android Logcat, um das Android Logcat-Fenster zu öffnen.
- Öffnen Sie die Geräteliste. Wenn momentan keine Geräte verbunden sind, wird möglicherweise
No Device
angezeigt.
- Klicken Sie auf Weitere Verbindungsoptionen und geben Sie die IP-Adresse Ihres Chromebooks ein.
- Klicken Sie auf Verbinden. Es sollte das Fenster Success (Erfolgreich) angezeigt werden:
Ihr Chromebook wird jetzt in der Liste der ausgeführten Geräte von Unity angezeigt. Möglicherweise müssen Sie zuerst den Bildschirm aktualisieren:
Du kannst jetzt Spiele auf deinem Chromebook bereitstellen und sie auf PC-ähnlicher Hardware testen und entwickeln.
6. Test-Build bereitstellen
Für Google Play Spiele ist es erforderlich, dass Sie eine x86-Version Ihres Spiels bereitstellen. Das ist Teil davon, wie das Produkt seine Leistungs-Benchmarks auf Desktop-PCs erreicht. Alle LTS-Varianten von Unity können x86- und x86-64-kompatible Android-Builds (mit dem Label „Chrome OS“) generieren. Unity-Versionen 2018 und frühere Versionen können x86-Builds generieren. Um diese Architekturen freizuschalten, müssen Sie zuerst zum IL2CPP-Scripting-Backend wechseln, was Sie wahrscheinlich bereits in der Produktion für die Arm64-Unterstützung tun.
- Wählen Sie File -> Build Settings (Build-Einstellungen), um das Fenster mit den Build-Einstellungen zu öffnen. Klicken Sie dann auf Player Settings (Player-Einstellungen).
- Gehen Sie zum Abschnitt Weitere Einstellungen und setzen Sie
Scripting Backend
aufIL2CPP
.
Sie sollten auch die x86- oder x86-64-Unterstützung aktivieren. Für die Bereitstellung über die Google Play Spiele-Plattform muss nur x86 unterstützt werden. Wir empfehlen jedoch x86-64.
Die Version der Unity-Bundles aus der Frame Pacing-Bibliothek ist ebenfalls nicht mit Google Play Spiele kompatibel und führt dazu, dass Ihr Spiel beim Start abstürzt.
- Um die Frame Pacing im Fenster Player Settings zu deaktivieren, öffnen Sie den Abschnitt Resolution and Presentation und entfernen Sie das Häkchen bei Optimized Frame Pacing.
Jetzt können Sie loslegen!
- Öffnen Sie noch einmal das Fenster Build Settings (Build-Einstellungen) und klicken Sie auf Build and Run (Erstellen und ausführen). Ihr Spiel wird im Emulatorfenster angezeigt.
Wenn Sie Ihr Spiel nicht bereitstellen können, prüfen Sie, ob „Google HPE-Gerät (localhost:6520)“ angezeigt wird. unter „Run Device“ (Gerät ausführen) Liste. Wenn sie fehlt, vergewissern Sie sich, dass HPE_Dev ausgeführt wird und Sie den Android-Startbildschirm sehen können. Wenn es immer noch nicht in deiner Geräteliste angezeigt wird, führe adb connect localhost:6520
mit genau dem adb.exe
aus, den du gerade verwendest. Wenn Sie das Android Logcat Unity-Plug-in verwenden, wählen Sie Tools -> Öffnen Sie das Terminal, um ein Terminal für das Verzeichnis zu öffnen, das dieselbe adb.exe
von Unity verwendet.
Öffnen Sie das Terminal.“ hervorgehoben“ style="width: 624.00px" src="img/9101ce3c95fb1aa2.png" size="(max-width: 840px) 100vw, 856px">
7. Dein Game für den PC anpassen
Nehmen Sie nach Möglichkeit Änderungen an Ihrem Spiel vor, die auf plattformunabhängigen Messwerten oder dem Vorhandensein bestimmter Funktionen basieren. Beispielsweise kann ein Android-Spieler eine Maus und eine Tastatur anschließen oder einen Monitor anschließen. Wenn du also je nach Gerätekonfiguration das Steuerschema oder die HUD-Elemente änderst, kannst du Google Play Spiele auf dem PC auf allen unterstützten Plattformen nutzen.
Wenn es sinnvoll ist, die Logik abhängig davon zu ändern, ob sich der Spieler in Google Play Spiele oder ChromeOS befindet, hilft Ihnen dieses Script, dies zu erkennen, indem es nach der Systemfunktion HPE_EXPERIENCE
sucht:
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
}
PCs haben ein größeres Display als herkömmliche Android-Smartphones. Wenn möglich, empfehlen wir, dass das HUD nicht mehr als 20% des Bildschirms einnimmt. Da bei vielen Spielen für Mobilgeräte die Option „Mit Bildschirmgröße skalieren“ verwendet wird, sollte sie zu „Konstante physische Größe“ geändert werden. oder „Konstante Pixelgröße“ kann ein guter erster Schritt zur Erreichung dieses Ziels sein.
Sie können die Qualitätseinstellungen auch zur Laufzeit dynamisch mit dem Befehl QualitySettings.SetQualityLevel
festlegen, wenn Sie feststellen, dass die App in Google Play Spiele ausgeführt wird. Der Google Play Spiele-Emulator verwendet ANGLE, um native DirectX- oder Vulkan-Befehle über die OpenGL-Unity-Emissionen auszugeben. So erzielen Sie wahrscheinlich eine höhere Grafikqualität als dies mit Ihren Builds für mobile Spiele der Fall war.
8. Eingabebehandlung
Spiele, die bei Google Play Spiele ausgeliefert werden, sollten auf Maus und Tastatur ausgerichtet sein. Sie müssen planen, wie Sie mit Ihrem Spiel über Maus und Tastatur interagieren möchten. Nehmen Sie sich daher die Zeit, um das unitypackage Input SDK zu erwerben. Wenn Sie auf dieser Seite keinen Download finden, vergewissern Sie sich, dass Sie mit einem Konto in der Gruppe play-mp-libs angemeldet sind.
Zu Testzwecken enthalten viele Spiele grundlegende Maus- und Tastatursteuerelemente, die im Editor entwickelt werden können. Wenn möglich, sollten Sie diese auf einem ChromeOS-Gerät oder im Google Play Spiele-Emulator aktivieren.
Google Play Spiele und ChromeOS wandeln die Mauseingabe standardmäßig in eine simulierte Berührung um. Wenn Sie Input.GetTouch
und Input.touchCount
verwenden, funktioniert Ihr Spiel weiterhin wie erwartet. Wenn Sie die Multi-Touch-Eingabe verwenden, z. B. die Dual-Daumen-Steuerung oder das Zoomen durch Auseinander- und Zusammenziehen der Finger, müssen Sie die Aktion den Tastenbetätigungen zuordnen. Ordnen Sie In-Game-Aktionen außerdem Tastendrucken zu. Zum Beispiel können Sie das Inventar durch Drücken von i öffnen, mit der Esc-Taste das Dialogfeld schließen und mit der Eingabetaste In-Game-Nachrichten senden.
Das 2D-Plattformspiel (Microgame) nutzt die Pfeile, um sich zu bewegen, und die Weltraumbahn, um zu springen. Wenn Sie Ihr eigenes Spiel verwenden, achten Sie darauf, dass Sie für den nächsten Schritt Ihre bevorzugten Tastenbindungen haben.
9. SDK-Eingabeintegration
Nachdem Sie nun Ihre Maus und Ihre Tastatur eingerichtet haben, müssen Sie die Input SDK -Unterstützung hinzufügen. So können Spieler in einem praktischen Pop-over deine PC-Eingänge leichter finden:
- Nachdem Sie das SDK in Ihr Projekt importiert haben, erstellen Sie eine Datei mit dem Namen
InputMappingProviderBehaviour.cs
und fügen Sie den folgenden Inhalt hinzu:
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 { } }
- Fülle nun
ActionIds
mit der Liste der Aktionen aus, die du in deinem Spiel verwendest. Beim 2D-Plattformspiel sind die Aktionen „Links“, „Rechts“ und „Springen“:
private enum ActionIds { Left, Right, Jump }
- Erstellen Sie in
OnProvideInputMap
eineInputAction
für jede Aktion. Dazu benötigen Sie den Namen der Aktion, die Eingabe und dann die entsprechenden Maustasten oder Tastencodes. Für das Beispielspiel:
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 } } };
- Fassen Sie diese Eingabeaktionen dann in Gruppen zusammen.
Für das Mikrospiel gibt es nur eine Gruppe, aber ihr könnt beliebig viele Gruppen erstellen, damit eure Spieler die Aktionen finden, die sie brauchen. Fügen Sie OnProvideInputMap
Folgendes hinzu:
var movementInputGroup = new InputGroup { GroupLabel = "Movement", InputActions = new List<InputAction> { leftAction, rightAction, jumpAction } };
- Fügen Sie alle von Ihnen erstellten Eingabegruppen zur Eingabezuordnung hinzu. Ändern Sie die Rückgabeanweisung in
OnProvideInputMap
so:
return new InputMap { InputGroups = new List<InputGroup> { movementInputGroup }, MouseSettings = new MouseSettings { InvertMouseMovement = false, AllowMouseSensitivityAdjustment = false } };
- Fügen Sie zum Schluss das von Ihnen erstellte Skript zu Ihrem Spiel hinzu:
- Wenn Sie Ihr Spiel wieder bereitstellen, drücken Sie
Shift+Tab
, um das In-Game-Overlay zu öffnen.
- Klicken Sie auf Steuerelemente, um die von Ihnen konfigurierten Steuerelemente aufzurufen.
10. Eingebettete Webansichten entfernen
Entfernen Sie eingebettete Webansichten, um die Nutzerfreundlichkeit Ihrer Player zu verbessern. In der Regel werden eingebettete Webansichten zum Anzeigen von Elementen wie der Datenschutzerklärung oder den Nutzungsbedingungen verwendet. Obwohl diese in Google Play Spiele funktionieren, werden sie in einem eingebetteten mobilen" und nicht den bevorzugten Desktop-Browser des Spielers verwenden. Dies könnte bei PC-Spielern zu Verwirrung führen. Wenn Sie also in Unity Erweiterungen zur Darstellung eines eingebetteten Browsers verwenden, greifen Sie auf Application.OpenURL(url)
zurück.
11. Berechtigungen und Funktionen
Einige Android-Funktionen und -Berechtigungen werden in Google Play Spiele nicht unterstützt. Als Faustregel gilt: Beim Build Ihres PCs darf kein Berechtigungsdialogfeld eingeblendet werden. Es empfiehlt sich, jetzt, da Ihr Build fertig ist, eine typische Neuinstallation durchzuführen und alle angezeigten Dialogfelder zu notieren, die Sie Ihrer Aufgabe hinzufügen. zum Einreichen deines Spiels aufgelistet.
Einige Unity-Spiele fordern Berechtigungen über die Android.Permission API an. Sie sollten diese in if (GoogleDeviceUtilities.IsGooglePlayGames)
-Prüfungen einschließen und gegebenenfalls direkt zu Ihrer Fehlerlogik wechseln.
12. Desktop-Optimierungen
Google Play Spiele unterscheidet sich von einem herkömmlichen Android-Smartphone ein wenig. Vielleicht möchten Sie Ihr Spiel entsprechend konfigurieren.
Für die Texturkomprimierung zu DXT wechseln Gängige Android-Texturformate wie ETC werden zur Laufzeit im Arbeitsspeicher decodiert, wenn sie nicht direkt an die GPU eines Players übergeben werden können. ASTC bietet die beste Desktop-Kompatibilität, auch wenn Sie ein GPU-Profiling-Tool für den Desktop verwenden müssen, um das erwartete Verhalten Ihres Spiels zu überprüfen.
Da Sie jetzt eine Desktop-GPU ausführen, sollten Sie auch die Grafikqualität verbessern. Du kannst sie direkt in den Projekteinstellungen unter Qualität anpassen.
13. Glückwunsch
Jetzt hast du alles, um mit der Arbeit an deinem Spiel für Google Play Spiele zu beginnen. Sie können mit dem Testen und Iterieren in Ihrem Spiel beginnen. Denk daran: Du kannst zwar deine Codebasis beibehalten, aber dein Spiel so anpassen, dass es sich wie ein natives PC-Spiel anfühlt.
Was liegt als Nächstes an?
Für die Auslieferung eines Spiels bei Google Play Spiele ist noch weitere Arbeit geplant:
- Aktuelle Informationen finden Sie in der Kurzanleitung.
- Führen Sie ein Upgrade auf die Anmeldung für Play-Spieldienste (Version 2) durch, um einen Spieler beim Start automatisch anzumelden und die Kontinuitätsanforderungen zu erfüllen.
- Implementiere die Play Integrity API, damit dein PC genauso sicher ist wie dein Mobilgerät.
Schließlich hilft ein Großteil der Arbeit, die Sie bis jetzt zur Unterstützung von Google Play Spiele geleistet haben, auch für die Bereitstellung von Apps auf ChromeOS. Sie sollten daher überlegen, diese Plattform zusammen mit dem PC zu unterstützen.