GameActivity Android Game Development Kit 提供的一項工具

GameActivity 是 Jetpack 程式庫,旨在協助 Android 遊戲處理應用程式 C/C++ 程式碼中的應用程式週期指令、輸入事件和文字輸入內容。GameActivityNativeActivity 的直接子系,具有相似的架構:

alt_text

如上圖所示,GameActivity 會執行下列函式:

  • 透過 Java 端元件與 Android 架構互動。
  • 將應用程式週期指令、輸入事件和輸入文字傳遞至原生端。
  • 將 C/C++ 原始碼建模為三個邏輯元件:
    • GameActivity 的 JNI 函式,可直接支援 GameActivity 的 Java 功能,並將事件排入 native_app_glue
    • native_app_glue 主要在其原生執行緒 (與應用程式的主要執行緒不同) 中執行,並透過其循環器執行工作。
    • 應用程式的遊戲程式碼會輪詢並處理在 native_app_glue 中加入佇列的事件,並在 native_app_glue 執行緒中執行遊戲程式碼。

使用 GameActivity 時,您可以專注於核心遊戲開發,避免花費太多時間處理 JNI 程式碼。

如果您已經熟悉 NativeActivityGameActivityNativeActivity 之間的主要差異如下:

  • GameActivity 會轉譯為 SurfaceView,讓遊戲更容易與其他 UI 元件互動。
  • 如果是觸控和按鍵輸入事件,不同於 NativeActivity 使用的 InputQueueGameActivity 具有包含 android_input_buffer 介面的全新實作。
  • GameActivity 是衍生的 AppCompatActivity 類別,可讓您流暢地使用其他 Jetpack 元件。ActionBarFragment 等均可使用。
  • GameActivity 整合 GameTextInput Library 來新增文字輸入功能。
  • GameActivity 衍生的應用程式應將三個部分的 C/C++ 程式碼全都建構到一個程式庫中。另一方面,NativeActivity 的 JNI 函式屬於架構的一部分 (一律由 OS 載入)。因此,只有 native_app_glue 和應用程式的 C/C++ 程式碼會建構在同一個程式庫中。
  • NativeActivity 屬於 Android 架構的一部分,並且遵循發布週期 (通常為每年一次)。GameActivity 是 Jetpack 程式庫的一部分,其具有更頻繁的發布週期 (通常為每兩週一次);推出新功能和錯誤修正的速度更快。

發布位置

您可以藉由以下管道取得 GameActivity 程式庫:

在所有發布版本中,C/C++ 程式碼都是以原始碼的形式提供,採用 Prefab 格式。GameActivity 1.2.2 版的發布內容加入了一個靜態資料庫。如果您使用這個版本和之後的版本,建議您優先使用靜態資料庫,不要使用原始碼。

Jetpack 程式庫和 AGDK zip 套件內容

透過 Jetpack 程式庫和 AGDK zip 套件管道發布 GameActivity 時,會包含一個 AAR。這個 AAR 內含以下主要元件:

  • Java 程式碼用的 JAR 檔案
  • GameActivity 1.2.2 以上版本附有 C/C++ 靜態資料庫 game-activity_static
  • C/C++ 原始碼 (在 /prefab 資料夾內)

在本頁面連結的整合操作說明中,假設您可以在建構系統中使用 Prefab,如果無法使用,您可以將 prefab/modules/game-activity/include 資料夾內封裝的原始碼複製到建構系統內,然後執行必要的整合步驟。Android Jetpack 程式庫 androidx 所提供的版本也有類似的結構,Gradle 預設會在快取目錄 (~/.gradle/caches/...) 中解開 AAR。只要搜尋 prefab/modules/game-activity/include,然後選擇所需發布版本下的位置,即可找到 C/C++ 原始碼。

如要瞭解如何使用 Jetpack 程式庫進行整合,請參閱「開始使用 GameActivity」。

對於 AGDK 程式庫 zip 套件,請按照下列步驟取得 C/C++ 程式碼:

  1. 解壓縮下載的套件。
  2. 在解壓縮完畢的套件中,找到 GameActivity-release.aar 並解壓縮。
  3. prefab/modules/game-activity/include 中找出並複製所有 C/C++ 原始碼,包括以下內容:
    • GameActivity 相關 C/C++ 程式碼為 game-activity
    • GameTextInput 相關 C/C++ 程式碼為 game-text-input

Android 開放原始碼計畫的原始碼內容

Android 開放原始碼計畫一律都會內附最新版的原始碼。請按照「建構說明」建立自己的版本,或直接把原始碼整合到建構環境內。C/C++ 原始碼會按照和 Jetpack 程式庫和 AGDK zip 套件類似的檔案結構儲存。

整合指南

請按照下列指南將 GameActivity 整合到應用程式中:

其他資源

如要進一步瞭解 GameActivity,請參閱以下說明:

意見回饋:

如要向 GameActivity 回報錯誤或要求新功能,請使用 GameActivity Issue Tracker