GameActivity Android Game Development Kit の一部。

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

alt_text

上の図に示すように、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 コードの取り扱いに無駄な時間を費やすことを避けられます。

すでに NativeActivity をご存じの方に簡単に説明すると、GameActivityNativeActivity は主に次のような点で違っています。

  • GameActivitySurfaceView にレンダリングされるため、ゲームで他の UI コンポーネントとやり取りするのが簡単になります。
  • タッチイベントとキー入力イベント用に、GameActivity には、NativeActivity が使用する InputQueue とは別に、android_input_buffer を使った完全に新しいインターフェースがあります。
  • GameActivityAppCompatActivity の派生クラスなので、他の Jetpack コンポーネントをシームレスに使用できます。ActionBarFragment などが利用可能です。
  • GameActivity には、GameTextInput ライブラリの統合により、テキスト入力機能が追加されています。
  • GameActivity から派生させたアプリでは、C/C++ コードの 3 つの部分すべてを 1 つのライブラリにビルドします。一方で、NativeActivity の JNI 関数は、フレームワークの一部です(常に OS が読み込みます)。したがって、native_app_glue とアプリの C/C++ コードのみが 1 つのライブラリにビルドされます。
  • NativeActivity は Android フレームワークの一部であるため、そのリリース サイクルに従います(通常は毎年)。GameActivity は Jetpack ライブラリの一部であり、リリース サイクルがはるかに短い(通常は隔週)ため、新機能やバグの修正が非常に早く届きます。

リリースの場所

GameActivity ライブラリの入手チャンネルは次のとおりです。

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++ コードを取得します。

  1. ダウンロードしたパッケージを解凍します。
  2. 解凍したパッケージで、GameActivity-release.aar を解凍します。
  3. 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 に関連するバグの報告または機能のリクエストを行うには、GameActivity の Issue Tracker を使用してください。