Yêu cầu về nền tảng

Trang này mô tả các yêu cầu về nền tảng để đảm bảo hiệu suất và độ ổn định cho trò chơi trên Google Play Games.

Kiến trúc x86 ABI

Tất cả thư viện trong trò chơi của bạn đều phải có phiên bản tương thích với x86 ABI để đảm bảo hiệu suất và độ ổn định tốt nhất trên nền tảng. Google Play Games hỗ trợ cả phiên bản 32 bit và 64 bit, nhưng bạn chỉ cần chọn một phiên bản để đáp ứng yêu cầu này.

Biên dịch các thư viện của riêng bạn

Để đảm bảo khả năng tương thích với bộ xử lý x86 lớn nhất, bạn không nên sử dụng tập lệnh Atom khi thiết lập thư viện. Ví dụ: khi sử dụng gcc, hãy tránh sử dụng -march=atom và thay vào đó, hãy sử dụng -march=x86 hoặc -march=x86-64.

Unity

Các phiên bản Unity từ 2018 trở xuống hỗ trợ tạo mục tiêu 32 bit x86 dành cho Android. Từ Player Settings (Cài đặt người chơi) > Other Settings (Cài đặt khác) > Target Architecture (Kiến trúc mục tiêu), hãy chọn hộp đánh dấu x86.

Mặc dù x86 ban đầu đã bị xoá khỏi Unity 2019.3, nhưng hiện tại, ứng dụng này đã có trong bản phát hành Long Term Support (Hỗ trợ dài hạn – LTS) 2019 cũng như trong tất cả bản phát hành Unity hiện tại.

Bạn có thể kích hoạt phần này bằng cách sử dụng phần Player Settings (Cài đặt người chơi) > Other Settings (Cài đặt khác) > Target Architectures (Kiến trúc mục tiêu), đồng thời bật cả x86 (Chrome OS)x86-64 (Chrome OS).

Phát hiện nền tảng

Bạn có thể phát hiện nền tảng Google Play Games trong thời gian chạy để bật hoặc tắt các tính năng dành riêng cho nền tảng trong trò chơi của mình.

Kiểm tra sự hiện diện của tính năng hệ thống com.google.android.play.feature.HPE_EXPERIENCE để xác định xem trò chơi có đang chạy trên nền tảng Google Play Games hay không:

Kotlin

    var isPC = packageManager.hasSystemFeature("com.google.android.play.feature.HPE_EXPERIENCE")
  

Java

    PackageManager pm = getPackageManager();
    boolean isPC = pm.hasSystemFeature("com.google.android.play.feature.HPE_EXPERIENCE")
  

C#

var unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
var currentActivity = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");
var packageManager = currentActivity.Call<AndroidJavaObject>("getPackageManager");
var isPC = packageManager.Call<bool>("hasSystemFeature", "com.google.android.play.feature.HPE_EXPERIENCE");
  

Sự kiện trong vòng đời

Quan trọng là bạn phải xử lý sự kiện onPause (c++) trong môi trường Google Play Games. Người chơi sẽ nhìn thấy trò chơi của bạn khi kích hoạt lớp phủ trình mô phỏng và việc không nghe được sự kiện onPause có thể dẫn đến trải nghiệm người chơi không tốt.

Tối ưu hoá nền tảng

Google Play Games hướng đến việc duy trì khả năng tương thích của cơ sở mã cho dù bạn đang dùng máy tính hay chuyển sang thiết bị di động. Chỉ cần một vài thay đổi nhỏ là bạn có thể tối ưu hoá trò chơi hơn nữa để chạy được trên máy tính.

Nén kết cấu

Vì Google Play Games sẽ chuyển qua kết cấu (texture) nén bất cứ khi nào có thể, bạn nên dùng DXTC hoặc BPTC để khai thác phần cứng máy tính. Đôi khi, các kết cấu này vẫn cần được giải nén nếu các tính năng của OpenGL cần phải được mô phỏng vì lý do tương thích, do đó, bạn luôn nên tạo hồ sơ cho các trò chơi.

Các định dạng như ETC1ETC2 sẽ được giải nén bằng lớp bản dịch OpenGL trước khi được gửi đến ngăn xếp đồ hoạ gốc. Các định dạng này sẽ tiếp tục hoạt động, nhưng sẽ không mang lại lợi ích về hiệu suất bộ nhớ hoặc thời gian chạy như bạn vẫn mong đợi trên phần cứng thiết bị di động.