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:
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 delnative_app_glue
thread.
- Le funzioni JNI di GameActivity, che supportano direttamente la funzionalità Java di GameActivity e mettono in coda gli eventi per
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 comeSurfaceView
, 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'interfacciaandroid_input_buffer
, distinta daInputQueue
utilizzata daNativeActivity
. GameActivity
è una classe derivata daAppCompatActivity
, 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 diNativeActivity
fanno parte del framework (caricato sempre dal sistema operativo). Di conseguenza, solo il codice C/C++ dinative_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:
- Nell'ambito della libreria Android Jetpack (opzione consigliata)
- Come codice sorgente AOSP
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:
- Note di rilascio di GameActivity e AGDK.
- Utilizza GameTextInput in GameActivity.
- Guida alla migrazione di NativeActivity.
- Documentazione di riferimento di GameActivity.
- Implementazione di GameActivity.
Feedback
Per segnalare bug o richiedere nuove funzionalità per GameActivity, utilizza lo strumento di monitoraggio dei problemi di GameActivity.