GameActivity Parte del Android Game Development Kit.
GameActivity
è una libreria Jetpack progettata per aiutare i giochi Android a elaborare comandi del ciclo delle 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 precedente, GameActivity
esegue le seguenti
funzioni:
- Interazione con il framework Android tramite il componente lato Java.
- Passaggio di comandi di ciclo dell'app, eventi di input e input di testo al lato nativo.
- Modellare il 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 suo 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 threadnative_app_glue
.
- Le funzioni JNI di GameActivity, che supportano direttamente la funzionalità Java di GameActivity e accodano gli eventi a
Con GameActivity
, puoi concentrarti sullo sviluppo del tuo gioco principale ed evitare
di perdere tempo eccessivo con il codice JNI.
Se conosci già NativeActivity
, le principali differenze
tra GameActivity
e NativeActivity
sono le seguenti:
GameActivity
esegue il rendering in unaSurfaceView
, 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'interfacciaandroid_input_buffer
, separata dallaInputQueue
utilizzata daNativeActivity
. GameActivity
è una classe derivata diAppCompatActivity
, che consente di utilizzare senza problemi 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
devono creare tutte e tre le parti di codice C/C++ in un'unica libreria. D'altra parte, le funzioni JNI diNativeActivity
fanno parte del framework (sempre caricate dal sistema operativo). Di conseguenza, solo il codicenative_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 (di solito ogni due settimane); nuove funzionalità e correzioni di bug possono arrivare molto più rapidamente.
Località di rilascio
La raccolta GameActivity
è disponibile nei seguenti canali:
- Come parte della libreria Android Jetpack (opzione consigliata)
- Come pacchetto ZIP, scaricabile dalla pagina di download di AGDK
- Come codice sorgente AOSP
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 e successive, ti consigliamo di utilizzare la libreria statica anziché il codice sorgente.
Contenuti della raccolta Jetpack e del pacchetto zip AGDK
Con la libreria 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 nella versione 1.2.2 e successive di GameActivity. - Codice sorgente C/C++ (nella cartella
/prefab
)
Le istruzioni di integrazione collegate in questa pagina presuppongono che tu possa utilizzare
Prefab nel tuo sistema di build; in caso contrario, puoi copiare il codice sorgente pacchettizzato
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 sua 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++:
- Decomprimi il pacchetto scaricato.
- Nel pacchetto decompresso, decomprimi GameActivity-release.aar.
- 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 aGameActivity
game-text-input
per il codice C/C++ correlato aGameTextInput
Contenuto del codice sorgente AOSP
L'AOSP contiene sempre il codice sorgente più recente. Segui le istruzioni di build per creare release personalizzate o per integrare direttamente l'origine 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 saperne di più su GameActivity
, consulta le seguenti risorse:
- 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à a GameActivity, utilizza l'Issue Tracker di GameActivity.