Erste Schritte mit Unity und Google Play Spiele für PC

1. Einführung

Google Play Spiele-Logo

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

2. Einrichten

Projekt öffnen oder erstellen

  1. Erstelle mit dem 2D-Plattformer-Mikrospiel ein neues Projekt oder öffne ein eigenes Projekt.

Die Einheit

  1. 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.

Screenshot der Unity-Konsole

3. Google Play Spiele-Emulator vorbereiten

Laden Sie zuerst den Emulator herunter.

Nach der Installation sollte ein Android-Desktop in einem Fenster angezeigt werden:

Screenshot des Fensters im Google Play Spiele-Emulator Der Android-Startbildschirm ist sichtbar.

Dies ist eine leistungsstarke Android-Umgebung mit vollem Funktionsumfang, die sich für die Spieleentwicklung eignet. Sie 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.

Gerät ausführen in der

Je nach Projekt, Erstellungsprozess und Komfort 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:

  1. Konfigurieren Sie Unity für die Verwendung eines anderen Unity SDK, idealerweise das von Android Studio installierte.
  2. 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.

  1. Öffnen Sie Android Studio und wählen Sie Bearbeiten -> Einstellungen -> Externe Tools.
  2. Deaktiviere Android SDK Tools Installed with Unity und gib den Pfad zur Android Studio-Installation an (normalerweise AppData/Local/Android/sdk). Lassen Sie die Option Android NDK unverändert.

Screenshot von

Wenn Sie die verbundenen Geräte aktualisieren, sollte Google HPE device (localhost:6520) im Build-Fenster angezeigt werden:

Screenshot des

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.

  1. Öffnen Sie das Fenster Projekteinstellungen zu Player Settings und suchen Sie den Abschnitt Publishing Settings.
  2. 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.

Screenshot des

  1. Ersetzen Sie eine beliebige Instanz des Strings **BUILDTOOLS** durch 30.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.

  1. Öffnen Sie den Paketmanager und suchen Sie unter Unity Registry nach Android Logcat.

Paketmanager-Fenster mit

Außerdem müssen Sie Ihr Chromebook für die Android-Entwicklung konfigurieren. Aktivieren Sie zuerst Linux.

  1. Wählen Sie Einstellungen -> Entwickler -> Linux

Animiertes Bild, das zeigt, wie die Linux-Unterstützung aktiviert wird.  Im Fenster „Einstellungen“ ist die Option „Entwickler“ ausgewählt. Dann

Aktivieren Sie dann die ADB-Fehlerbehebung.

  1. Wählen Sie Einstellungen -> Entwickler -> Linux-Entwicklungsumgebung -> Android-Apps entwickeln -> Aktivieren Sie die ADB-Fehlerbehebung.

Die ADB-Fehlerbehebung wird im Entwicklermenü aktiviert.

Außerdem benötigen Sie die IP-Adresse Ihres Chromebooks. Am einfachsten geht das,

  1. Klicken Sie auf das Symbol Netzwerkinformationen, um die IP-Adresse Ihres Chromebooks abzurufen.

Screenshot des auf einem Chromebook geöffneten Netzwerkfensters

Ein Klick auf die Schaltfläche „Netzwerkinformationen“ mit der IP-Adresse wird angezeigt.

  1. Wählen Sie Window -> Analyse -> Android Logcat, um das Android Logcat-Fenster zu öffnen.

Fenster>Analyse in Unity öffnen mit

  1. Öffnen Sie die Geräteliste. Wenn momentan keine Geräte verbunden sind, wird möglicherweise No Device angezeigt.

Android Logcat-Fenster wird angezeigt, Drop-down-Menü für Gerät ausgewählt.

  1. Klicken Sie auf Weitere Verbindungsoptionen und geben Sie die IP-Adresse Ihres Chromebooks ein.

Das Fenster „Weitere Verbindungen“ ist geöffnet. Eine IP-Adresse wird eingegeben.

  1. Klicken Sie auf Verbinden. Es sollte das Fenster Success (Erfolgreich) angezeigt werden:

Ein Dialogfeld mit der Meldung

Ihr Chromebook wird jetzt in der Liste der ausgeführten Geräte von Unity angezeigt. Möglicherweise müssen Sie zuerst den Bildschirm aktualisieren:

Die Einheit

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.

  1. 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).

Screenshot des

  1. Gehen Sie zum Abschnitt Weitere Einstellungen und setzen Sie Scripting Backend auf IL2CPP.

Screenshot des

Sie sollten auch die x86- oder x86-64-Unterstützung aktivieren. Für den Versand über die Google Play Spiele-Plattform muss nur x86 unterstützt werden. Wir empfehlen jedoch x86-64.

Screenshot des Abschnitts „Konfiguration“ der Player-Einstellungen

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.

  1. 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.

Screenshot

Jetzt können Sie loslegen!

  1. Ö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.

Screenshot des Google Play Spiele-Emulators mit dem

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.

Screenshot des Öffnen Sie das Terminal.“ hervorgehoben“ style="width: 624.00px" src="img/9101ce3c95fb1aa2.png" size="(max-width: 840px) 100vw, 856px">

7. Passe dein Game für den PC an

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 ein herkömmliches Android-Smartphone. 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.

Screenshot des

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 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:

  1. 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
    {
    }
}
  1. 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
}
  1. Erstellen Sie in OnProvideInputMap eine InputAction 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
        }
    }
};
  1. 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
    }
};
  1. 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
    }
};
  1. Fügen Sie zum Schluss das von Ihnen erstellte Skript zu Ihrem Spiel hinzu:

Screenshot eines Knotens mit dem Namen

  1. Wenn Sie Ihr Spiel wieder bereitstellen, drücken Sie Shift+Tab, um das In-Game-Overlay zu öffnen.

Screenshot des

  1. Klicken Sie auf Steuerelemente, um die von Ihnen konfigurierten Steuerelemente aufzurufen.

Screenshot des

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.

Die Einheit

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.

Screenshot des

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:

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.