Android Performance Tuner (Unity)

In dieser Anleitung wird beschrieben, wie Sie ein Unity-Plug-in verwenden, um Daten zur Frame-Zeit aus Unity 2017.4 oder höher aufzuzeichnen und hochzuladen.

Informationen zu Spiel-Engines, die C oder C++ verwenden, finden Sie im Leitfaden für native Spiel-Engines.

Hintergrund

Ein wichtiger Bestandteil des Spielerlebnisses ist die Rendering-Leistung. Die Rendering-Leistung ist das Ergebnis der folgenden beiden Eingaben:

  • Framerate: Wie oft ein Frame gezeichnet wird.
  • Einstellungen für die Grafikqualität: Detaillierungsgrad, mit dem ein Frame dargestellt wird, einschließlich der Simulationsqualität und der Grafiken.

Für Spiele wird eine gute Rendering-Leistung so definiert:

  • Eine stabile, konsistente Framerate (d. h. der Prozentsatz der Frames, die mit der gewünschten Häufigkeit gerendert werden).
  • Rendern von Frames mit der höchstmöglichen Frequenz bei gleichzeitiger Aufrechterhaltung der Stabilität, in der Regel 30 oder 60 FPS, je nach Art des Spiels.
  • Maximierung des Detaillierungsgrads für einen Nutzer in Abhängigkeit von Bildschirmgröße und ‑dichte bei gleichzeitiger Beibehaltung einer gewünschten, stabilen Framerate.

Die Android Frame Pacing-Bibliothek begrenzt einen Großteil der Schwankungen bei den Frame-Zeiten und sorgt so für eine stabile Frame-Rate bei Spielen. Die verbleibende Variation der Frame-Zeiten ist auf den Detaillierungsgrad zurückzuführen, der während bestimmter Szenen im Spiel angezeigt wird, sowie auf die Grafikleistung des Geräts. Mit dem Android Performance Tuner können Sie Zeiträume während des Gameplays ermitteln, in denen die Frame Time langsamer oder schneller als Ihr Ziel ist, und diese Probleme und Optimierungsmöglichkeiten mit Folgendem in Verbindung bringen:

  • Spezifische Qualitätseinstellungen
  • Bestimmte Szenen in Ihrem Spiel
  • Bestimmte Gerätemodelle oder Gerätespezifikationen

Daten aufzeichnen und hochladen

Die Tuning Fork-Bibliothek setzt darauf, dass eine ihrer Tick-Funktionen in jedem Frame von der Android Frame Pacing-Bibliothek (oder von der Unity-Engine für ältere Unity-Versionen, in denen die Frame Pacing-Bibliothek nicht vorhanden ist) aufgerufen wird. In der Bibliothek werden diese Informationen zu Ticks in Histogrammen zusammengefasst, die dann regelmäßig über einen HTTP-Endpunkt zu Google Play hochgeladen werden. Jeder Tick wird mit einem Instrumentenschlüssel und einer Annotation aufgezeichnet. Sie definieren Annotationen mit dem Unity-Plug-in.

Instrumentenschlüssel

Ein Instrumentschlüssel gibt an, woher der Tick im Frame stammt. Er ist eine Ganzzahl, die an jeden Tick-Funktionsaufruf übergeben werden muss. Das Unity-Plug-in erledigt das automatisch. Wenn die Option „Optimized Frame Pacing“ in den Unity-Einstellungen für Ihr Spiel aktiviert ist (verfügbar in Unity-Version 2019.3.14 oder höher), verwendet Android Performance Tuner Informationen aus der Android Frame Pacing-Bibliothek, um erweiterte Messwerte zu melden.

Anmerkungen

Anmerkungen enthalten Kontextinformationen dazu, was in Ihrem Spiel passiert, wenn ein Tick aufgezeichnet wird. Eine Anmerkung kann beispielsweise Folgendes identifizieren:

  • Das aktuelle Spiellevel
  • Eine bestimmte Szene wird geladen.
  • Auf dem Bildschirm ist ein „Big Boss“ zu sehen.
  • Alle anderen relevanten Informationen zum Spielstatus

Anmerkungen werden in einem Dialogfeld definiert, das vom Unity-Plug-in bereitgestellt wird.

Intern verwendet die Tuning Fork-Bibliothek das Protocol Buffer-Format von Google zum Speichern von Anmerkungen und Fidelitätsparametern. Es handelt sich um ein wohldefiniertes, mehrsprachiges Protokoll für erweiterbare, strukturierte Daten. Weitere Informationen finden Sie in der Protocol Buffers-Dokumentation.

Parameter zur Grafikqualität

Die Parameter zur Grafikqualität beeinflussen die Leistung und die Grafikqualität Ihres Spiels, z. B. den Detaillierungsgrad des Gitters, die Texturauflösung und die Antialiasing-Methode. Wie Anmerkungen werden auch Treueparameter in einem Dialogfeld definiert, das vom Unity-Plug-in bereitgestellt wird.

Arbeitsspeicher- und CPU-Overhead

Der gesamte von der Tuning Fork-Bibliothek verwendete Arbeitsspeicher wird bei der Initialisierung zugewiesen, um Überraschungen während des Spiels zu vermeiden. Die Größe der Daten hängt von der Anzahl der Instrumentschlüssel, der Anzahl der möglichen Anmerkungen und der Anzahl der Buckets in jedem Histogramm ab. Sie ist ein Vielfaches dieser Werte, multipliziert mit vier Byte pro Bucket. Außerdem gibt es zwei Kopien aller Histogramme, damit sie im Double-Buffer-Verfahren übermittelt werden können.

Die Übermittlung erfolgt in einem separaten Thread und blockiert keine Tick-Aufrufe. Wenn keine Upload-Verbindung verfügbar ist, wird die Einreichung für den späteren Upload in die Warteschlange gestellt.

Der Aufruf einer Tick-Funktion verursacht nur geringen Verarbeitungsaufwand: Es wird lediglich ein Index in das Array der Histogramm-Buckets berechnet und ein ganzzahliger Zähler inkrementiert.

Webanfragen

Die Bibliothek sendet zwei Arten von Anfragen an den Serverendpunkt:

  • Eine generateTuningParameters-Anfrage bei der Initialisierung
  • Während des Spiels wird regelmäßig eine uploadTelemetry-Anfrage gesendet, um Daten an den Server zu senden.

Offline-Player

Wenn bei der Initialisierung keine Verbindung verfügbar ist, wird die Anfrage mehrmals mit einer zunehmenden Backoff-Zeit wiederholt. Wenn beim Hochladen keine Verbindung besteht, wird der Upload im Cache gespeichert. Uploads werden als Dateien im temporären Speicher gespeichert.

Voraussetzungen

Wenn Sie das Plug-in in Ihrem Spiel verwenden möchten, benötigen Sie eine unterstützte Version von Unity:

  • Unity-Version 2017.4 oder höher und .NET-Version 4.6
  • Für die Verwendung von APK-Erweiterungsdateien ist Unity 2018.2 erforderlich
  • Für verbesserte Frame-Pacing- und GPU-Messungen ist Unity-Version 2019.3.14 oder höher erforderlich.
  • Für die Unterstützung von Addressables-Szenen sind Unity 2019.3 oder höher und Addressables-Paket 1.19.4 oder höher erforderlich.

Android Performance Tuner in Unity einbinden

Informationen zum Einbinden des Android Performance Tuner in Unity finden Sie unter API aktivieren.