GameActivity   Teil des Android Game Development Kits.

GameActivity ist eine Jetpack-Bibliothek, die Android-Spielen bei der Verarbeitung von App-Zyklusbefehlen, Eingabeereignissen und Texteingaben im C/C++-Code der Anwendung hilft. GameActivity ist ein direkter Abkömmling von NativeActivity und hat eine ähnliche Architektur:

alt_text

Wie im Diagramm oben dargestellt, führt GameActivity die folgenden Funktionen aus:

  • Interaktion mit dem Android-Framework über die Java-Komponente
  • App-Zyklusbefehle, Eingabeereignisse und Eingabetext an die native Seite übergeben.
  • C/C++-Quellcode in drei logische Komponenten modellieren:
    • Die JNI-Funktionen von GameActivity, die die Java-Funktionen von GameActivity direkt unterstützen und die Ereignisse in native_app_glue einreihen.
    • native_app_glue, der hauptsächlich in einem eigenen nativen Thread (im Gegensatz zum Hauptthread der Anwendung) ausgeführt wird und Aufgaben mit seinem Looper ausführt.
    • Der Gamecode der Anwendung, der die in native_app_glue anstehenden Ereignisse abfragt und verarbeitet und den Gamecode im native_app_glue-Thread ausführt.

Mit GameActivity können Sie sich auf die Kernentwicklung Ihres Spiels konzentrieren und müssen nicht zu viel Zeit mit dem JNI-Code verbringen.

Wenn Sie bereits mit NativeActivity vertraut sind, sind die Hauptunterschiede zwischen GameActivity und NativeActivity folgende:

  • GameActivity wird in eine SurfaceView gerendert, was die Interaktion von Spielen mit anderen UI-Komponenten erheblich erleichtert.
  • Für Touch- und Tastatureingaben hat GameActivity eine völlig neue Implementierung mit der android_input_buffer-Oberfläche, die unabhängig von der InputQueue ist, die NativeActivity verwendet.
  • GameActivity ist eine abgeleitete Klasse von AppCompatActivity, mit der Sie andere Jetpack-Komponenten nahtlos verwenden können. ActionBar, Fragment und weitere sind verfügbar.
  • GameActivity bietet eine Texteingabefunktion, da die Bibliothek „GameTextInput“ eingebunden ist.
  • Bei Apps, die von GameActivity abgeleitet sind, werden alle drei Teile des C/C++-Codes in einer Bibliothek erstellt. Die JNI-Funktionen von NativeActivity sind dagegen Teil des Frameworks und werden immer vom Betriebssystem geladen. Daher wird nur der C/C++-Code von native_app_glue und der Anwendung in eine Bibliothek eingebunden.
  • NativeActivity ist Teil des Android-Frameworks und folgt dem Release-Zyklus (in der Regel jährlich). GameActivity ist Teil der Jetpack-Bibliothek, die einen viel häufigeren Release-Zyklus hat (in der Regel alle zwei Wochen). Neue Funktionen und Fehlerkorrekturen können also viel schneller verfügbar sein.

Veröffentlichungsorte

Die GameActivity-Bibliothek ist in den folgenden Kanälen verfügbar:

Der C/C++-Code wird in allen Release-Kanälen als Quellcode im Prefab-Format bereitgestellt. In GameActivity Version 1.2.2 wird der Distribution eine statische Bibliothek hinzugefügt. Ab dieser Version empfehlen wir die Verwendung der statischen Bibliothek anstelle des Quellcodes.

Inhalt der Jetpack-Bibliothek und des AGDK-ZIP-Pakets

Bei den Zip-Paketkanälen der Jetpack-Bibliothek und der AGDK wird GameActivity mit einem AAR veröffentlicht. Diese AAR enthält die folgenden Hauptkomponenten:

  • Eine JAR-Datei für Java-Code
  • Die C/C++-Static-Bibliothek game-activity_static ist in GameActivity-Version 1.2.2 und höher enthalten.
  • C/C++-Quellcode (im Ordner /prefab)

In der Integrationsanleitung, die von dieser Seite verlinkt ist, wird davon ausgegangen, dass Sie Prefab in Ihrem Build-System verwenden können. Andernfalls können Sie den im Ordner prefab/modules/game-activity/include verpackten Quellcode in Ihr Build-System kopieren und die erforderlichen Integrationsschritte ausführen. Für die Releases unter androidx der Android Jetpack-Bibliothek gibt es eine ähnliche Dateistruktur. Standardmäßig entpackt Gradle AARs in seinem Cache-Verzeichnis (~/.gradle/caches/...). Sie können den C/C++-Quellcode finden, indem Sie nach prefab/modules/game-activity/include suchen und den Speicherort unter der gewünschten Release-Version auswählen.

Eine Anleitung zur Integration mit der Jetpack-Bibliothek finden Sie unter Erste Schritte mit GameActivity.

Inhalt des AOSP-Quellcodes

AOSP enthält immer den neuesten Quellcode. Folgen Sie der Buildanleitung, um eigene Releases zu erstellen, oder integrieren Sie die Quelle direkt in Ihre Buildumgebung. Der C/C++-Quellcode wird in einer Dateistruktur gespeichert, die der der Jetpack-Bibliothek und dem AGDK-ZIP-Paket ähnelt.

Integrationsanleitungen

Folgen Sie diesen Anleitungen, um GameActivity in Ihre Anwendungen einzubinden:

Zusätzliche Ressourcen

Weitere Informationen zu GameActivity finden Sie unter den folgenden Links:

Feedback

Wenn Sie Fehler melden oder neue Funktionen für GameActivity anfordern möchten, verwenden Sie den GameActivity-Issue Tracker.