GameActivity Parte de Android Game Development Kit.

GameActivity es una biblioteca de Jetpack que se diseñó para ayudar a los juegos de Android a procesar comandos del ciclo de la app, eventos de entrada y entrada de texto en el código C/C++ de la aplicación. GameActivity es subordinado directo de NativeActivity y comparte una arquitectura similar:

alt_text

Como se ilustra en el diagrama anterior, GameActivity realiza las siguientes funciones:

  • Interactúa con el framework de Android a través del componente Java.
  • Pasa comandos del ciclo de la app, eventos de entrada y texto de entrada al lado nativo.
  • Modela el código fuente C/C++ en tres componentes lógicos:
    • Funciones JNI de GameActivity, que admiten directamente la funcionalidad Java de GameActivity y ponen en cola los eventos para native_app_glue.
    • native_app_glue, que se ejecuta sobre todo en su propio subproceso nativo (diferente del subproceso principal de la aplicación) y ejecuta tareas con su generador de bucles.
    • El código de juego de la aplicación, que sondea y procesa los eventos en cola dentro de native_app_glue y ejecuta el código de juego dentro del subproceso native_app_glue.

Con GameActivity, puedes enfocarte en el desarrollo principal de tu juego y evitar dedicar demasiado tiempo con el código JNI.

Si ya conoces NativeActivity, a continuación, se indican las principales diferencias entre GameActivity y NativeActivity:

  • GameActivity se renderiza en una SurfaceView, lo que facilita mucho la interacción de los juegos con otros componentes de la IU.
  • En los eventos de entrada táctil y de teclas, GameActivity tiene una implementación completamente nueva con la interfaz de android_input_buffer, separada de la InputQueue que usa NativeActivity.
  • GameActivity es una clase derivada de AppCompatActivity, que te permite usar sin problemas otros componentes de Jetpack. ActionBar, Fragment y otros están disponibles.
  • GameActivity agrega funciones de entrada de texto mediante la integración de la biblioteca de GameTextInput.
  • Se espera que las apps derivadas de GameActivity compilen las tres partes del código C/C++ en una biblioteca. Por otro lado, las funciones de JNI de NativeActivity son parte del framework (que siempre carga el SO). Por lo tanto, solo se espera que native_app_glue y el código C/C++ de la aplicación se compilen en una biblioteca.
  • NativeActivity es parte del framework de Android y sigue su ciclo de lanzamiento (por lo general, anual). GameActivity es parte de la biblioteca de Jetpack, que tiene un ciclo de lanzamiento mucho más frecuente (por lo general, cada dos semanas); las funciones nuevas y las correcciones de errores pueden llegar más rápido.

Ubicaciones de lanzamiento

La biblioteca GameActivity está disponible en los siguientes canales:

El código C/C++ se proporciona como código fuente en todos los canales de versiones con el formato Prefab. GameActivity versión 1.2.2 agrega una biblioteca estática a la distribución. A partir de esta versión y de versiones posteriores, te recomendamos usar la biblioteca estática en lugar del código fuente.

Contenido de la biblioteca de Jetpack y del paquete ZIP de AGDK

Con la biblioteca de Jetpack y los canales de paquetes ZIP de AGDK, se lanza GameActivity con un AAR. Este AAR contiene los siguientes componentes principales:

  • Un archivo JAR para código Java
  • La biblioteca game-activity_static de C/C++static se incluye con GameActivity 1.2.2 y versiones posteriores.
  • Código fuente C/C++ (en la carpeta /prefab)

En las instrucciones de integración vinculadas desde esta página, se supone que puedes usar Prefab en el sistema de compilación. De lo contrario, puedes copiar el código fuente empaquetado en la carpeta prefab/modules/game-activity/include en tu sistema de compilación y seguir los pasos de integración necesarios. Existe una estructura de archivo similar para las versiones de androidx de la biblioteca de Android Jetpack. De forma predeterminada, Gradle descomprime los AAR en su directorio de caché (~/.gradle/caches/…). Puedes encontrar el código fuente C/C++ si buscas prefab/modules/game-activity/include y seleccionas la ubicación en la versión de actualización deseada.

A fin de obtener instrucciones para realizar la integración con la biblioteca de Jetpack, consulta el documento de introducción a GameActivity.

Para el paquete ZIP de la biblioteca de AGDK, sigue estos pasos a fin de obtener el código C/C++:

  1. Descomprime el paquete descargado.
  2. En el paquete descomprimido, descomprime también GameActivity-release.aar.
  3. Busca y copia todo el código fuente C/C++ en prefab/modules/game-activity/include, incluido lo siguiente:
    • game-activity para código C/C++ relacionado con GameActivity
    • game-text-input para código C/C++ relacionado con GameTextInput

Contenido del código fuente de AOSP

El AOSP siempre contiene el código fuente más reciente. Sigue las instrucciones de compilación para crear tus propias versiones o integrar directamente el origen en tu entorno de compilación. El código fuente de C/C++ se guarda en una estructura de archivos similar a las de la biblioteca de Jetpack y el paquete ZIP de AGDK.

Guías de integración

Sigue estas guías para integrar GameActivity en tus aplicaciones:

Recursos adicionales

Para obtener más información sobre GameActivity, consulta los siguientes vínculos:

Comentarios

Para informar errores o solicitar nuevas funciones a GameActivity, usa la herramienta de seguimiento de errores de GameActivity.