Hướng dẫn này mô tả cách sử dụng trình bổ trợ Unity để ghi lại và tải dữ liệu thời gian kết xuất khung hình lên từ Unity 2017.4 trở lên.
Đối với công cụ phát triển trò chơi sử dụng C hoặc C++, hãy xem hướng dẫn dành cho công cụ phát triển trò chơi gốc.
Thông tin khái quát
Hiệu suất kết xuất là một thành phần chính của trải nghiệm trò chơi. Hiệu suất kết xuất là kết quả của hai đầu vào sau:
- Tốc độ khung hình: Tần suất vẽ khung.
- Chế độ cài đặt chất lượng đồ hoạ: Độ trung thực khi hiện một khung hình, bao gồm cả độ chân thực mô phỏng cũng như đồ hoạ.
Đối với trò chơi, hiệu suất kết xuất tốt được định nghĩa như sau:
- Cung cấp tốc độ khung hình (tức là tỷ lệ phần trăm số khung hình kết xuất ở tần suất mong muốn) ổn định, nhất quán.
- Kết xuất khung hình ở tần suất cao nhất có thể trong khi vẫn duy trì độ ổn định, thường là 30 hoặc 60 FPS, tuỳ thuộc vào loại trò chơi.
- Tối đa hoá mức độ chi tiết cho người dùng dựa trên kích thước và mật độ màn hình của họ trong khi vẫn đạt được tốc độ khung hình ổn định, mong muốn.
Thư viện Android Frame Pacing hạn chế phần lớn sự biến động về thời gian kết xuất khung hình, mang lại tốc độ khung hình ổn định cho trò chơi. Sự biến động còn lại về thời gian kết xuất khung hình là do mức độ chi tiết được hiển thị ở một số cảnh trong trò chơi và các chức năng đồ hoạ của thiết bị. Sử dụng Android Performance Tuner, bạn có thể xác định số lần trong khi chơi trò chơi khi thời gian kết xuất khung hình chậm hoặc nhanh hơn thời gian mục tiêu, đồng thời liên hệ tương quan những vấn đề và cơ hội này với:
- Chế độ cài đặt chất lượng cụ thể
- Cảnh cụ thể trong trò chơi
- Mẫu thiết bị hoặc thông số kỹ thuật cụ thể của thiết bị
Ghi lại và tải dữ liệu lên
Thư viện Tuning Fork dựa vào một trong các hàm đánh dấu nhịp độ khung hình được thư viện Android Frame Pacing (hoặc công cụ Unity đối với các phiên bản cũ của Unity không có Thư viện Android Frame Pacing) gọi trong từng khung hình. Trong thư viện, thông tin đánh dấu nhịp độ khung hình này được tổng hợp thành biểu đồ và sau đó được tải lên Google Play định kỳ thông qua một điểm cuối HTTP. Mỗi kim đánh dấu nhịp độ khung hình được ghi lại là được liên kết với một khoá xác định xuất phát điểm và một chú giải. Bạn xác định chú giải bằng trình bổ trợ Unity.
Khoá xác định xuất phát điểm
Khoá xác định xuất phát điểm cho biết vị trí mà kim đánh dấu nhịp độ khung hình xuất hiện trong khung và là một số nguyên phải được truyền vào mỗi lệnh gọi hàm đánh dấu nhịp độ khung hình. Điều này được thực hiện tự động bằng trình bổ trợ Unity. Nếu tuỳ chọn Tốc độ khung hình tối ưu được bật trong chế độ cài đặt Unity cho trò chơi (có trong phiên bản Unity 2019.3.14 trở lên), Android Performance Tuner sẽ sử dụng thông tin từ thư viện Android Frame Pacing để báo cáo chỉ số nâng cao.
Chú giải
Chú giải cung cấp thông tin theo bối cảnh về hoạt động của trò chơi khi một kim đánh dấu nhịp độ khung hình được ghi lại. Chẳng hạn, chú giải có thể xác định bất kỳ nội dung nào sau đây:
- Cấp độ trò chơi hiện tại
- Một cảnh cụ thể đang tải
- Một "trùm lớn" đang xuất hiện trên màn hình
- Mọi thông tin khác về trạng thái trò chơi có liên quan
Chú giải được xác định trong hộp thoại do trình bổ trợ Unity cung cấp.
Trong nội bộ, thư viện Tuning Fork sử dụng định dạng vùng đệm giao thức của Google để lưu trữ các chú giải và thông số về độ chân thực. Đây là một giao thức đa ngôn ngữ được xác định rõ ràng cho dữ liệu có cấu trúc có thể mở rộng. Để biết thêm thông tin, hãy xem tài liệu về Vùng đệm giao thức.
Thông số về độ chân thực
Thông số về độ chân thực sẽ ảnh hưởng đến hiệu suất và độ trung thực đồ hoạ của trò chơi, chẳng hạn như độ chi tiết của lưới, độ phân giải của hoạ tiết và phương thức khử răng cưa. Giống như chú giải, thông số về độ chân thực được xác định trong hộp thoại do trình bổ trợ Unity cung cấp.
Bộ nhớ và mức hao tổn CPU
Tất cả bộ nhớ mà thư viện Tuning Fork sử dụng đều được phân bổ khi khởi động để tránh gây bất ngờ trong khi chơi. Dung lượng dữ liệu phụ thuộc vào số khoá xác định xuất phát điểm, số chú giải có thể xuất hiện và số bộ chứa trong mỗi biểu đồ; dung lượng dữ liệu là bội số của tất cả giá trị nêu trên nhân với bốn byte cho từng bộ chứa. Ngoài ra, còn có hai bản sao của tất cả biểu đồ để cho phép gửi theo kiểu đệm đôi.
Việc gửi dữ liệu xảy ra trên một luồng riêng biệt và không chặn các lệnh gọi hàm đánh dấu nhịp độ khung hình. Nếu không có kết nối tải lên, nội dung gửi sẽ được xếp hàng để tải lên sau đó.
Lệnh gọi hàm đánh dấu nhịp độ khung hình có mức hao tổn xử lý rất thấp: chỉ đơn giản là tính toán một chỉ mục vào mảng bộ chứa biểu đồ và tăng số lượng số nguyên.
Yêu cầu web
Thư viện đưa ra hai loại yêu cầu đối với điểm cuối máy chủ:
- Yêu cầu
generateTuningParameters
khi khởi động - Trong quá trình chơi, một yêu cầu
uploadTelemetry
sẽ định kỳ gửi dữ liệu đến máy chủ
Người chơi ngoại tuyến
Nếu không có sẵn kết nối khi khởi động, yêu cầu sẽ được thử lại nhiều lần với thời gian đợi tăng lên. Nếu không có kết nối khi tải lên, quá trình tải lên sẽ được lưu vào bộ nhớ đệm. Tệp đã tải lên được lưu trữ dưới dạng tệp trong bộ nhớ tạm thời.
Yêu cầu
Để sử dụng trình bổ trợ trong trò chơi, hãy sử dụng phiên bản Unity được hỗ trợ:
- Unity phiên bản 2017.4 trở lên và .NET phiên bản 4.6
- Để sử dụng tệp mở rộng APK, bạn cần phải có Unity 2018.2
- Để cải thiện tốc độ khung hình và chỉ số đo lường GPU, bạn cần sử dụng Unity phiên bản 2019.3.14 trở lên
- Để hỗ trợ tính năng cảnh có Địa chỉ, bạn cần có Unity 2019.3 trở lên và gói Addressables 1.19.4 trở lên.
Tích hợp Android Performance Tuner trong Unity
Để biết thông tin về cách tích hợp Android Performance Tuner trong Unity, hãy xem bài viết Bật API.