Thêm tính năng hỗ trợ cho việc truy cập tức thì

Các bước để thiết lập ứng dụng sẽ chạy trên Google Play Instant, như đã giải thích trong phần Tạo ứng dụng tức thì đầu tiên, cũng áp dụng được cho trò chơi. Hướng dẫn này nhấn mạnh một số bước thiết lập dành riêng cho trò chơi.

Bạn có thể phát triển trò chơi cho Google Play Instant bằng cách sử dụng Unity (có hoặc không có plugin Google Play Instant Unity), Cocos2D, Android Studio hoặc engine tuỳ chỉnh của riêng bạn.

Hướng dẫn này giả định rằng bạn đã biết về loại trải nghiệm trò chơi mà bạn muốn cung cấp. Nếu bạn muốn xem các ý tưởng và phương pháp hay nhất để làm ra trò chơi chất lượng cao, hãy đọc hết bài viết về các phương pháp hay nhất về trải nghiệm người dùng đối với trò chơi trên Google Play Instant.

Ngoài ra, trước khi phát hành một trò chơi có thể chạy trên Google Play Instant, bạn nên xem lại danh sách kiểm tra Yêu cầu kỹ thuật.

Một hoạt động với bộ lọc ý định như sau sẽ trở thành điểm truy cập đối với trải nghiệm Google Play Instant:

<activity android:name=".GameActivity">
   <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
</activity>

Hoạt động này được khởi chạy khi người dùng nhấn vào nút Try Now trong Cửa hàng Play hoặc nút Instant play trong Ứng dụng Google Play Trò chơi. Bạn cũng có thể chạy hoạt động này trực tiếp bằng cách sử dụng API liên kết sâu.

Xác định đúng mã phiên bản

Mã phiên bản của trò chơi tức thì phải nhỏ hơn mã phiên bản của trò chơi có thể cài đặt. Việc tạo phiên bản cho ứng dụng theo cách này cho phép người chơi chuyển từ trải nghiệm Google Play Instant sang tải xuống và cài đặt trò chơi trên thiết bị của họ. Khung Android coi quá trình chuyển đổi này là một bản cập nhật ứng dụng.

Để đảm bảo rằng bạn đã làm theo lược đồ tạo phiên bản được đề xuất, hãy thực hiện theo một trong các chiến lược sau:

  • Khởi động lại mã phiên bản đối với trải nghiệm Google Play Instant tại 1.
  • Tăng mã phiên bản của ứng dụng có thể cài đặt lên một con số lớn, chẳng hạn như 1000, để đảm bảo có đủ khoảng giá trị để tăng mã phiên bản của trải nghiệm tức thì.

Bạn có thể phát triển trò chơi tức thì và trò chơi có thể cài đặt trong hai dự án Android Studio riêng biệt. Tuy nhiên, nếu làm như vậy, bạn phải thực hiện như sau để phát hành trò chơi của mình trên Google Play:

  1. Sử dụng cùng một tên gói trong cả hai dự án Android Studio.
  2. Trong Google Play Console, hãy tải cả hai biến thể lên cùng một ứng dụng.

Để biết thêm thông tin về cách thiết lập phiên bản trò chơi, hãy xem phần Tạo phiên bản cho ứng dụng.

Hỗ trợ môi trường thực thi

Giống như các ứng dụng khác, trò chơi trên Google Play Instant chạy trong một sandbox giới hạn trên thiết bị. Để hỗ trợ môi trường thực thi này, hãy hoàn tất các bước được đưa ra trong các phần sau.

Chọn không sử dụng lưu lượng truy cập cleartext (không được mã hoá)

Trò chơi trên Google Play Instant không hỗ trợ lưu lượng truy cập HTTP. Nếu trò chơi nhắm mục tiêu Android 9 (API cấp 28) trở lên, thì Android sẽ mặc định vô hiệu hoá tính năng hỗ trợ cleartext trong trò chơi.

Tuy nhiên, nếu trò chơi nhắm mục tiêu Android 8.1 (API cấp 27) trở xuống, thì bạn phải tạo tệp Network Security Config. Trong tệp này, hãy đặt cleartextTrafficPermitted thành false, như minh hoạ trong đoạn mã sau:

res/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="false">
        <domain includeSubdomains="true">secure.example.com</domain>
    </domain-config>
</network-security-config>

Cập nhật phiên bản sandbox mục tiêu

Cập nhật tệp AndroidManifest.xml của trò chơi tức thì để nhắm mục tiêu môi trường sandbox mà Google Play Instant hỗ trợ. Bạn có thể hoàn tất nội dung cập nhật này bằng cách thêm thuộc tính android:targetSandboxVersion vào phần tử <manifest> của trò chơi, như minh hoạ trong đoạn mã sau:

