Leistungsprofilerstellung

Die Leistungsprofilierung und -optimierung ist eine komplexe Aufgabe, die sich eher wie eine Kunst als eine Wissenschaft anfühlen kann. Die vielen beweglichen Teile, die in einem Spiel perfekt synchronisiert werden müssen, in Kombination mit der Komplexität einer bestimmten Szene können es schwierig machen, Probleme zu verstehen und zu isolieren. Viele Tools für ChromeOS sind für ARM-Chipsätze konzipiert. Hier sind einige Tipps, wie du den Prozess beschleunigen kannst.

Wenn Sie die Leistung Ihres Spiels unter ChromeOS optimieren, sollten Sie Folgendes beachten: Die zugrunde liegenden Leistungsprobleme sind auf allen Geräten gleich. Verbesserungen wirken sich also auf die Leistung und Akkulaufzeit aller Nutzer aus. Bei ChromeOS, das tendenziell für größere Displays und Desktop-Eingabegeräte entwickelt wird, können bestimmte Probleme leichter auftreten. Ein ineffizienter Algorithmus zum Laden von Texturen funktioniert beispielsweise auf hochwertigen Mobilgeräten möglicherweise einwandfrei, kann aber auf einem Chromebook mit einem 4K-Display nicht mithalten. Durch die Verbesserung des Algorithmus wird das Spiel auf allen Geräten verbessert.

Wenn Sie noch nicht mit dem Profiling vertraut sind, empfiehlt sich folgender allgemeiner Ansatz:

  1. Prüfen Sie, ob die Leistung durch Folgendes begrenzt wird:
    • CPU
    • GPU
    • Sonstiges: Eingabe/Festplatte/Netzwerk
  2. Versuchen Sie, die Hauptursache zu isolieren.
  3. Optimierung versuchen
  4. Wiederholen

In den meisten Fällen sind Spiele entweder „CPU-gebunden“ oder „GPU-gebunden“. Versuche mithilfe der Profiling-Tipps und ‑Tools unten zu ermitteln, wo das System in jedem Frame „seine Zeit verbringt“. Wenn es beispielsweise lange dauert, bis die Eckpunkte berechnet und geladen werden, bevor die GPU mit dem Rendern beginnt, ist Ihr Spiel möglicherweise CPU-gebunden. Wenn Sie jedoch eine große Anzahl detaillierter, GPU-basierter Filter verwenden, ist Ihr Spiel wahrscheinlich GPU-gebunden. Viele Smartphones und ChromeOS-Geräte haben keine separaten Grafikkarten. Bei einem Desktopspiel, bei dem davon ausgegangen wird, dass GPU-Filter schnell sind, kann es bei integrierten GPUs zu lange dauern, bis jede Szene gerendert wird.

Weitere Informationen zur Profilerstellung finden Sie im Leitfaden von ARM zum Optimierungsprozess.

Tools

Es ist zwar durchaus möglich, Engpässe selbst zu ermitteln, aber mit den richtigen Tools lässt sich die Leistung Ihres Spiels leichter analysieren. Außerdem können Sie so sicher sein, dass Sie sich auf die richtigen Aspekte konzentrieren. Es gibt viele Tools, aber hier sind einige unserer bevorzugten Programme.

Android Studio Profiler

Am einfachsten ist das Profiling einer Android-App mit dem integrierten Android Studio Profiler. Wählen Sie in Android Studio anstelle von „Ausführen“ einfach „Profil“ aus, um Ihre App auszuführen und Echtzeitinformationen zur CPU-, Arbeitsspeicher- und Netzwerknutzung zu erhalten. Einfache CPU-Traces können eine schnelle Möglichkeit sein, Codebereiche zu isolieren, die untersucht werden sollen.

Dieses Tool bietet keinen echten Einblick in die GPU-Nutzung und in das, was zwischen den einzelnen Frame-Synchronisierungen passiert. Es ist zwar ein nützliches Tool, reicht aber wahrscheinlich nicht aus, um die Leistung Ihres Spiels zu optimieren.

Snapdragon Profiler

Da sich Ihr Spiel auf allen Geräten gleich verhält, können Sie detaillierte Leistungsdaten am besten mit dem Snapdragon Profiler auf einem ARM-Smartphone mit Qualcomm-Prozessor abrufen. Obwohl Sie kein direktes Profiling auf einem ChromeOS-Gerät durchführen, erhalten Sie so Informationen darüber, wo Ihr Spiel die meiste Zeit pro Frame verbringt. Außerdem können Sie sehen, welche GPU-Aufrufe verwendet werden.

Wenn Sie beispielsweise feststellen, dass ein Großteil der Zeit für Ihre anisotropen GPU-Filter aufgewendet wird und diese die Arbeit pro Frame dominieren, können Sie durch Ändern dieser Einstellung wahrscheinlich eine erhebliche Leistungssteigerung erzielen.

