2K は Android Game Development Kit を使用して ANR 発生率を 35% 削減

背景

Cat Daddy Games は、ワシントン州カークランドに拠点を置く 2K 完全所有のスタジオで、NBA 2K Mobile のデベロッパーです。チームは、特に「アプリケーション応答なし」エラー(ANR)を減らすことで、ゲームの全体的な品質と安定性を改善する必要がありました。ANR は、Android アプリの UI スレッドが長時間ブロックされると発生します。そのような場合、UI を更新する役割を担うアプリのメインスレッドがユーザー入力イベントを描画または処理できなくなり、ユーザーに不満を抱かせることになります。アプリがフォアグラウンドで実行されている場合は、ユーザーがアプリを強制終了できるダイアログが表示されます。

Eyecon の取り組み

ANR の削減は、Cat Daddy にとって最優先事項でした。QA チームは粘り強く取り組み、一般的な ANR パターンを突き止めました。そこで、アプリが一時停止してからすぐに再開すると、大量のタップ入力で ANR が発生する可能性があることがわかりました。Firebase Crashlytics でさらに調査を行った結果、この ANR のタイプは android.os.MessageQueue.nativePollOnce であり、NBA 2K Mobile の ANR の最も一般的なタイプであることがわかりました。

また、GameActivity の入力処理を改善することでこの種の ANR を回避できるとわかったため、Cat Daddy は GameActivity に移行することにしました。

GameActivityAndroid Game Development Kit のコンポーネントで、Android ゲームがアプリの C/C++ コードでアプリサイクル コマンド、入力イベント、テキスト入力を処理する際に設計されています。GameActivity は、FragmentSurfaceView へのレンダリング、一般的なゲーム開発関連ライブラリのその他のサポートなど、NativeActivity と比べてゲームに焦点を当てたさまざまな改善を提供します。

また、GameActivity は入力バッファでダブル バッファリングを使用して、この入力量が多い場合のゲームの処理を改善します。

結果

Cat Daddy は GameActivity を実装することで、ゲームの入力処理を大幅に改善し、ANR エラーを 35% 削減できました。これにより、ユーザー エクスペリエンスが向上し、より安定したゲームプレイ エクスペリエンスが実現しました。

また、GameActivity は FragmentActivity を継承するため、CatDaddy は、人気のソーシャル ゲーム統合で必要だった EmbedWebView と EmbeddedVideoView も統合できました。

始める

GameActivityAndroid Game Development Kit の他の機能を利用して、ゲーム エクスペリエンスを改善できます。