GameActivity   Part of Android Game Development Kit.

GameActivity is a Jetpack library designed to assist Android games in processing app cycle commands, input events, and text input in the application's C/C++ code. GameActivity is a direct descendant of NativeActivity and shares a similar architecture:

alt_text

As illustrated in the above diagram, GameActivity performs the following functions:

  • Interacting with Android framework through the Java-side component.
  • Passing app cycle commands, input events, and input text to the native side.
  • Modelling C/C++ source code into three logical components:
    • GameActivity’s JNI functions, which directly support GameActivity’s Java functionality and enqueue the events to native_app_glue.
    • native_app_glue, which runs mostly in its own native thread (different from the application’s main thread), and executes tasks with its looper.
    • The application's game code, which polls and processes the events queued inside native_app_glue and executes game code within the native_app_glue thread.

With GameActivity, you can focus on your core game development and avoid spending excessive time dealing with the JNI code.

If you are already familiar with NativeActivity, the major differences between GameActivity and NativeActivity are as follows:

  • GameActivity renders into a SurfaceView, making it much easier for games to interact with other UI components.
  • For touch and key input events, GameActivity has a completely new implementation with the android_input_buffer interface, separate from the InputQueue that NativeActivity uses.
  • GameActivity is a derived class of AppCompatActivity, which lets you seamlessly use other Jetpack components. ActionBar, Fragment, and others are all available.
  • GameActivity adds text input functionality by integrating the GameTextInput library.
  • Apps derived from GameActivity are expected to build all three parts of C/C++ code into one library. On the other hand, NativeActivity's JNI functions are a part of the framework (always loaded by OS). Hence, only the native_app_glue and application’s C/C++ code are expected to be built into one library.
  • NativeActivity is a part of Android framework and follows its release cycle (typically yearly). GameActivity is a part of the Jetpack library, which has a much more frequent release cycle (typically biweekly); new features and bug fixes can arrive much more quickly.

Release locations

The GameActivity library is available in the following channels:

The C/C++ code is provided as source code in all release channels, using the Prefab format.

Contents of Jetpack library and AGDK zip package

With the Jetpack library and AGDK zip package channels, GameActivity is released with an AAR. This AAR contains the following major components:

  • A JAR file for Java code
  • C/C++ source code (under the /prefab folder)

The integration instructions linked to from this page assume that you can use Prefab in your build system; otherwise, you can copy the source code packed under the prefab/modules/game-activity/include folder into your build system and perform the necessary integration steps. A similar file structure exists for the releases under androidx for the Android Jetpack library; by default, gradle unpacks AARs in its cache directory (~/.gradle/caches/...). You can find the C/C++ source code by searching for prefab/modules/game-activity/include and picking up the location under your intended release version.

For instructions on integrating using the Jetpack library, see Get started with GameActivity.

For the AGDK library zip package, follow these steps to get the C/C++ code:

  1. Unzip the downloaded package.
  2. In the unzipped package, unzip GameActivity-release.aar.
  3. Find and copy out all C/C++ source code under prefab/modules/game-activity/include, includes the following:
    • game-activity for GameActivity related C/C++ code
    • game-text-input for GameTextInput related C/C++ code

Content of AOSP source code

AOSP always contains the most recent source code. Follow the build instructions to create your own releases or directly integrate the source into your build environment. The C/C++ source code is saved in a file structure similar to the ones for the Jetpack library and AGDK zip package.

Integration guides

Follow those guides to integrate GameActivity into your applications:

References

To learn more about GameActivity, see the following:

Feedback

To report bugs or request new features to GameActivity, use the GameActivity issue tracker.