GameActivity Componente del Game Development Kit di Android.

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 ha un'architettura simile:

testo_alt

Come illustrato nel diagramma sopra, GameActivity esegue le seguenti funzioni:

  • Interazione con il framework Android tramite il componente lato Java.
  • Trasmissione di comandi di ciclo dell'app, eventi di input e input di testo 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 accodano gli eventi a 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 del gioco all'interno del thread native_app_glue.

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

Se conosci già NativeActivity, le principali differenze tra GameActivity e NativeActivity sono le seguenti:

  • GameActivity esegue il rendering in una SurfaceView, semplificando l'interazione dei giochi con altri componenti dell'interfaccia utente.
  • Per gli eventi di input tocco e tasto, GameActivity ha un'implementazione completamente nuova con l'interfaccia android_input_buffer, separata dalla InputQueue utilizzata da NativeActivity.
  • GameActivity è una classe derivata di AppCompatActivity, che consente di utilizzare senza interruzioni altri componenti Jetpack. ActionBar, Fragment e altri sono tutti disponibili.
  • GameActivity aggiunge funzionalità di input di testo integrando la libreria GameTextInput.
  • Le app derivate da GameActivity dovrebbero creare tutte e tre le parti di codice C/C++ in un'unica libreria. D'altra parte, le funzioni JNI di NativeActivity fanno parte del framework (sempre caricate dal sistema operativo). Di conseguenza, solo il codice native_app_glue e il codice C/C++ dell'applicazione devono essere integrati in un'unica libreria.
  • NativeActivity fa parte del framework Android e segue il suo 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 raccolta GameActivity è disponibile nei seguenti canali:

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

Contenuto della raccolta Jetpack e del pacchetto zip AGDK

Con la raccolta Jetpack e i canali dei pacchetti zip AGDK, GameActivity viene rilasciato con un AAR. Questo AAR contiene i seguenti componenti principali:

  • Un file JAR per il codice Java
  • La libreria C/C++static 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 rimanda questa pagina presuppongono che tu possa utilizzare Prefab nel tuo sistema di build; in caso contrario, puoi copiare il codice sorgente incluso 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, gradile decomprime gli AAR nella directory della cache (~/.gradle/caches/...). Puoi trovare il codice sorgente C/C++ cercando prefab/modules/game-activity/include e scegliendo la posizione nella versione della release desiderata.

Per istruzioni sull'integrazione tramite la libreria Jetpack, consulta la guida introduttiva all'utilizzo di GameActivity.

Per il pacchetto postale della libreria AGDK, segui questi passaggi per ottenere il codice C/C++:

  1. Decomprimi il pacchetto scaricato.
  2. Nel pacchetto decompresso, decomprimi GameActivity-release.aar.
  3. Trova e copia tutto il codice sorgente C/C++ in prefab/modules/game-activity/include, incluso quanto segue:
    • game-activity per il codice C/C++ correlato a GameActivity
    • game-text-input per il codice C/C++ correlato a GameTextInput

Contenuti del codice sorgente AOSP

AOSP contiene sempre il codice sorgente più recente. Segui le istruzioni per la build per creare le tue release o per integrare direttamente il codice sorgente nell'ambiente di build. 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 le seguenti risorse:

Feedback

Per segnalare bug o richiedere nuove funzionalità a GameActivity, utilizza il tracker dei problemi GameActivity.