Android Game Development Kit를 사용하여 ANR 발생률을 35% 줄인 2K

배경

Cat Daddy Games는 워싱턴주 커클랜드에 본사를 두고 있으며 전체 지분을 소유한 2K 스튜디오이며 NBA 2K Mobile의 개발업체입니다. 팀은 특히 '애플리케이션 응답 없음'(ANR) 오류를 줄여 게임의 전반적인 품질과 안정성을 개선하고자 했습니다. Android 앱의 UI 스레드가 너무 오랫동안 차단되면 ANR이 발생합니다. 이 경우 UI 업데이트를 담당하는 앱의 기본 스레드가 사용자 입력 이벤트를 그리거나 처리할 수 없어 사용자의 불만을 초래합니다. 앱이 포그라운드에서 실행 중이면 시스템에서 사용자가 앱을 강제 종료할 수 있는 대화상자를 표시합니다.

진행한 작업

Cat Daddy에게는 ANR을 줄이는 것이 매우 중요한 과제였습니다. QA팀은 끊임없이 노력하여 일반적인 ANR 패턴을 정립했습니다. 앱이 일시중지되었다가 빠르게 재개되면 대량의 터치 입력이 ANR을 일으킬 수 있다는 사실을 발견했습니다. Firebase Crashlytics를 추가로 조사한 결과 이 ANR은 NBA 2K Mobile에서 가장 일반적인 ANR 유형인 android.os.MessageQueue.nativePollOnce 유형이었습니다.

Cat Daddy는 GameActivity의 입력 처리를 개선하면 이러한 유형의 ANR을 방지할 수 있다는 것을 확인했으므로 GameActivity로 이동하기로 결정했습니다.

GameActivityAndroid Game Development Kit의 구성요소로, 애플리케이션의 C/C++ 코드에서 앱 주기 명령어, 입력 이벤트, 텍스트 입력을 처리하는 데 Android 게임을 지원하도록 설계되었습니다. GameActivity는 Fragment, SurfaceView 렌더링, 인기 게임 개발 관련 라이브러리 지원 등 NativeActivity에 관한 여러 게임 중심 개선사항을 제공합니다.

또한 GameActivity는 입력 버퍼에 이중 버퍼링을 사용하므로 입력 볼륨이 큰 경우 게임에서 더 잘 처리할 수 있습니다.

결과

Cat Daddy는 GameActivity를 구현하여 게임의 입력 처리를 크게 개선하여 ANR 오류를 35% 줄일 수 있었습니다. 이는 사용자 환경을 개선하고 더욱 안정적인 게임플레이 환경을 만들었습니다.

또한 GameActivity는 FragmentActivity에서 상속되므로 CatDaddy는 가장 많이 사용되는 일부 소셜 게임 통합에 필요한 EmbeddedWebView 및 EmbeddedVideoView도 통합할 수 있었습니다.

시작하기

GameActivityAndroid Game Development Kit의 나머지 부분을 사용하여 자체 게임 환경을 개선합니다.