GameActivity   Parte di Android Game Development Kit.

GameActivity è una libreria Jetpack progettata per aiutare i giochi per Android a elaborare i comandi del ciclo di vita dell'app, gli eventi di input e l'input di testo nel codice C/C++ dell'applicazione. GameActivity è un discendente diretto di NativeActivity e condivide un'architettura simile:

alt_text

Come illustrato nel diagramma precedente, GameActivity svolge le seguenti funzioni:

  • Interagire con il framework Android tramite il componente lato Java.
  • Trasferimento di comandi del ciclo di vita dell'app, eventi di input e testo di input al lato nativo.
  • Modellazione del codice sorgente C/C++ in tre componenti logici:
    • Le funzioni JNI di GameActivity, che supportano direttamente la funzionalità Java di GameActivity e mettono in coda gli eventi in native_app_glue.
    • native_app_glue, che viene eseguito principalmente nel proprio thread nativo (diverso dal thread principale dell'applicazione) ed esegue le attività con il proprio looper.
    • Il codice di gioco dell'applicazione, che esegue il polling ed elabora gli eventi in coda all'interno di native_app_glue ed esegue il codice di gioco all'interno del thread native_app_glue.

Con GameActivity, puoi concentrarti sullo sviluppo del gioco principale ed evitare di dedicare troppo tempo alla gestione del codice JNI.

Se hai già familiarità con NativeActivity, le principali differenze tra GameActivity e NativeActivity sono le seguenti:

  • GameActivity viene visualizzato in un SurfaceView, il che rende molto più semplice l'interazione dei giochi con altri componenti UI.
  • Per gli eventi di input da tastiera e tocco, GameActivity ha un'implementazione completamente nuova con l'interfaccia android_input_buffer, separata da InputQueue che NativeActivity utilizza.
  • GameActivity è una classe derivata di AppCompatActivity, che ti consente di utilizzare senza problemi altri componenti Jetpack. ActionBar, Fragment e altri sono tutti disponibili.
  • GameActivity aggiunge la funzionalità di inserimento di testo integrando la libreria GameTextInput.
  • Le app derivate da GameActivity devono creare tutte e tre le parti del codice C/C++ in un'unica libreria. D'altra parte, le funzioni JNI di NativeActivity fanno parte del framework (sempre caricate dal sistema operativo). Pertanto, solo il codice C/C++ di native_app_glue e dell'applicazione devono essere compilati in un'unica libreria.
  • NativeActivity fa parte del framework Android e ne segue il ciclo di rilascio (in genere annuale). GameActivity fa parte della libreria Jetpack, che ha un ciclo di rilascio molto più frequente (in genere ogni due settimane); nuove funzionalità e correzioni di bug possono arrivare molto più rapidamente.

Località di rilascio

La libreria GameActivity è disponibile nei seguenti canali:

Il codice C/C++ viene fornito come codice sorgente in tutti i canali di rilascio, utilizzando il formato Prefab. La versione 1.2.2 di GameActivity aggiunge una libreria statica alla distribuzione. A partire da questa versione e successive, ti consigliamo di utilizzare la libreria statica anziché il codice sorgente.

Contenuti del pacchetto zip della libreria Jetpack e dell'AGDK

Con la libreria Jetpack e i canali del pacchetto zip AGDK, GameActivity viene rilasciata con un AAR. Questo AAR contiene i seguenti componenti principali:

  • Un file JAR per il codice Java
  • La libreria statica C/C++ game-activity_static è inclusa in GameActivity versione 1.2.2 e successive.
  • Codice sorgente C/C++ (nella cartella /prefab)

Le istruzioni di integrazione a cui viene rimandato da questa pagina presuppongono che tu possa utilizzare Prefab nel tuo sistema di build; in caso contrario, puoi copiare il codice sorgente compresso nella cartella prefab/modules/game-activity/include nel tuo sistema di build ed eseguire i passaggi di integrazione necessari. Esiste una struttura di file simile per le release in androidx per la libreria Android Jetpack; per impostazione predefinita, Gradle decomprime gli AAR nella directory della cache (~/.gradle/caches/...). Puoi trovare il codice sorgente C/C++ cercando prefab/modules/game-activity/include e selezionando la posizione nella versione di rilascio che ti interessa.

Per istruzioni sull'integrazione tramite la libreria Jetpack, vedi Guida introduttiva a GameActivity.

Contenuti del codice sorgente AOSP

AOSP contiene sempre il codice sorgente più recente. Segui le istruzioni di compilazione per creare le tue release o integrare direttamente l'origine nel tuo ambiente di compilazione. Il codice sorgente C/C++ viene salvato in una struttura di file simile a quelle della libreria Jetpack e del pacchetto zip AGDK.

Guide all'integrazione

Segui queste guide per integrare GameActivity nelle tue applicazioni:

Risorse aggiuntive

Per scoprire di più su GameActivity, consulta quanto segue:

Feedback

Per segnalare bug o richiedere nuove funzionalità per GameActivity, utilizza lo strumento di monitoraggio dei problemi di GameActivity.