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 :

alt_text

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 thread native_app_glue.

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 un SurfaceView, 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'interface android_input_buffer distincte de l'InputQueue utilisée par NativeActivity.
  • 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 de NativeActivity, quant à elles, font partie du framework (toujours chargées par l'OS). Par conséquent, seuls le composant native_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 :

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++ :

  1. Décompressez le package téléchargé.
  2. Dans le package décompressé, décompressez le fichier GameActivity-release.aar.
  3. 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 :

Commentaires

Pour signaler des bugs ou demander de nouvelles fonctionnalités dans GameActivity, utilisez l'outil Issue Tracker de GameActivity.