GameActivity   Một phần của Android Game Development Kit.

GameActivity là một thư viện Jetpack được thiết kế để hỗ trợ các trò chơi Android trong việc xử lý lệnh của chu kỳ ứng dụng, sự kiện đầu vào và phương thức nhập văn bản bằng mã C/C++ của ứng dụng. GameActivity là thành phần con trực tiếp của NativeActivity và có cấu trúc tương tự:

alt_text

Như minh hoạ trong sơ đồ trên, GameActivity thực hiện các hàm sau:

  • Tương tác với khung Android thông qua thành phần phía Java.
  • Chuyển các lệnh chu kỳ ứng dụng, sự kiện đầu vào và văn bản nhập vào phía gốc.
  • Lập mô hình mã nguồn C/C++ thành ba thành phần logic:
    • Các hàm JNI của GameActivity, trực tiếp hỗ trợ chức năng Java của GameActivity và đưa các sự kiện vào hàng đợi của native_app_glue.
    • native_app_glue, chạy chủ yếu trong chuỗi gốc riêng (khác với chuỗi chính của ứng dụng) và thực thi các tác vụ bằng trình lặp của nó.
    • Mã trò chơi của ứng dụng, thăm dò ý kiến và xử lý các sự kiện tại hàng đợi bên trong native_app_glue, đồng thời thực thi mã trò chơi trong chuỗi native_app_glue.

Với GameActivity, bạn có thể tập trung vào việc phát triển trò chơi cốt lõi và tránh tốn quá nhiều thời gian xử lý mã JNI.

Nếu bạn đã quen thuộc với NativeActivity, thì dưới đây là những điểm khác biệt chính giữa GameActivityNativeActivity:

  • GameActivity kết xuất vào SurfaceView, giúp trò chơi dễ dàng tương tác với các thành phần giao diện người dùng khác.
  • Đối với các sự kiện nhập và nhấn, GameActivity có quy trình triển khai hoàn toàn mới với giao diện android_input_buffer, tách biệt với InputQueueNativeActivity sử dụng.
  • GameActivity là một lớp bắt nguồn của AppCompatActivity, cho phép bạn sử dụng các thành phần Jetpack khác một cách liền mạch. ActionBar, Fragment và nhiều nền tảng khác đều có sẵn.
  • GameActivity thêm chức năng nhập văn bản bằng cách tích hợp thư viện GameTextInput.
  • Các ứng dụng lấy từ GameActivity sự kiến sẽ tích hợp cả ba phần của mã C/C++ vào một thư viện. Mặt khác, các hàm JNI của NativeActivity là một phần của khung (luôn được hệ điều hành tải). Do đó, dự kiến sẽ chỉ có mã native_app_glue và mã C/C++ của ứng dụng được tích hợp vào một thư viện.
  • NativeActivity là một phần của khung Android và tuân theo chu kỳ phát hành (thường là hằng năm). GameActivity là một phần của thư viện Jetpack, có chu kỳ phát hành thường xuyên hơn nhiều (thường là hai tuần một lần); các tính năng và bản sửa lỗi mới có thể ra mắt nhanh chóng hơn.

Địa điểm phát hành.

Thư viện GameActivity hiện được cung cấp qua các kênh sau:

Mã C/C++ được cung cấp dưới dạng mã nguồn trong tất cả các kênh phát hành, sử dụng định dạng Prefab. GameActivity phiên bản 1.2.2 có thêm một thư viện tĩnh vào bản phân phối. Từ phiên bản này trở lên, bạn nên sử dụng thư viện tĩnh thay cho mã nguồn.

Nội dung của thư viện Jetpack và gói zip AGDK

Với thư viện Jetpack và kênh gói zip AGDK, GameActivity được phát hành cùng với AAR. AAR này chứa các thành phần chính dưới đây:

  • Tệp JAR cho mã Java
  • Thư viện C/C++ tĩnh game-activity_static có trong GameActivity phiên bản 1.2.2 trở đi.
  • Mã nguồn C/C++ (trong thư mục /prefab)

Các hướng dẫn tích hợp được liên kết từ trang này giả định rằng bạn có thể sử dụng Prefab trong hệ thống bản dựng; nếu không, bạn có thể sao chép mã nguồn được đóng gói trong thư mục prefab/modules/game-activity/include vào hệ thống bản dựng của mình, sau đó thực hiện các bước tích hợp cần thiết. Có một cấu trúc tệp tương tự dành cho các bản phát hành dưới androidx trong thư viện Android Jetpack; theo mặc định, gradle sẽ giải nén AAR trong thư mục bộ nhớ đệm (~/.gradle/caches/...). Bạn có thể tìm thấy mã nguồn C/C++ bằng cách tìm kiếm prefab/modules/game-activity/include và chọn vị trí trong phiên bản phát hành dự định của bạn.

Để biết hướng dẫn về cách tích hợp sử dụng thư viện Jetpack, vui lòng xem bài viết Làm quen với GameActivity.

Đối với gói zip thư viện AGDK, hãy làm theo các bước sau để lấy mã C/C++:

  1. Giải nén gói đã tải xuống.
  2. Trong gói giải nén, hãy giải nén tệp GameActivity-release.aar.
  3. Tìm và sao chép tất cả mã nguồn C/C++ trong prefab/modules/game-activity/include, bao gồm:
    • game-activity cho mã C/C++ có liên quan đến GameActivity
    • game-text-input cho mã C/C++ có liên quan đến GameTextInput

Nội dung của mã nguồn AOSP

AOSP luôn chứa mã nguồn mới nhất. Làm theo hướng dẫn trong bản dựng để tạo các bản phát hành của riêng bạn, hoặc tích hợp trực tiếp nguồn vào môi trường tạo bản dựng của bạn. Mã nguồn C/C++ được lưu trong cấu trúc tệp tương tự như mã nguồn cho thư viện Jetpack và gói zip AGDK.

Hướng dẫn tích hợp

Hãy làm theo hướng dẫn đó để tích hợp GameActivity vào các ứng dụng của bạn:

Tài nguyên khác

Để tìm hiểu thêm về GameActivity, hãy xem các nội dung sau:

Phản hồi

Để báo cáo lỗi hoặc yêu cầu tính năng mới cho GameActivity, hãy sử dụng công cụ theo dõi lỗi của GameActivity.