GameActivity   Należy do Android Game Development Kit.

GameActivity to biblioteka Jetpack, która pomaga w przetwarzaniu poleceń cyklu aplikacji, zdarzeń wejściowych i tekstu w kodzie aplikacji C/C++. GameActivity jest bezpośrednim potomkiem NativeActivity i ma podobną architekturę:

alt_text

Jak widać na diagramie powyżej, GameActivity wykonuje te funkcje:

  • Interakcja z platformą Android za pomocą komponentu po stronie Java.
  • Przekazywanie poleceń cyklu aplikacji, zdarzeń wprowadzania danych i tekstu do strony natywnej.
  • Modelowanie kodu źródłowego C/C++ w 3 elementy logiczne:
    • Funkcje JNI GameActivity, które bezpośrednio obsługują funkcjonalność GameActivity w języku Java i umieszczają zdarzenia w kole native_app_glue.
    • native_app_glue, który działa głównie w ramach własnego wątku natywnego (różnego od wątku głównego aplikacji) i wykonuje zadania za pomocą swojego loopera.
    • Kod gry aplikacji, który odczytuje i przetworzy kolejkę zdarzeń w procesie native_app_glue oraz wykona kod gry w wątku native_app_glue.

Dzięki GameActivity możesz skupić się na tworzeniu gry, a nie na kodowaniu JNI.

Jeśli znasz już NativeActivity, oto główne różnice między GameActivity a NativeActivity:

  • GameActivity renderuje się do SurfaceView, co znacznie ułatwia interakcję gier z innymi elementami interfejsu.
  • W przypadku zdarzeń dotykowych i związanych z wprowadzaniem tekstu GameActivity używa zupełnie nowego interfejsu android_input_buffer, który jest oddzielony od interfejsu InputQueue używanego przez NativeActivity.
  • GameActivity to klasa pochodna klasy AppCompatActivity, która umożliwia bezproblemowe korzystanie z innych komponentów Jetpacka. Dostępne są ActionBar, Fragment i inne.
  • GameActivity dodaje funkcję wprowadzania tekstu przez zintegrowanie biblioteki GameTextInput.
  • Aplikacje utworzone na podstawie GameActivity powinny zawierać wszystkie 3 części kodu C/C++ w jednej bibliotece. Z drugiej strony funkcje JNI NativeActivity są częścią platformy (zawsze ładowane przez system operacyjny). Dlatego do jednej biblioteki należy skompilować tylko kod native_app_glue i kod aplikacji w języku C/C++.
  • NativeActivity jest częścią platformy Android i podąża za jej cyklem wydawniczym (zwykle co roku). GameActivity jest częścią biblioteki Jetpack, która ma znacznie częstszy cykl wydawniczy (zazwyczaj co 2 tygodnie). Nowe funkcje i poprawki błędów mogą być wprowadzane znacznie szybciej.

Miejsca dozwolonego zwolnienia

Biblioteka GameActivity jest dostępna w tych kanałach:

Kod C/C++ jest dostarczany jako kod źródłowy we wszystkich kanałach wersji w formacie Prefab. Wersja 1.2.2 biblioteki GameActivity zawiera stałą bibliotekę w rozprowadzaniu. Od tej wersji i później zalecamy używanie biblioteki statycznej zamiast kodu źródłowego.

Zawartość biblioteki Jetpack i pliku ZIP AGDK

W przypadku kanałów pakietów zip biblioteki Jetpack i AGDK aktywność gry jest publikowana z AAR. Ten raport zawiera te główne komponenty:

  • plik JAR z kodem w języku Java,
  • Biblioteka statyczna C/C++ game-activity_static jest dołączona do GameActivity w wersji 1.2.2 lub nowszej.
  • Kod źródłowy C/C++ (w folderze /prefab)

Instrukcje integracji dostępne na tej stronie zakładają, że możesz używać Prefab w systemie kompilacji. W przeciwnym razie możesz skopiować zapakowany w folderze prefab/modules/game-activity/include kod źródłowy do systemu kompilacji i wykonywać niezbędne czynności integracyjne. Podobna struktura plików występuje w przypadku wersji w folderze androidx dla biblioteki Jetpack na Androida. Domyślnie Gradle rozpakowuje pliki AAR w swojej lokalizacji pamięci podręcznej (~/.gradle/caches/...). Kod źródłowy C/C++ znajdziesz, wyszukując prefab/modules/game-activity/includei wybierając lokalizację w ramach wybranej wersji.

Instrukcje dotyczące integracji za pomocą biblioteki Jetpack znajdziesz w artykule Pierwsze kroki z GameActivity.

Treść kodu źródłowego AOSP

AOSP zawiera zawsze najnowszy kod źródłowy. Aby utworzyć własne wersje, postępuj zgodnie z instrukcjami dotyczącymi kompilacji lub zintegruj źródło bezpośrednio ze środowiskiem kompilacji. Kod źródłowy C/C++ jest zapisywany w strukturze plików podobnej do tej używanej w bibliotece Jetpack i pakiecie ZIP AGDK.

Przewodniki integracji

Aby zintegrować GameActivity z aplikacją, postępuj zgodnie z tymi instrukcjami:

Dodatkowe materiały

Aby dowiedzieć się więcej o GameActivity, zapoznaj się z tymi materiałami:

Opinia

Aby zgłaszać błędy lub prosić o dodanie nowych funkcji w GameActivity, użyj problem trackera GameActivity.