2K reduziert die ANR-Rate mit dem Android Game Development Kit um 35 %

Hintergrund

Cat Daddy Games ist ein zu 100 % im Besitz von 2K befindliches Studio mit Sitz in Kirkland, Washington, und der Entwickler von NBA 2K Mobile. Das Team wollte die allgemeine Qualität und Stabilität seiner Spiele verbessern, insbesondere durch die Reduzierung von ANR-Fehlern (App antwortet nicht). ANRs treten auf, wenn der UI-Thread einer Android-App zu lange blockiert ist. In diesem Fall kann der Haupt-Thread der App, der für die Aktualisierung der Benutzeroberfläche verantwortlich ist, keine Nutzereingabeereignisse zeichnen oder verarbeiten. Das führt zu Frustration bei den Nutzern. Wenn die App im Vordergrund ausgeführt wird, wird vom System ein Dialogfeld angezeigt, über das der Nutzer die App beenden kann.

Vorgehensweise

Die Reduzierung von ANRs hat für Cat Daddy eine hohe Priorität. Das QA-Team arbeitete unermüdlich und konnte ein häufiges ANR-Muster feststellen: Wenn die App pausiert und dann schnell fortgesetzt wurde, konnte eine große Menge an Toucheingaben zu einem ANR führen. Eine weitere Untersuchung mit Firebase Crashlytics ergab, dass diese ANR vom Typ „android.os.MessageQueue.nativePollOnce“ war, der häufigste ANR-Typ für NBA 2K Mobile.

Cat Daddy erkannte auch, dass diese Art von ANRs durch die verbesserte Eingabebehandlung in GameActivity vermieden werden könnte. Daher entschied sich das Team, zu GameActivity zu wechseln.

GameActivity ist eine Komponente des Android Game Development Kits, das Android-Spielen bei der Verarbeitung von App-Zyklusbefehlen, Eingabeereignissen und Texteingaben im C/C++-Code der Anwendung helfen soll. GameActivity bietet im Vergleich zu NativeActivity eine Reihe von spielspezifischen Verbesserungen, z. B. Fragment, das Rendern in eine SurfaceView und andere Unterstützung für gängige Bibliotheken im Zusammenhang mit der Spieleentwicklung.

GameActivity verwendet außerdem einen doppelten Puffer im Eingabepuffer, sodass das Spiel diese Situation mit hohem Eingabevolumen besser bewältigen kann.

Ergebnisse

Durch die Implementierung von GameActivity konnte Cat Daddy die Eingabebehandlung des Spiels erheblich verbessern, was zu einer Reduzierung der ANR-Fehler um 35% führte. Dadurch wurde die Nutzerfreundlichkeit verbessert und das Gameplay stabiler.

Da GameActivity von FragmentActivity abgeleitet ist, konnte CatDaddy außerdem EmbeddedWebView und EmbeddedVideoView einbinden, die für einige der beliebtesten Integrationen von sozialen Spielen erforderlich waren.

Erste Schritte

Mit GameActivity und dem Rest des Android Game Development Kits können Sie Ihr eigenes Spielerlebnis verbessern.