GameActivity Composant d'Android Game Development Kit.
GameActivity
est une bibliothèque Jetpack conçue pour aider les jeux Android à traiter les commandes de cycle d'application, les événements d'entrée et la saisie de texte dans le code C/C++ de l'application. GameActivity
est un descendant direct de NativeActivity
avec lequel il partage une architecture semblable :
Comme illustré dans le diagramme ci-dessus, GameActivity
exécute les fonctions suivantes :
- Interaction avec le framework Android par le biais du composant côté Java
- Transmission des commandes de cycle d'application, des événements d'entrée et du texte saisi au côté natif
- Modélisation du code source C/C++ sous forme de trois composants logiques :
- Fonctions JNI de GameActivity, qui prennent directement en charge la fonctionnalité Java de GameActivity et mettent les événements en file d'attente dans
native_app_glue
native_app_glue
, qui s'exécute principalement dans son propre thread natif (différent du thread principal de l'application), et exécute des tâches avec son looper- Code de jeu de l'application, qui interroge et traite les événements mis en file d'attente dans
native_app_glue
et exécute le code de jeu dans le threadnative_app_glue
.
- Fonctions JNI de GameActivity, qui prennent directement en charge la fonctionnalité Java de GameActivity et mettent les événements en file d'attente dans
GameActivity
vous permet de vous concentrer sur le développement de base de votre jeu et d'éviter de perdre beaucoup de temps à gérer le code JNI.
Si vous connaissez déjà NativeActivity
, les principales différences entre GameActivity
et NativeActivity
sont les suivantes :
GameActivity
effectue le rendu dans unSurfaceView
, ce qui facilite l'interaction des jeux avec d'autres composants de l'UI.- Pour les événements tactiles et de saisie au clavier,
GameActivity
dispose d'une implémentation entièrement nouvelle avec l'interfaceandroid_input_buffer
distincte de l'InputQueue
utilisée parNativeActivity
. GameActivity
est une classe dérivée d'AppCompatActivity
, qui vous permet d'utiliser facilement d'autres composants Jetpack.ActionBar
,Fragment
et autres sont tous disponibles.GameActivity
ajoute une fonctionnalité de saisie de texte en intégrant la bibliothèque GameTextInput.- Les applications dérivées de
GameActivity
sont censées créer les trois parties du code C/C++ dans une même bibliothèque. Les fonctions JNI deNativeActivity
, quant à elles, font partie du framework (toujours chargées par l'OS). Par conséquent, seuls le composantnative_app_glue
et le code C/C++ de l'application doivent être intégrés dans la même bibliothèque. NativeActivity
est un composant du framework Android, dont il suit le cycle de publication (généralement annuel).GameActivity
est un composant de la bibliothèque Jetpack, dont le cycle de publication est beaucoup plus fréquent (généralement bimensuel). De nouvelles fonctionnalités et des corrections de bugs peuvent être publiées beaucoup plus rapidement.
Emplacements de publication
La bibliothèque GameActivity
est accessible via les canaux suivants :
- En tant que composant de la bibliothèque Android Jetpack (canal recommandé)
- Sous forme de package zip, téléchargeable depuis la page de téléchargement d'AGDK
- En tant que code source AOSP
Le code C/C++ est fourni sous forme de code source dans tous les canaux de distribution, au format Prefab. La version 1.2.2 de GameActivity ajoute une bibliothèque statique à la distribution. À partir de cette version, nous vous recommandons d'utiliser la bibliothèque statique au lieu du code source.
Contenu de la bibliothèque Jetpack et du package zip AGDK
Par le biais de la bibliothèque Jetpack et du package zip AGDK, GameActivity est publié avec un fichier AAR. Ce fichier AAR contient les composants suivants :
- Un fichier JAR pour le code Java
- La bibliothèque statique C/C++
game-activity_static
est incluse dans GameActivity version 1.2.2 ou ultérieure. - Le code source C/C++ (dossier
/prefab
)
Les instructions d'intégration accessibles depuis cette page partent du principe que vous êtes en mesure d'utiliser Prefab dans votre système de compilation. Sinon, vous pouvez copier le code source contenu dans le dossier prefab/modules/game-activity/include
vers votre système de compilation et suivre les étapes d'intégration nécessaires. Une structure de fichiers similaire existe pour les versions sous androidx
de la bibliothèque Android Jetpack. Par défaut, Gradle décompresse les fichiers AAR dans son cache (~/.gradle/caches/...). Pour accéder au code source C/C++, recherchez prefab/modules/game-activity/include
et récupérez l'emplacement sous la version souhaitée.
Pour obtenir des instructions sur l'intégration à l'aide de la bibliothèque Jetpack, consultez Premiers pas avec GameActivity.
Pour le package zip de la bibliothèque AGDK, procédez comme suit afin d'obtenir le code C/C++ :
- Décompressez le package téléchargé.
- Dans le package décompressé, décompressez le fichier GameActivity-release.aar.
- Recherchez et copiez tout le code source C/C++ sous
prefab/modules/game-activity/include
, y compris les éléments suivants :game-activity
pour le code C/C++ associé àGameActivity
game-text-input
pour le code C/C++ associé àGameTextInput
Contenu du code source AOSP
AOSP contient toujours le code source le plus récent. Suivez les instructions de compilation pour créer vos propres versions ou intégrez directement la source dans votre environnement de compilation. Le code source C/C++ est enregistré dans une structure de fichiers semblable à celle de la bibliothèque Jetpack et du package zip AGDK.
Guides d'intégration
Suivez les guides ci-dessous pour intégrer GameActivity
dans vos applications :
Ressources supplémentaires
Pour en savoir plus sur GameActivity
, consultez :
- Notes de version de GameActivity et d'AGDK
- Utiliser GameTextInput dans GameActivity
- Guide de migration de NativeActivity
- Documentation de référence sur GameActivity
- Implémentation de GameActivity
Commentaires
Pour signaler des bugs ou demander de nouvelles fonctionnalités dans GameActivity, utilisez l'outil Issue Tracker de GameActivity.