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:

testo_alt

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 thread native_app_glue.

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 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 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 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 (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:

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++:

  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

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:

Feedback

Per segnalare bug o richiedere nuove funzionalità a GameActivity, utilizza l'Issue Tracker di GameActivity.