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:

alt_text

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 thread native_app_glue.

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 menjadi SurfaceView, yang memudahkan game untuk berinteraksi dengan komponen UI lainnya.
  • Untuk peristiwa input sentuh dan kunci, GameActivity memiliki implementasi yang benar-benar baru dengan antarmuka android_input_buffer, terpisah dari InputQueue yang digunakan oleh NativeActivity.
  • GameActivity adalah class turunan AppCompatActivity 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 JNI NativeActivity adalah bagian dari framework (selalu dimuat oleh OS). Oleh karena itu, hanya native_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:

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++:

  1. Ekstrak paket yang didownload.
  2. Dalam paket yang diekstrak, ekstrak zip GameActivity-release.aar.
  3. Temukan dan salin semua kode sumber C/C++ pada prefab/modules/game-activity/include, termasuk kode berikut:
    • game-activity untuk GameActivity kode C/C++ terkait
    • game-text-input untuk GameTextInput 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 lainnya

Untuk mempelajari GameActivity lebih lanjut, lihat referensi berikut:

Masukan

Untuk melaporkan bug atau meminta fitur baru ke GameActivity, gunakan issue tracker GameActivity.