<manifest
   xmlns:android="http://schemas.android.com/apk/res/android"
  ...
   android:targetSandboxVersion="2" ...>

Để biết thêm thông tin, hãy xem tài liệu về thuộc tính targetSandboxVersion.

Đừng phụ thuộc vào sự hiện diện của bộ nhớ đệm hoặc dữ liệu của ứng dụng

Ứng dụng tức thì vẫn được tải xuống trên thiết bị của người dùng cho đến khi bộ nhớ đệm của ứng dụng tức thì bị xoá. Điều này xảy ra ở một trong các trường hợp sau:

  • Bộ nhớ đệm phiên bản trải nghiệm tức thì bị thu hồi trong quá trình dọn rác do thiết bị sắp hết bộ nhớ còn trống.
  • Người dùng khởi động lại thiết bị.

Nếu một trong hai quá trình đó xảy ra, người dùng phải tải lại phiên bản tức thì xuống để có thể tương tác với trò chơi.

Nếu hệ thống sắp hết dung lượng lưu trữ, thì có thể dữ liệu người dùng của phiên bản trải nghiệm tức thì bị xoá khỏi bộ nhớ trong. Do đó, bạn nên đồng bộ hoá dữ liệu người dùng với máy chủ trò chơi theo định kỳ để tiến trình của người dùng được giữ nguyên.

Giảm kích thước ứng dụng

Không giống như các loại ứng dụng khác, trò chơi trên Google Play Instant có giới hạn kích thước tải xuống là 15 MB. Để tạo ra một trò chơi có kích thước này, bạn có thể sẽ cần phải tái cấu trúc logic của trò chơi đó. Phần này mô tả một số công cụ và kỹ thuật giúp tối ưu hoá kích thước trò chơi.

Công cụ

Danh sách công cụ sau có thể giúp bạn xác định yếu tố nào đang góp phần làm gia tăng kích thước trò chơi:

  • Công cụ phân tích APK (APK Analyzer): Mang đến một góc nhìn tổng quát về các nội dung trong một tệp APK đã biên dịch. Khi sử dụng chế độ xem này, bạn có thể xác định số lượng byte mà mỗi phần tử đang góp phần làm gia tăng kích thước tổng thể. Sử dụng công cụ này để kiểm tra nhanh kích thước tài nguyên, nội dung, logic và thư viện gốc mà trò chơi đang sử dụng.
  • Bloaty McBloatface: Hiển thị hồ sơ kích thước của các tệp nhị phân.
  • Android GPU Inspector: Xem ảnh hưởng của kích thước tệp để giảm kích thước texture mà không phải biên dịch lại trò chơi.

Kỹ thuật

Sau đây là danh sách các kỹ thuật mà bạn có thể sử dụng để giảm kích thước của trò chơi:

  • Hãy trích xuất một số logic của trò chơi và đặt vào một hoặc nhiều mô-đun tính năng. Những mô-đun này không được tính vào giới hạn kích thước.
  • Giảm độ phân giải của texture trong trò chơi.
  • Hãy cân nhắc sử dụng định dạng WebP, đặc biệt nếu bạn đang sử dụng texture không nén trên GPU. Định dạng WebP sẽ tạo hình ảnh có chất lượng tương tự như hình ảnh JPEG nhưng có kích thước nhỏ hơn từ 15% đến 30%. Mặc dù mất nhiều thời gian hơn để giải nén hình ảnh WebP, nhưng thời gian giải nén này vẫn ngắn hơn đáng kể so với thời gian tải texture trò chơi xuống. Google cũng đã tích hợp định dạng này vào công cụ phát triển trò chơi nguồn mở.
  • Nén hoặc sử dụng lại âm thanh và nhạc.
  • Sử dụng nhiều cờ biên dịch để giúp thu nhỏ tệp nhị phân:
    • -fvisibility=hidden – Mục quan trọng nhất. Trong cmake, bạn có thể chỉ định như sau:
      $ set_target_properties(your-target PROPERTIES CXX_VISIBILITY_PRESET hidden)
      
    • -Oz – Cũng quan trọng để giảm kích thước. Nếu bạn biên dịch bằng gcc, hãy sử dụng -Os.
    • -flto – Đôi khi, kích thước tệp sẽ giảm.
    • Cờ trình liên kết – Sử dụng --gc-sections cùng với cờ của trình biên dịch, chẳng hạn như -ffunction-sections-fdata-sections.
  • Sử dụng Proguard để rút gọn mã và tài nguyên.
  • Sử dụng Gradle 4.4 trở lên để tạo ra các tệp DEX nhỏ hơn.
  • Triển khai tính năng phân phối nội dung trên đám mây.

