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:
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 subprocesonative_app_glue
.
- Funciones JNI de GameActivity, que admiten directamente la funcionalidad Java de GameActivity y ponen en cola los eventos para
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 unaSurfaceView
, 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 deandroid_input_buffer
, separada de laInputQueue
que usaNativeActivity
. GameActivity
es una clase derivada deAppCompatActivity
, 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 deNativeActivity
son parte del framework (que siempre carga el SO). Por lo tanto, solo se espera quenative_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:
- Como parte de la biblioteca de Android Jetpack (recomendado)
- Como paquete ZIP que se puede descargar desde la página de descarga de AGDK
- Como código fuente AOSP
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++:
- Descomprime el paquete descargado.
- En el paquete descomprimido, descomprime también GameActivity-release.aar.
- 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 conGameActivity
game-text-input
para código C/C++ relacionado conGameTextInput
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:
- Notas de la versión de AGDK y GameActivity
- Usa GameTextInput en GameActivity
- Guía de migración de NativeActivity
- Documentación de referencia de GameActivity
- Implementación de GameActivity
Comentarios
Para informar errores o solicitar nuevas funciones a GameActivity, usa la herramienta de seguimiento de errores de GameActivity.