2K zmniejsza częstotliwość błędów ANR o 35% dzięki pakietowi Android Game Development Kit

Tło

Cat Daddy Games to w 100% należące do 2K studio z Kirkland w stanie Waszyngton, które jest twórcą gry NBA 2K Mobile. Zespół chciał poprawić ogólną jakość i stabilność gier, w szczególności poprzez zmniejszenie liczby błędów typu „Aplikacja nie odpowiada”. Błędy ANR występują, gdy wątek interfejsu aplikacji na Androida jest zablokowany przez zbyt długi czas. W takim przypadku wątek główny aplikacji, który odpowiada za aktualizowanie interfejsu użytkownika, nie może rysować ani przetwarzać zdarzeń danych wejściowych użytkownika, co może powodować frustrację użytkownika. Jeśli aplikacja działa na pierwszym planie, system wyświetla okno, które umożliwia użytkownikowi przymusowe zamknięcie aplikacji.

Rozwiązanie

Zmniejszenie liczby błędów ANR było dla Cat Daddy priorytetem. Zespół kontroli jakości pracował niestrudzenie i zdobył się na wspólny wzorzec błędów ANR: okazało się, że gdy aplikacja została wstrzymana, a następnie szybko wznowiono jej działanie, duża liczba dotknięć mogła spowodować błąd ANR. Dalsze analizowanie za pomocą Firebase Crashlytics wykazało, że ten błąd ANR był typu android.os.MessageQueue.nativePollOnce, czyli najczęstszego typu błędu ANR w przypadku NBA 2K Mobile.

Twórca aplikacji Cat Daddy zauważył też, że ulepszone przetwarzanie danych wejściowych w klasie GameActivity może zapobiegać występowaniu tego typu błędów ANR, więc zdecydował się na jej użycie.

GameActivity to komponent Android Game Development Kit, który pomaga w przetwarzaniu poleceń cyklu aplikacji, zdarzeń wprowadzania danych i danych tekstowych w kodzie aplikacji C/C++. W porównaniu z NativeActivity komponent GameActivity oferuje szereg ulepszeń dotyczących gier, takich jak Fragment, renderowanie do SurfaceView i inne funkcje obsługi popularnych bibliotek związanych z tworzeniem gier.

GameActivity używa też podwójnego buforowania w buforze danych wejściowych, co pozwala grze lepiej radzić sobie z dużą liczbą danych wejściowych.

Wyniki

Dzięki zastosowaniu klasy GameActivity firma Cat Daddy mogła znacznie poprawić obsługę danych wejściowych w grze, co doprowadziło do zmniejszenia liczby błędów ANR o 35%. Dzięki temu użytkownicy mogą korzystać z gry wygodniej i mieć większą satysfakcję z rozgrywki.

Dodatkowo, ponieważ klasa GameActivity dziedziczy po klasie FragmentActivity, CatDaddy mogła też zintegrować EmbeddedWebView i EmbeddedVideoView, które były wymagane w przypadku niektórych najpopularniejszych integracji gier społecznościowych.

Rozpocznij

Ulepsz rozgrywkę dzięki klasie GameActivity i reszcie Android Game Development Kit.