Android 15 đặt tốc độ làm mới mặc định là 60 Hz cho trò chơi để tối ưu hoá mức tiêu thụ điện năng. Để mở khoá tốc độ khung hình cao hơn (chẳng hạn như 120 FPS), giờ đây, bạn phải yêu cầu rõ ràng bằng cách sử dụng Frame Rate API hoặc thư viện Swappy.
Tuy nhiên, hệ thống có thể ghi đè yêu cầu này dựa trên các yếu tố như mức pin hoặc nhiệt độ thiết bị. Mặc dù tốc độ làm mới cao hơn giúp tăng độ mượt mà về hình ảnh, nhưng cũng đòi hỏi nhiều năng lượng hơn và tạo ra thêm nhiệt. Do đó, điều quan trọng là bạn phải cung cấp cho người dùng lựa chọn chọn tốc độ làm mới mà họ muốn và theo dõi hiệu suất một cách cẩn thận để đảm bảo mang lại trải nghiệm cân bằng cho người dùng.
Sử dụng API setFrameRate()
API setFrameRate() cho phép nhà phát triển trò chơi sử dụng một tốc độ làm mới màn hình cụ thể. Bạn cần thực hiện 2 bước để làm việc này:
- Xác minh khả năng tương thích của thiết bị và phiên bản Android.
- Yêu cầu tốc độ khung hình cao bằng cách sử dụng
setFrameRate().
Xác minh khả năng tương thích của thiết bị và phiên bản Android:
Sử dụng các phương thức Display.getSupportedModes() để xác định xem thiết bị có hỗ trợ tốc độ làm mới 90Hz, 120Hz hay tốc độ làm mới khác hay không. Nếu thiết bị bị giới hạn ở 60 Hz, thì bạn không thể vượt quá giới hạn này.
Kotlin
val display = windowManager.defaultDisplay
val supportedModes = display.supportedModes
for (mode in supportedModes) {
Log.d("DisplayInfo", "Supported mode: ${mode.physicalWidth}x${mode.physicalHeight}, ${mode.refreshRate}Hz")
}
Yêu cầu FPS cao
Gọi setFrameRate() khi vòng lặp kết xuất bắt đầu, trong quá trình khởi chạy cửa sổ trò chơi hoặc khi FPS mục tiêu cần thay đổi tốc độ làm mới màn hình.
Ngay cả khi bạn yêu cầu tốc độ làm mới cao hơn, hệ thống vẫn có thể giới hạn tốc độ làm mới ở mức 60 Hz do các yếu tố như chế độ tiết kiệm pin hoặc tình trạng điều tiết nhiệt. Nếu hiệu suất kết xuất của trò chơi không đạt được FPS mục tiêu, thì việc yêu cầu tốc độ làm mới cao hơn có thể tiêu thụ điện năng không cần thiết và làm tăng nhiệt độ của thiết bị.
Đoạn mã sau đây minh hoạ cách tránh tốc độ làm mới quá cao bằng API setFrameRate().
Kotlin
val targetFps = 120f
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
window.setFrameRate(
targetFps,
Window.FrameRateCompatibility.FRAME_RATE_COMPATIBILITY_FIXED_SOURCE,
0
)
}
Trang Tốc độ khung hình cung cấp thông tin chi tiết hơn để bạn đọc thêm.
Sử dụng thư viện Frame Pacing
Thư viện tốc độ khung hình (hay Swappy) là một thư viện nguồn mở được thiết kế để đơn giản hoá việc quản lý VSync và lập lịch khung hình trong các công cụ trò chơi Android C/C++.
Công cụ này đơn giản hoá quy trình tối ưu hoá tốc độ làm mới, hoạt động hiệu quả như một lớp trừu tượng cấp cao hơn đối với các chức năng như setFrameRate(). Hơn nữa, Swappy còn cung cấp các tính năng bổ sung có thể cải thiện độ mượt và hiệu suất tổng thể của trò chơi.
Trang Swappy cung cấp thông tin chi tiết hơn.
Các mẹo khác để đạt kết quả tốt nhất
Phần sau đây trình bày một số mẹo hàng đầu:
- Chuyển đổi tốc độ khung hình linh hoạt.
- Giám sát hiệu suất.
- Cung cấp các lựa chọn FPS dựa trên tốc độ làm mới tối đa của màn hình.
Chuyển đổi tốc độ khung hình linh động
Để tối ưu hoá cả hiệu suất và mức tiêu thụ điện năng, hãy cân nhắc việc triển khai tính năng chuyển đổi tốc độ khung hình linh hoạt trong trò chơi của bạn. Kỹ thuật này cho phép bạn chuyển đổi liền mạch giữa tốc độ làm mới cao hơn (chẳng hạn như 120Hz) để có lối chơi mượt mà hơn trong các cảnh đòi hỏi nhiều tài nguyên và tốc độ thấp hơn (chẳng hạn như 60Hz) trong những khoảnh khắc ít căng thẳng hơn hoặc khi bạn lo ngại về thời lượng pin hoặc nhắm đến tốc độ dưới 60 khung hình/giây. Việc liên tục chạy ở tần số 120 Hz có thể dẫn đến tình trạng sinh nhiệt quá mức và tiêu hao pin nhanh chóng, có thể dẫn đến trải nghiệm người dùng kém. Bằng cách điều chỉnh tốc độ làm mới một cách thông minh dựa trên mức tải kết xuất hiện tại và điều kiện của thiết bị, bạn có thể cân bằng giữa độ trung thực về hình ảnh và hiệu suất sử dụng điện năng.
Giám sát hiệu suất
Để đảm bảo trò chơi của bạn hoạt động tối ưu ở tốc độ làm mới cao hơn, hãy tích hợp các công cụ giám sát hiệu suất như bộ đếm khung hình hoặc lớp phủ hiệu suất. Những công cụ này cung cấp thông tin phản hồi theo thời gian thực về tốc độ khung hình thực tế của trò chơi, cho phép bạn xác minh xem bạn có đạt được tốc độ 120 FPS mục tiêu một cách nhất quán hay không.
Nếu tốc độ khung hình của bạn dao động đáng kể, hãy cân nhắc nhắm đến tốc độ khung hình thấp hơn có thể đạt được trên thiết bị đã cho. Điều này có thể mang lại trải nghiệm mượt mà hơn mà không gặp phải các vấn đề về hiệu suất có thể xảy ra khi cố gắng đạt được tốc độ làm mới cao nhất.
Cung cấp các lựa chọn về FPS dựa trên tốc độ làm mới tối đa của màn hình
Trò chơi của bạn phải phát hiện tốc độ làm mới màn hình tối đa mà thiết bị hiện tại hỗ trợ, chẳng hạn như 60 Hz, 90 Hz hoặc 120 Hz, rồi giới hạn chế độ cài đặt FPS cho phù hợp. Ví dụ: nếu thiết bị chỉ hỗ trợ tối đa 60 Hz, bạn nên tắt mọi lựa chọn cao hơn 60 FPS trong phần cài đặt trò chơi để tránh gây nhầm lẫn cho người chơi.