GameActivity Android Game Development Kit の一部。
GameActivity は、Android ゲームのアプリ サイクル コマンド、入力イベント、テキスト入力を、アプリの C/C++ コードで処理できるように設計された Jetpack ライブラリです。GameActivity は NativeActivity の直接の子孫であり、似通ったアーキテクチャとなっています。

上の図に示すように、GameActivity は次の機能を実現します。
- Java 側のコンポーネントを介して Android フレームワークとやり取りする。
- アプリ サイクル コマンド、入力イベント、入力テキストをネイティブ側に渡す。
- C/C++ のソースコードを、次の 3 つの論理コンポーネントにモデル化する。
- GameActivity の JNI 関数。GameActivity の Java 機能を直接サポートし、イベントを
native_app_glueのキューに追加します。 native_app_glue。主に独自のネイティブ スレッド(アプリのメインスレッドとは異なる)で実行され、looper を使用してタスクを実行します。- アプリのゲームコード。
native_app_glue内でキューに追加されたイベントをポーリングして処理し、native_app_glueスレッド内でゲームコードを実行します。
- GameActivity の JNI 関数。GameActivity の Java 機能を直接サポートし、イベントを
GameActivity を使用することで、ゲームの本質的な部分の開発に集中し、JNI コードの取り扱いに無駄な時間を費やすことを避けられます。
すでに NativeActivity をご存じの方に簡単に説明すると、GameActivity と NativeActivity は主に次のような点で違っています。
GameActivityはSurfaceViewにレンダリングされるため、ゲームで他の UI コンポーネントとやり取りするのが簡単になります。- タッチイベントとキー入力イベント用に、
GameActivityには、NativeActivityが使用するInputQueueとは別に、android_input_bufferを使った完全に新しいインターフェースがあります。 GameActivityはAppCompatActivityの派生クラスなので、他の Jetpack コンポーネントをシームレスに使用できます。ActionBar、Fragmentなどが利用可能です。GameActivityには、GameTextInput ライブラリの統合により、テキスト入力機能が追加されています。GameActivityから派生させたアプリでは、C/C++ コードの 3 つの部分すべてを 1 つのライブラリにビルドします。一方で、NativeActivityの JNI 関数は、フレームワークの一部です(常に OS が読み込みます)。したがって、native_app_glueとアプリの C/C++ コードのみが 1 つのライブラリにビルドされます。NativeActivityは Android フレームワークの一部であるため、そのリリース サイクルに従います(通常は毎年)。GameActivityは Jetpack ライブラリの一部であり、リリース サイクルがはるかに短い(通常は隔週)ため、新機能やバグの修正が非常に早く届きます。
リリースの場所
GameActivity ライブラリの入手チャンネルは次のとおりです。
- Android Jetpack ライブラリの一部(推奨)
- AOSP ソースコード
C/C++ コードは、Prefab 形式を使用して、すべてのリリース チャンネルでソースコードとして提供されます。GameActivity バージョン 1.2.2 で、ディストリビューションに静的ライブラリが追加されました。このバージョン以降では、ソースコードではなく静的ライブラリを使用することをおすすめします。
Jetpack ライブラリの内容
Jetpack ライブラリでは、GameActivity は AAR と一緒にリリースされます。この AAR には、主に次の要素が含まれます。
- Java コードの JAR ファイル
- C/C++ 静的ライブラリ
game-activity_static(GameActivity バージョン 1.2.2 以降に含まれています) - C/C++ ソースコード(
/prefabフォルダ下)
このページからリンクされている統合手順は、ビルドシステムで Prefab を使用できることを前提としています。使用できない場合は、prefab/modules/game-activity/include フォルダ下にある圧縮形式のソースコードをビルドシステムにコピーして、必要な統合手順を行うことができます。Android Jetpack ライブラリの androidx 下のリリースのファイル構造も同様です。デフォルトでは、Gradle により AAR はキャッシュ ディレクトリ(~/.gradle/caches/...)に展開されます。C/C++ ソースコードを見つけるには、prefab/modules/game-activity/include を検索して、目的のリリース バージョン下の場所を選択します。
Jetpack ライブラリを使用して統合する手順については、GameActivity を使ってみるをご覧ください。
AOSP ソースコードの内容
AOSP には最新のソースコードが常に含まれています。[ビルド手順][GameActivity 実装]{: .external}に沿って独自のリリースを作成するか、ソースをビルド環境に直接統合します。C/C++ ソースコードは、Jetpack ライブラリと同様のファイル構造で保存されています。
統合ガイド
GameActivity をアプリに統合する方法については、次のガイドをご覧ください。
参考情報
GameActivity について詳しくは、以下をご覧ください。
- GameActivity と AGDK のリリースノート
- GameActivity で GameTextInput を使用する
- NativeActivity の移行ガイド
- GameActivity リファレンス ドキュメント
- GameActivity の実装
フィードバック
GameActivity に関連するバグの報告または機能のリクエストを行うには、GameActivity の Issue Tracker を使用してください。