背景
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 に移行することにしました。
GameActivity は Android Game Development Kit のコンポーネントで、Android ゲームがアプリの C/C++ コードでアプリサイクル コマンド、入力イベント、テキスト入力を処理する際に設計されています。GameActivity は、Fragment
や SurfaceView
へのレンダリング、一般的なゲーム開発関連ライブラリのその他のサポートなど、NativeActivity
と比べてゲームに焦点を当てたさまざまな改善を提供します。
また、GameActivity は入力バッファでダブル バッファリングを使用して、この入力量が多い場合のゲームの処理を改善します。
結果
Cat Daddy は GameActivity を実装することで、ゲームの入力処理を大幅に改善し、ANR エラーを 35% 削減できました。これにより、ユーザー エクスペリエンスが向上し、より安定したゲームプレイ エクスペリエンスが実現しました。
また、GameActivity は FragmentActivity
を継承するため、CatDaddy は、人気のソーシャル ゲーム統合で必要だった EmbedWebView と EmbeddedVideoView も統合できました。
始める
GameActivity や Android Game Development Kit の他の機能を利用して、ゲーム エクスペリエンスを改善できます。