GameActivity   Componente di Android Game Development Kit.

GameActivity è una libreria Jetpack progettata per aiutare i giochi Android a elaborare comandi del ciclo dell'app, eventi di input e 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 sopra, GameActivity esegue le seguenti funzioni:

  • Interazione con il framework Android tramite il componente lato Java.
  • Trasmissione di comandi del ciclo 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 per 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 suo looper.
    • Il codice di gioco dell'applicazione, che esegue il polling ed elabora gli eventi in coda dentro native_app_glue ed esegue il codice di gioco all'interno del native_app_glue thread.

Con GameActivity, puoi concentrarti sullo sviluppo del tuo gioco principale ed evitare di impiegare troppo tempo a gestire il codice JNI.

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

  • GameActivity viene visualizzato come SurfaceView, il che semplifica molto l'interazione dei giochi con altri componenti dell'interfaccia utente.
  • Per gli eventi di input tocco e tasti, GameActivity ha un'implementazione completamente nuova con l'interfaccia android_input_buffer, distinta da InputQueue utilizzata da NativeActivity.
  • GameActivity è una classe derivata da AppCompatActivity, che 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 dovrebbero compilare 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 (caricato sempre dal sistema operativo). Di conseguenza, solo il codice C/C++ di native_app_glue e dell'applicazione deve essere compilato in una libreria.
  • NativeActivity fa parte del framework Android e segue il relativo 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); le nuove funzionalità e le correzioni di bug possono essere implementate 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 versioni successive, ti consigliamo di utilizzare la libreria statica anziché il codice sorgente.

Contenuti della libreria Jetpack e del pacchetto ZIP AGDK

Con la libreria Jetpack e i canali del pacchetto zip AGDK, GameActivity viene rilasciato 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 si fa riferimento in questa pagina presuppongono che tu possa utilizzare Prefab nel tuo sistema di compilazione. In caso contrario, puoi copiare il codice sorgente pacchettizzato nella cartella prefab/modules/game-activity/include nel tuo sistema di compilazione 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 estrae 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 release prevista.

Per istruzioni sull'integrazione utilizzando la libreria Jetpack, consulta Iniziare a utilizzare 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 il codice sorgente nel tuo ambiente di compilazione. Il codice sorgente C/C++ viene salvato in una struttura di file simile a quella 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.