GameActivity   Część Android Game Development Kit.

GameActivity to biblioteka Jetpack, która pomaga grom w Androidzie przetwarzać polecenia cyklu życia aplikacji, zdarzenia wejściowe i wprowadzanie tekstu w kodzie C/C++ aplikacji. GameActivity jest bezpośrednim następcą elementu NativeActivity i ma podobną architekturę:

alt_text

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

  • Interakcja z platformą Androida za pomocą komponentu po stronie Javy.
  • Przekazywanie poleceń cyklu życia aplikacji, zdarzeń wprowadzania danych i tekstu do części natywnej.
  • Modelowanie kodu źródłowego C/C++ w 3 komponentach logicznych:
    • funkcje JNI GameActivity, które bezpośrednio obsługują funkcje Java GameActivity i umieszczają zdarzenia w kolejce native_app_glue.
    • native_app_glue, który działa głównie we własnym wątku natywnym (innym niż wątek główny aplikacji) i wykonuje zadania za pomocą pętli.
    • Kod gry aplikacji, który odpytuje i przetwarza zdarzenia umieszczone w kolejce w native_app_glue i wykonuje kod gry w wątku native_app_glue.

Dzięki GameActivity możesz skupić się na tworzeniu podstawowych elementów gry i uniknąć spędzania zbyt dużej ilości czasu na kodzie JNI.

Jeśli znasz już NativeActivity, główne różnice między GameActivityNativeActivity są następujące:

  • GameActivity jest renderowany jako SurfaceView, co znacznie ułatwia grom interakcję z innymi komponentami interfejsu.
  • W przypadku zdarzeń związanych z dotykiem i wprowadzaniem danych z klawiatury GameActivity ma zupełnie nową implementację z interfejsem android_input_buffer, oddzielną od interfejsu InputQueue, z którego korzysta NativeActivity.
  • GameActivity to klasa pochodna klasy AppCompatActivity, która umożliwia bezproblemowe korzystanie z innych komponentów Jetpack. Dostępne są m.in. ActionBar, Fragment i inne.
  • GameActivity dodaje funkcję wprowadzania tekstu przez integrację biblioteki GameTextInput.
  • Aplikacje pochodzące z GameActivity powinny kompilować wszystkie 3 części kodu C/C++ w jedną bibliotekę. Z drugiej strony funkcje JNI NativeActivity są częścią platformy (zawsze ładowane przez system operacyjny). Dlatego tylko kod native_app_glue i kod C/C++ aplikacji powinny być kompilowane w jedną bibliotekę.
  • NativeActivity jest częścią platformy Android i jest udostępniana zgodnie z jej cyklem wydawniczym (zwykle co roku). GameActivity jest częścią biblioteki Jetpack, która ma znacznie częstszy cykl wydawniczy (zwykle co 2 tygodnie), dzięki czemu nowe funkcje i poprawki błędów mogą pojawiać się znacznie szybciej.

Lokalizacje zwolnienia

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

Kod C/C++ jest udostępniany jako kod źródłowy we wszystkich kanałach dystrybucji w formacie Prefab. Wersja 1.2.2 biblioteki GameActivity dodaje do dystrybucji bibliotekę statyczną. Od tej wersji zalecamy używanie biblioteki statycznej zamiast kodu źródłowego.

Zawartość biblioteki Jetpack i pakietu ZIP AGDK

W przypadku biblioteki Jetpack i kanałów pakietu ZIP AGDK GameActivity jest udostępniana w formacie AAR. Ten plik AAR zawiera te główne komponenty:

  • plik JAR z kodem Java,
  • Statyczna biblioteka C/C++game-activity_static jest dołączona do GameActivity w wersji 1.2.2 i nowszych.
  • Kod źródłowy C/C++ (w folderze /prefab)

Instrukcje integracji, do których linki znajdziesz na tej stronie, zakładają, że możesz używać Prefab w systemie kompilacji. W przeciwnym razie możesz skopiować kod źródłowy spakowany w folderze prefab/modules/game-activity/include do systemu kompilacji i wykonać niezbędne kroki integracji. Podobna struktura plików istnieje w przypadku wersji biblioteki Android Jetpack w androidx. Domyślnie Gradle rozpakowuje pliki AAR w katalogu pamięci podręcznej (~/.gradle/caches/...). Kod źródłowy C/C++ znajdziesz, wyszukując prefab/modules/game-activity/include i wybierając lokalizację w odpowiedniej wersji.

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

Zawartość kodu źródłowego AOSP

AOSP zawsze zawiera najnowszy kod źródłowy. Postępuj zgodnie z instrukcjami kompilacji, aby tworzyć własne wersje, lub bezpośrednio zintegruj źródło ze środowiskiem kompilacji. Kod źródłowy C/C++ jest zapisywany w strukturze plików podobnej do tej w przypadku biblioteki Jetpack i pakietu ZIP AGDK.

Przewodniki po integracji

Aby zintegrować GameActivity z aplikacjami, postępuj zgodnie z tymi przewodnikami:

Dodatkowe materiały

Więcej informacji o GameActivity znajdziesz w tych artykułach:

Opinia

Aby zgłosić błędy lub poprosić o dodanie nowych funkcji do GameActivity, użyj narzędzia do śledzenia problemów z GameActivity.