この記事は Wayne Lu による Android Developers Blog の記事 " Answering your top questions on Android Game Development Kit " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

この記事は Wayne Lu による Android Developers Blog の記事 " Answering your top questions on Android Game Development Kit " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

2021 年 7 月に Android Game Development Kit(AGDK) (英語)  をリリースしてから、デベロッパーの皆さんよりお寄せいただいた主な質問をまとめました。その内容は、AGDK のライブラリやツールから、Android のメモリ最適化、グラフィックスの実装に関することまで、さまざまです。

 

AGDK とゲームエンジン

まず、新進気鋭のゲーム デベロッパーから寄せられた、AGDK の一連のライブラリやツールの使い方に関する質問です。セットアップに応じて、以下の事項を推奨しています。

  1. Defold (英語) 、Godot (英語) 、Unity (英語) 、Unreal (英語) などの人気ゲームエンジン (英語) をお使いのゲーム デベロッパーは、Android アプリ開発ガイドを参考にすることができます。こういったゲームエンジンを使うと、テクノロジー スタック全体ではなく、ゲームプレイの構築に集中することができます。

  2. Unreal Engine を使っており、PC や専用機などの複数のプラットフォームをターゲットにしている場合は、Android Game Development Extension(AGDE)(英語)をワークフローに追加するとよいかもしれません。

  3. 独自のゲームエンジンのカスタマイズや開発を実施するデベロッパーにも対応しています。詳しくは、C または C++ のドキュメントをご覧ください。(英語)

ご自身の環境に合致したゲームエンジンとワークフローに沿って、ゲーム内で利用する CPU、メモリ、ネットワーク、バッテリーなどの状況を詳細に調査する Android Studio Profiler、グラフィックスに特化してプロファイリングを行う Android GPU Inspector(英語)、フレームレートや読み込み時間を端末毎に最適化する Android Performance Tuner (英語) などの各種ツールを確認しましょう。

 

Game Mode API と Interventions

続いて、Android 12 での開発に関する質問も寄せられています。Android 12 でゲームを実行するにあたって、特別なことは何も必要ありません。しかし、プレイヤーがゲーム体験をカスタマイズできるように、Game Mode API と Interventions (英語) を導入していきましょう。

  1. Game Mode API (英語) の詳細を確認し、ユーザーが対応するゲームモードを選択したときに、ゲームを最適化して最高のパフォーマンスを実現したり、電池寿命を延ばす方法を習得していきましょう。

  2. Game Mode Interventions (英語) についてご確認ください。これは、デベロッパーがアップデートを行わなくなったゲームのパフォーマンスを向上させるため、端末メーカー側 (OEM) が設定するものです。たとえば、デバイスの GPU 負荷を減らすため、 WindowManager のバックバッファのサイズを変更 (英語) することなどが挙げられます。

 

Android のメモリアクセス

2 つ目は、Android と Windows のゲーム開発におけるメモリアクセスの動作の違いについての質問です。以下に、いくつかのヒントをまとめます。

  1. モバイルゲームでは、システムとメモリを共有する必要があります。デバイスによっては、利用できるメモリが少ないものもあります。そのため、サポート対象となるさまざまなデバイスで、メモリ不足の問題を確認するテストが必要になります。テストは、(クリーンなデバイスではなく)ユーザーがインストールすることが多い一般的なアプリを搭載したデバイスで行う必要があります。

  2. ゲームが割り当てることができるメモリ (英語) 容量は、物理メモリの量、ダーティページの数、zRam(圧縮スワップ用)の合計容量など、さまざまな要因によって異なります。

  3. メモリ不足の症状としては、onTrimMemory() が呼び出される、メモリのスラッシングが起きる、ローメモリ キラーによってゲームが強制終了される、などがあります。bugreport ログを使うと、ローメモリ キラーによってゲームが強制終了されたかどうかを確認できます。Android 11 以降では、ApplicationExitInfo (英語) を確認して REASON_LOW_MEMORY(英語)  によってゲームが終了したかどうかを調べることができます。
  4. メモリのスラッシング(英語) を回避します。この現象は、メモリ不足が発生しているものの、ゲームを強制終了するほどのメモリは使っていない場合に発生します。これはシステム トレースで検知できます。この問題を回避するには、合計メモリ使用量を減らす必要があります。
  5. メモリ使用量は、Android Profilerその他のツール(英語) を使って調べることができます。

 

Android でのグラフィックスの実装

3 つ目は、Android でのグラフィックスの実装に関する質問です。選択肢には、OpenGL ESVulkan グラフィックス API があります。

  1. C++ ゲームエンジンで OpenGL ES グラフィックスを構成する(英語) 方法についてご確認ください。変数の初期化、ゲームループでのレンダリング、シーンとオブジェクトのレンダリングについて説明しています。

  2. Vulkan ガイドを確認頂き、立方体の描画、シェーダーのコンパイル、検証レイヤの設定方法などのベスト プラクティスを習得します。


AGDK に関する主な質問は、Q&A 動画でも確認できます。また、Android ゲーム開発の最新リソースには、g.co/android/AGDK (英語) からアクセスできます。


Reviewed by Maru Maruyama - Developer Relations Engineer