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 ライブラリの一部(推奨)
- ZIP パッケージ(AGDK ダウンロード ページからダウンロード可能)
- AOSP ソースコード
C/C++ コードは、Prefab 形式を使用して、すべてのリリース チャンネルでソースコードとして提供されます。GameActivity バージョン 1.2.2 で、ディストリビューションに静的ライブラリが追加されました。このバージョン以降では、ソースコードではなく静的ライブラリを使用することをおすすめします。
Jetpack ライブラリと AGDK ZIP パッケージの内容
Jetpack ライブラリと AGDK ZIP パッケージのチャンネルでは、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 を使ってみるをご覧ください。
AGDK ライブラリの ZIP パッケージの場合は、次の手順で C/C++ コードを取得します。
- ダウンロードしたパッケージを解凍します。
- 解凍したパッケージで、GameActivity-release.aar を解凍します。
prefab/modules/game-activity/include
下にある C/C++ ソースコードをすべてコピーします。次の内容が含まれます。game-activity
:GameActivity
関連の C/C++ コードgame-text-input
:GameTextInput
関連の C/C++ コード
AOSP ソースコードの内容
AOSP には最新のソースコードが常に含まれています。ビルド手順に沿って独自のリリースを作成するか、ソースをビルド環境に直接統合します。C/C++ ソースコードは、Jetpack ライブラリと AGDK ZIP パッケージの場合と同様のファイル構造で保存されています。
統合ガイド
GameActivity
をアプリに統合する方法については、次のガイドをご覧ください。
参考情報
GameActivity
について詳しくは、以下をご覧ください。
- GameActivity と AGDK のリリースノート
- GameActivity で GameTextInput を使用する
- NativeActivity の移行ガイド
- GameActivity リファレンス ドキュメント
- GameActivity の実装
フィードバック
GameActivity に関連するバグの報告または機能のリクエストを行うには、GameActivity の Issue Tracker を使用してください。