Wenn die GPU-Zeiten kurz und regelmäßig sind, die CPU-Zeiten jedoch dominieren und dazu führen, dass die Frame-Synchronisierung nicht erreicht wird, sollten Sie sich Ihre Algorithmen zum Laden von Texturen und zur Frame-Vorbereitung ansehen.

Weitere Informationen finden Sie in der offiziellen Dokumentation zur Verwendung.

ARM Mobile Studio

Ein weiteres nützliches ARM-Geräteprofiler-Tool ist ARM Mobile Studio. Einige Entwickler bevorzugen es möglicherweise gegenüber dem Snapdragon Profiler, aber es kann auf ähnliche Weise verwendet werden. Offizielle Dokumentation zur Verwendung

Android GPU-Prüfer

Der Android GPU Inspector ist ein neues Tool von Google, das speziell entwickelt wurde, um Ihnen dabei zu helfen, die bestmögliche Leistung aus Ihrem Spiel mit OpenGL und Vulkan herauszuholen. Die Funktion befindet sich derzeit in der Entwicklervorschau und die Einrichtung kann etwas dauern. Sie funktioniert derzeit nur auf wenigen Geräten. Es wird voraussichtlich eines der wichtigsten Tools für das Grafik-Profiling in der Zukunft sein. Offizielle Dokumentation

ARC-Übersichtstracing

Es gibt auch ein allgemeineres Tool namens „ARC Overview Tracing“, das ähnlich wie das oben beschriebene Tool „ARC Graphics Tracing“ funktioniert. Dieser Tracer liefert allgemeine Messwerte zur Leistung einer App und von ChromeOS. Sie sehen dann die FPS der App und von Chrome selbst sowie die CPU- und GPU-Auslastung, den Stromverbrauch und mehr. Sie können das Tool mehrmals ausführen. Die Grafiken für die einzelnen Ausführungen werden dann mit unterschiedlichen Farben übereinander dargestellt. Jedes Tracing-Modell wird in Ihrem Downloadordner gespeichert und kann für zukünftige Vergleiche wieder importiert werden. Für allgemeine Systemdiagnosen von Apps ist das ARC Overview Tracing ein guter Ausgangspunkt.

Rufen Sie chrome://arc-overview-tracing im Browser unter ChromeOS auf, um auf dieses Tool zuzugreifen.

Nächste Schritte

Vielleicht haben Sie einige Engpässe gefunden, wissen aber nicht genau, was Sie dagegen tun können. Oder Sie haben sie gefunden und behoben, wissen aber nicht, wie es weitergehen soll. Unten haben wir eine Liste mit allgemeinen Android- und enginespezifischen Tipps und Ressourcen für Sie zusammengestellt.

Allgemeine Tipps

Im Android-Entwicklerportal finden Sie einige nützliche Tipps zur Leistungssteigerung Ihrer Anwendung. Dort finden Sie Informationen zu Ladezeiten, zur Nutzung von Multithreading und zur Vermeidung von Eingabeverzögerungen.

Denken Sie daran, früh und oft zu profilieren, insbesondere wenn Sie auf weniger leistungsstarke Geräte abzielen oder die Grenzen der High-End-Architektur ausreizen. Wenn Sie die Leistungsstatistiken Ihrer App im Blick behalten, können Sie herausfinden, welche Änderungen die Framerate gesenkt haben und welche dazu beitragen, die von Ihnen angestrebte flüssige Darstellung aufrechtzuerhalten.

Unity-Engine

Zusätzlich zur allgemeinen Android-Dokumentation bietet Unity ChromeOS-spezifische Dokumentation, die Ihnen dabei helfen soll, mit der Engine eine leistungsstarke ChromeOS-Anwendung zu erstellen. In der ChromeOS-Dokumentation finden Sie Informationen zu den Themen Erste Schritte, Eingabe, Fehlerbehebung und Entwicklung, einschließlich Informationen zum Erstellen von x86-Builds. Informationen zur Leistung finden Sie unter Optimierung verstehen und im Kurs zu Leistung und Optimierung.

Lesen Sie den ARM-Leitfaden zum Profilieren und Optimieren von Unity-Spielen und die zugehörigen Best Practices. In dieser Anleitung wird beschrieben, wie Sie ein Beispielspiel in Unity mit dem Streamline-Tool profilieren, das Teil von ARM Mobile Studio ist.

Unreal Engine

Unreal hat eigene Leistungsrichtlinien und Tipps und Tricks verfasst, in denen Sie erfahren, wie Sie viele der Optionen und Einstellungen der Engine optimal nutzen können. Hier finden Sie unter anderem Tipps zum Detaillierungsgrad, dazu, wie Sie die Beleuchtung optimal nutzen, sowie Schritt-für-Schritt-Anleitungen zu Materialqualitätseinstellungen und Shadern.

Weitere grafikbasierte Optimierungen finden Sie in der Anleitung von ARM zur Optimierung von mobilen Spielen. Allgemeine Optimierungstipps sowie Unreal-spezifische Grafikanforderungen finden Sie hier.