GameActivity Część pakietu Android Game Development Kit.

GameActivity to biblioteka Jetpack, która ułatwia grom na Androida przetwarzanie poleceń cyklu aplikacji, zdarzeń wejściowych i tekstu w kodzie C/C++ aplikacji. GameActivity jest bezpośrednim potomkiem elementu NativeActivity i ma podobną architekturę:

tekst_alternatywny

Jak widać na tym diagramie, GameActivity wykonuje te funkcje:

  • Interakcja z platformą Androida za pomocą komponentu po stronie Java.
  • Przekazywanie poleceń cyklu aplikacji, zdarzeń wejściowych i tekstu wejściowego na stronę oryginalną.
  • Modelowanie kodu źródłowego w języku C/C++ na 3 komponenty logiczne:
    • Funkcje JNI interfejsu GameActivity, które bezpośrednio obsługują funkcje Java usługi GameActivity i dodają zdarzenia do kolejki zdarzeń native_app_glue.
    • native_app_glue, który działa głównie we własnym wątku natywnym (innym niż główny wątek aplikacji) i wykonuje zadania przy użyciu swojego loopera.
    • Kod gry w aplikacji, który sonduje i przetwarza zdarzenia znajdujące się w kolejce w elemencie native_app_glue, a potem wykonuje kod gry w wątku native_app_glue.

Dzięki GameActivity możesz skupić się na tworzeniu podstawowej gry i nie tracić czasu na zajmowanie się kodem JNI.

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

  • GameActivity renderuje się w elemencie SurfaceView, co znacznie ułatwia interakcję gier z innymi komponentami interfejsu.
  • W przypadku zdarzeń dotyku i kluczowych zdarzeń wejściowych funkcja GameActivity ma zupełnie nową implementację w interfejsie android_input_buffer, niezależną od InputQueue, z którego korzysta NativeActivity.
  • GameActivity to klasa derywowana AppCompatActivity, która pozwala na płynne korzystanie z innych komponentów Jetpacka. ActionBar, Fragment i inne są dostępne.
  • GameActivity dodaje funkcję wprowadzania tekstu przez integrację biblioteki GameTextInput.
  • Aplikacje utworzone na podstawie GameActivity powinny kompilować wszystkie 3 części kodu C/C++ w jedną bibliotekę. Z drugiej strony funkcje JNI w NativeActivity są częścią platformy (zawsze ładowane przez system operacyjny). Dlatego tylko kod native_app_glue i kod C/C++ aplikacji powinny być wbudowane w jedną bibliotekę.
  • NativeActivity to część platformy Androida i przebiega zgodnie z cyklem publikowania (zwykle co rok). GameActivity to część biblioteki Jetpacka, która ma znacznie częstszy cykl publikowania (zwykle co 2 tygodnie). Nowe funkcje i poprawki błędów pojawiają się znacznie szybciej.

Lokalizacje wersji

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

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

Zawartość biblioteki Jetpack i pakietu ZIP AGDK

Dzięki bibliotece Jetpack i kanałom z pakietami zip AGDK GameActivity jest publikowany wraz z automatycznym stosowaniem rekomendacji. Ten AAR składa się z następujących głównych komponentów:

  • Plik JAR z kodem Java
  • Biblioteka statyczna C/C+ game-activity_static jest zawarta w GameActivity w wersji 1.2.2 i nowszych.
  • Kod źródłowy C/C++ (w folderze /prefab)

W instrukcjach integracji, do których link znajdziesz na tej stronie, zakładamy, że możesz używać prefab w swoim systemie kompilacji. W przeciwnym razie możesz skopiować do swojego systemu kompilacji kod źródłowy spakowany z folderu prefab/modules/game-activity/include i wykonać niezbędne czynności integracji. Podobna struktura plików ma zastosowanie w przypadku wersji w androidx biblioteki Android Jetpack. Domyślnie Gradle rozpakowuje AAR w swoim katalogu pamięci podręcznej (~/.gradle/caches/...). Aby znaleźć kod źródłowy w języku C/C++, wyszukaj ciąg prefab/modules/game-activity/include i pobierz lokalizację z planowanej wersji.

Instrukcje integracji z użyciem biblioteki Jetpack znajdziesz w artykule o pierwszych krokach z GameActivity.

W przypadku pakietu pocztowego biblioteki AGDK wykonaj te czynności, aby uzyskać kod C/C++:

  1. Rozpakuj pobrany pakiet.
  2. W rozpakowanym pakiecie rozpakuj plik GameActivity-release.aar.
  3. Znajdź i skopiuj cały kod źródłowy C/C++ w sekcji prefab/modules/game-activity/include, który zawiera następujące elementy:
    • game-activity dla GameActivity powiązanego kodu C/C++
    • game-text-input dla GameTextInput powiązanego kodu C/C++

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 zintegrować źródło bezpośrednio ze środowiskiem kompilacji. Kod źródłowy C/C++ jest zapisywany w strukturze plików podobnej do tej w bibliotece Jetpack i w pakiecie ZIP AGDK.

Przewodniki dotyczące integracji

Postępuj zgodnie z tymi przewodnikami, aby zintegrować usługę GameActivity ze swoimi aplikacjami:

Dodatkowe materiały

Więcej informacji o GameActivity znajdziesz tutaj:

Opinia

Jeśli chcesz zgłosić błędy lub poprosić o nowe funkcje w GameActivity, skorzystaj z narzędzia do śledzenia problemów z GameActivity.