GameActivity Bagian dari Android Game Development Kit.
GameActivity
adalah library Jetpack yang didesain
untuk membantu game Android dalam memproses perintah siklus aplikasi, peristiwa input, dan input
teks dalam kode C/C++ aplikasi. GameActivity
adalah turunan langsung dari
NativeActivity
dan memiliki arsitektur
yang serupa:
Seperti yang digambarkan dalam diagram di atas, GameActivity
menjalankan fungsi
berikut:
- Berinteraksi dengan framework Android melalui komponen sisi Java.
- Meneruskan perintah siklus aplikasi, peristiwa input, dan teks input ke sisi native.
- Memodelkan kode sumber C/C++ menjadi tiga komponen logis:
- Fungsi JNI GameActivity, yang secara langsung mendukung fungsi Java
GameActivity dan mengantrekan peristiwa ke
native_app_glue
. native_app_glue
, yang sebagian besar berjalan di thread native-nya (berbeda dengan thread utama aplikasi), dan menjalankan tugas dengan looper-nya.- Kode game aplikasi, yang melakukan polling dan memproses peristiwa dalam antrean
di
native_app_glue
dan menjalankan kode game dalam threadnative_app_glue
.
- Fungsi JNI GameActivity, yang secara langsung mendukung fungsi Java
GameActivity dan mengantrekan peristiwa ke
Dengan GameActivity
, Anda dapat berfokus pada pengembangan game inti dan tidak
menghabiskan terlalu banyak waktu untuk menangani kode JNI.
Jika Anda sudah terbiasa dengan NativeActivity
, perbedaan utama
antara GameActivity
dan NativeActivity
adalah sebagai berikut:
GameActivity
dirender menjadiSurfaceView
, yang memudahkan game untuk berinteraksi dengan komponen UI lainnya.- Untuk peristiwa input sentuh dan kunci,
GameActivity
memiliki implementasi yang benar-benar baru dengan antarmukaandroid_input_buffer
, terpisah dariInputQueue
yang digunakan olehNativeActivity
. GameActivity
adalah class turunanAppCompatActivity
yang memungkinkan Anda menggunakan komponen Jetpack lainnya dengan lancar.ActionBar
,Fragment
, dan lainnya tersedia.GameActivity
menambahkan fungsi input teks dengan mengintegrasikan library GameTextInput.- Aplikasi yang berasal dari
GameActivity
diharapkan mem-build ketiga bagian kode C/C++ menjadi satu library. Di sisi lain, fungsi JNINativeActivity
adalah bagian dari framework (selalu dimuat oleh OS). Oleh karena itu, hanyanative_app_glue
dan kode C/C++ aplikasi yang diharapkan di-build ke dalam satu library. NativeActivity
adalah bagian dari framework Android dan mengikuti siklus rilisnya (biasanya tahunan).GameActivity
adalah bagian dari library Jetpack, yang memiliki siklus rilis yang jauh lebih sering (biasanya setiap dua minggu). Fitur baru dan perbaikan bug dapat hadir jauh lebih cepat.
Lokasi rilis
Library GameActivity
tersedia di saluran berikut:
- Sebagai bagian dari library Android Jetpack (direkomendasikan)
- Sebagai paket ZIP yang dapat didownload dari halaman download AGDK
- Sebagai kode sumber AOSP
Kode C/C++ diberikan sebagai kode sumber di semua saluran rilis, menggunakan format Prefab. GameActivity versi 1.2.2 menambahkan library statis ke distribusi. Mulai versi ini dan selanjutnya, sebaiknya gunakan library statis, bukan kode sumber.
Konten library Jetpack dan paket zip AGDK
Dengan library Jetpack dan saluran paket zip AGDK, GameActivity dirilis dengan AAR. AAR ini berisi komponen utama berikut:
- File JAR untuk kode Java
- Library statis C/C++
game-activity_static
disertakan dalam GameActivity versi 1.2.2 dan yang lebih baru. - Kode sumber C/C++ (dalam folder
/prefab
)
Petunjuk integrasi yang ditautkan dari halaman ini mengasumsikan bahwa Anda dapat menggunakan
Prefab di sistem build; jika tidak, Anda dapat menyalin kode sumber yang dikemas
dalam folder prefab/modules/game-activity/include
ke dalam sistem build
dan melakukan langkah-langkah integrasi yang diperlukan. Struktur file yang serupa ada untuk
rilis pada androidx
untuk library Android Jetpack; secara default,
gradle mengekstrak AAR dalam direktori cachenya (~/.gradle/caches/...). Anda dapat menemukan
kode sumber C/C++ dengan menelusuri prefab/modules/game-activity/include
dan memilih lokasi pada versi rilis yang diinginkan.
Untuk petunjuk integrasi menggunakan library Jetpack, lihat Mulai menggunakan GameActivity.
Untuk paket zip library AGDK, ikuti langkah-langkah berikut untuk mendapatkan kode C/C++:
- Ekstrak paket yang didownload.
- Dalam paket yang diekstrak, ekstrak zip GameActivity-release.aar.
- Temukan dan salin semua kode sumber C/C++ pada
prefab/modules/game-activity/include
, termasuk kode berikut:game-activity
untukGameActivity
kode C/C++ terkaitgame-text-input
untukGameTextInput
kode C/C++ terkait
Konten kode sumber AOSP
AOSP selalu berisi kode sumber terbaru. Ikuti petunjuk build untuk membuat rilis Anda sendiri atau langsung mengintegrasikan sumber ke lingkungan build Anda. Kode sumber C/C++ disimpan dalam struktur file yang serupa dengan yang ada untuk library Jetpack dan paket zip AGDK.
Panduan integrasi
Ikuti panduan tersebut untuk mengintegrasikan GameActivity
ke dalam aplikasi Anda:
Referensi tambahan
Untuk mempelajari GameActivity
lebih lanjut, lihat referensi berikut:
- Catatan rilis GameActivity dan AGDK.
- Menggunakan GameTextInput di GameActivity.
- Panduan migrasi NativeActivity.
- Dokumentasi referensi GameActivity.
- Implementasi GameActivity.
Masukan
Untuk melaporkan bug atau meminta fitur baru ke GameActivity, gunakan issue tracker GameActivity.