Chia một trò chơi lớn thành nhiều tệp APK

Việc tối ưu hoá trải nghiệm Google Play Instant nhằm làm cho trò chơi vừa vặn trong một tệp APK 15 MB duy nhất là rất khó, ngay cả sau khi áp dụng các đề xuất giảm kích thước tệp APK. Để giải quyết thách thức này, bạn có thể chia trò chơi thành nhiều tệp APK. Người chơi bắt đầu bằng cách tải các tệp APK cơ sở (tệp APK chính) xuống. Khi chơi, các APK phân tách còn lại sẽ được cung cấp cho trò chơi trong nền.

Ví dụ: tệp APK cơ sở có thể chứa công cụ trò chơi cốt lõi và các tài sản cần thiết để hiển thị màn hình tải. Khi tệp APK cơ sở chạy, tập APK này sẽ hiển thị màn hình tải và ngay lập tức yêu cầu một tập APK phân tách bổ sung chứa dữ liệu cấp độ và trò chơi. Sau khi có tệp APK phân tách, APK này có thể tải các tài sản vào công cụ phát triển trò chơi và cung cấp cho người chơi nội dung mà họ cần để bắt đầu trò chơi.

Áp dụng các phương pháp hay nhất về trải nghiệm người dùng

Sau khi bạn định cấu hình trò chơi để hỗ trợ trải nghiệm tức thì, hãy thêm logic được hiển thị trong các phần sau để cung cấp trải nghiệm người dùng tốt.

Hỗ trợ kiến trúc 64 bit

Các ứng dụng được phát hành trên Google Play cần hỗ trợ kiến trúc 64 bit. Việc thêm phiên bản 64 bit cho ứng dụng của bạn sẽ cải thiện hiệu suất và giúp bạn đáp ứng các thiết bị chỉ có phần cứng 64 bit. Tìm hiểu thêm về dịch vụ hỗ trợ kiến trúc 64 bit.

Kiểm tra xem trò chơi có đang chạy phiên bản trải nghiệm tức thì hay không

Nếu một số logic của trò chơi phụ thuộc vào việc người dùng có tương tác với trải nghiệm tức thì hay không, hãy gọi phương thức isInstantApp(). Phương thức này trả về true nếu quá trình hiện đang chạy là trải nghiệm tức thì.

Bằng cách kiểm tra, bạn có thể xác định xem ứng dụng của mình có cần chạy trong một môi trường thực thi có giới hạn hay không hoặc có thể tận dụng các tính năng của nền tảng hay không.

Hiển thị lời nhắc cài đặt

Nếu bạn đã xây dựng phiên bản thử nghiệm của trò chơi trên Google Play Instant, thì tại một thời điểm nào đó, trò chơi sẽ nhắc người chơi cài đặt phiên bản đầy đủ trên thiết bị của họ. Để thực hiện việc này, hãy sử dụng phương thức showInstallPrompt() trong API Google dành cho Android.

Để tìm hiểu thêm về cách thức và thời điểm bạn nên nhắc người chơi cài đặt, hãy xem các phương pháp hay nhất về trải nghiệm người dùng cho trò chơi trên Google Play Instant

Chuyển dữ liệu sang trải nghiệm đã cài đặt

Nếu người chơi thích trải nghiệm dùng thử của họ, thì họ có thể quyết định cài đặt phiên bản đầy đủ của trò chơi. Để cung cấp trải nghiệm tốt cho người dùng, điều quan trọng là tiến trình của người chơi phải được chuyển từ phiên bản trải nghiệm tức thì sang phiên bản đầy đủ của trò chơi.

Nếu trò chơi của bạn chỉ định targetSandboxVersion2, thì tiến trình của người chơi sẽ tự động được chuyển sang phiên bản đầy đủ của trò chơi. Nếu không, bạn phải chuyển dữ liệu liên quan đến tiến trình của người chơi theo cách thủ công. Để thực hiện điều đó, hãy sử dụng Cookie API – ứng dụng mẫu

Tài nguyên khác

Tìm hiểu thêm về Google Play Instant qua những tài nguyên bổ sung sau:

Lớp học lập trình: Tạo ứng dụng tức thì đầu tiên
Thêm tính năng hỗ trợ cho Google Play Instant trong một ứng dụng hiện có.
Lớp học lập trình: Xây dựng ứng dụng tức thì đa tính năng
Mô-đun hoá ứng dụng đa tính năng.