Apps
Unity Performance Reports
08. Juni 2017
Fangen wir mal mit der traurigen Wahrheit an: Es ist egal wie gut deine App oder dein Spiel programmiert sind, es ist wahrscheinlich, dass sie irgendwann einmal trotzdem crashen.
Wenn das passiert, ist die Nachricht: „Die App ist gecrashed! Bitte beheben!!“ von einem wütenden Kunden auch nicht gerade hilfreich. Noch schlimmer ist nur, wenn du gar nicht darüber benachrichtigt wirst und dich irgendwann fragst, warum deine App Store Bewertungen sinken.
Es wichtig, ein Crash Reporting System in deine Unity App zu integrieren. Ebenfalls relevant sind Analytics. Um deine Nutzer und ihr Verhalten bei der Verwendung deiner App oder deines Spiels besser kennenzulernen. Damit du dein Produkt verbessern und genau an deine Nutzergruppe anpassen kannst.
Native Unity Lösungen
Seit Version 5.0 hat Unity dieselben Grundfunktionen in der Gratisversion und in der bezahlten Version (Plus/Pro). Geld machen sie stattdessen eher mit dem Angebot von, „Unity Services“. Dabei handelt es sich um eine Sammlung verschiedener nützlicher Funktionen, die du zusätzlich zu den standardmäßigen Unity Werkzeugen nutzen kannst. Inkludiert sind Werbung (Ads), In-App Purchasing, Multiplayer, Analytics und Performance Reporting (also crash reports). Und mit einem genaueren Blick auf Unity Performance fangen wir auch gleich an.
Unity Performance Reporting
Unity Performance Reporting ist Unitys integrierte Lösung für Fehler- und Crash Reports. Es gibt sie seit Version 5.0 und seit Version 5.4 ist sie fest in Unity integriert. Wie vorhin schon kurz erwähnt ist dieses Feature Teil der Unity Services, die für Unity Plus und Pro Nutzer verfügbar sind.
Das Einrichten und die Nutzung der Performance Reports is ziemlich einfach: zuerst musst du das Service für dein gewähltes Projekt im Services Dashboard deiner UnityID, dem zentralen Platz für die Verwaltung all deiner Unity Services, aktivieren (“Enable Game Performance). Dann öffne dein Unity Projekt und gehe zu Window -> Services (Cmd + 0 auf Mac oder Strg + 0 unter Windows), logge dich mit deiner UnityID ein und aktiviere „Performance Reporting“.
Falls du eine ältere Unity Version als 5.4 nutzt, musst du jetzt noch dieses kleine Code Snippet zu jedem Script hinzufügen, das bei App bzw. Spielstart aufgerufen wird:
using UnityEngine.Crashlog;
Start ()
{
CrashReporting.Init(“Insert project UPID here”);
}
“UPID” steht hier natürlich für die Unity Projekt ID. So, nach diesen wenigen Schritten erhältst du auch schon Performance Reports in deinem Services Dashboard. Diese Reports inkludieren Informationen zu Crashes, geworfene Unity Exceptions und sogar Stack Traces!
Also zusammenfassend: es ist sehr einfach aufzusetzen und inkludiert alles was du dir als Entwickler in Bezug auf Crashes und Exceptions wünschen kannst. Allerdings brauchst du eben eine Unity Plus oder Pro Lizenz um es zu nutzen. Nachdem das Service außerdem an dein System Dashboard sowie deine UnityID gebunden ist, könnte das auch ein Problem für dich darstellen, falls du Auftragsarbeiten machst.
Was auch erwähnenswert ist: Unity arbeitet gerade an der Crashreports API, die dir Zugriff zu den aktuellsten Crash Reports deiner App gibt – damit kannst du dann machen was du möchtest (an ein Server Backend schicken zum Beispiel). Die Crashreports API gibt es seit Unity 5.4.1, sie funktioniert momentan aber leider nur auf iOS – Android Support coming soon™.
Externe Unity Crash Report Tools
Natürlich haben sich mit der Zeit auch einige Alternativen zu den Crash Report Services von Unity entwickelt. Hier ist ein kurzer Überblick über einige der verfügbaren Lösungen:
Am besten finde ich Raygun bzw. das von ihnen fix und fertig zur Verfügung gestellte Unity Plugin Raygun4Unity. Raygun bietet Fehler-Monitoring in Echtzeit sowie Crash Reporting für Unity. Wie man in der documentation sieht, benötigt man für das Setup etwas mehr Code als bei den Unity Performance Reports und es ist außerdem wohl etwas teurer. Allerdings überzeugt es durch den großen Umfang des Monitorings.
Natürlich halt auch der Unity Asset Store einige Assets für diese Aufgabe bereit:
Reporter (Asset Store Link, 19$) verspricht eine gute Integration und ein entsprechendes Backend Service für Nutzerfeedback und Crash Reports. Vorallem soll dieses Tool auch einen Screenshot bzw. ein Screen Capture vom Moment des Fehlers oder Crashes zu liefern, was ein ziemlich einzigartiges Feature unter den hier verglichenen Produkten darstellt. Es können auch mehrere Emailadressen für den Versand der Reports und Screensots angegeben werden. Mit 2 von 5 möglichen Sternen sind die Bewertungen leider nicht besonders gut. Allerdings hat es seit den letzten Textbewertungen bereits ein Update gegeben.
Die andere im Asset Store verfügbare Lösung, ist der Crash Reporter (Asset Store Link, 10$). Dieser verspricht den Versand von Stack Trackes (inklusive der Zeile in der der Crash passiert ist) per Email an eine von dir angegebene Adresse. Dir muss allerdings ein Webspace oder Ähnliches zur Verfügung stehen, auf dem du das im Asset inkludierte PHP File hosten kannst. Mit 4 von 5 Sternen sind die Bewertungen ziemlich gut – es gibt bisher allerdings noch keine Textbewertungen.
Zusammenfassung von Unity Performance Reports
Du sollte die Wichtigkeit eines guten in deine App oder dein Spiel integrierten Crash Reporting Frameworks niemals unterschätzen. Zum Glück gibt es einige gute Lösungen für Unity zur Auswahl. Die die mir am öftesten über den Weg laufen habe ich hier zusammengefasst. Während bei der Auswahl eines der Tools viel von deiner persönlichen Präferenz abhängt, ist es grundsätzlich einfach wichtig, überhaupt ein Service zu verwenden, das Fehler und Crashes überwacht und analysiert. Und natürlich ist im Anschluss das Beheben der Gründe für die Crashes ebenfalls ziemlich wichtig! 😉