本主題說明如何整合 Android Performance Tuner (又稱為 Tuning Fork 程式庫),以記錄及上傳原生 (C 和 C++) 遊戲引擎的影格時間資料。
如需 Unity 遊戲引擎,請參閱 Unity 指南。
背景
遊戲體驗的其中一個關鍵是呈現效能。呈現效能是下列兩個輸入的結果:
- 影格速率:影格的繪製頻率。
- 圖形品質設定:影格呈現的保真度,包括模擬畫面保真度和圖形。
遊戲的良好呈現效能定義如下:
- 提供穩定且一致的影格速率 (即以所需頻率呈現影格百分比)。
- 盡可能以最高頻率呈現影格,同時維持穩定性。通常是 30 或 60 FPS,視遊戲類型而定。
- 在指定使用者的螢幕大小和 同時達到所需的穩定影格速率
Android Frame Pacing 程式庫會限制影格時間的大部分變化,為遊戲提供穩定影格速率。影格時間的剩餘變化是由於遊戲過程中特定情境顯示的細節等級,以及裝置的圖形功能所致。使用 Android Performance Tuner 時,您可以在遊戲過程中找出影格時間比目標慢或快的時間點,瞭解這些問題和下列可改善項目的關聯:
- 特定畫質設定
- 遊戲中的特定情境
- 特定裝置型號或裝置規格
記錄及上傳資料
Tuning Fork 程式庫依賴的是它的一個刻點函式,在每個影格中由 Android Frame Pacing 程式庫呼叫。在程式庫中,此刻點資訊會彙整為直方圖,然後定期透過 HTTP 端點上傳至 Google Play。每個刻點都會記錄為與檢測金鑰和註解相關聯,也就是您在通訊協定緩衝檔中指定的定義。
檢測金鑰
檢測金鑰代表刻點在影格中的位置,是傳遞給每個刻點函式呼叫的整數。Android Frame Pacing 程式庫使用一組在 swappy_common.h
中定義的預定義檢測金鑰。如果您不使用 Frame Pacing 程式庫,也可以定義自己的檢測金鑰。
註解
註解可提供您遊戲當下發生情況的情境資訊。舉例來說,註解可標示下列任一項目:
- 目前的遊戲等級
- 螢幕上顯示「大老闆」
- 任何其他相關遊戲狀態資訊
註解是由 com.google.tuningfork.Annotation
通訊協定緩衝區訊息定義。如要設定目前的註解,您可以傳送您定義至 TuningFork_setCurrentAnnotation()
的訊息序列化。除非您設定了其他註解,否則所有後續的刻點資料都會與這項註解建立關聯。以下是註解的 Proto 定義範例:
import "tuningfork.proto"
enum Level {
INVALID_LEVEL = 0;
Level_1 = 1;
Level_2 = 2;
Level_3 = 3;
}
message Annotation {
optional Level level = 1;
}
擬真度參數
擬真度參數會影響遊戲的效能和圖形擬真度,例如網格細緻度、紋理解析度和鋸齒消除方法。與註解一樣,擬真度參數也是使用 com.google.tuningfork.FidelityParams
通訊協定緩衝區訊息來定義。以下是擬真度參數的 Proto 定義範例:
import "tuningfork.proto"
message FidelityParams {
int32 texture_quality_level = 1;
int32 shadow_resolution = 2;
float terrain_details_percent = 3;
int32 post_processing_effects_level = 4;
}
在 Tuning Fork 初始化時,您可傳遞遊戲使用的參數序列化。例如,就算使用者變更遊戲呈現設定,且後續的上傳資料與新參數相關聯,您也可以變更這些參數。
為了讓 Google Play 瞭解您定義的註解和擬真度參數,含有這些定義的通訊協定緩衝區檔案必須隨附在遊戲 APK 中,並提供初始化設定。此外,您也必須為 APK 中的常見擬真度參數組合提供預設值,才能在 Google Play UI 中依據這些預設值區隔資料。 詳情請參閱定義品質等級。
記憶體與 CPU 負擔
為避免在遊戲過程中產生意外,系統會在初始化時分配 Tuning Fork 程式庫使用的所有記憶體。資料大小取決於檢測金鑰的數量、可能的註解數量,以及每個直方圖中的值區數量;它是上述所有數量乘以每個值區的四個位元組的倍數。此外,所有直方圖都有兩個副本,方便以雙緩衝方式提交。
提交內容是在獨立執行緒上,不會阻斷滴答呼叫。如果沒有可用的上傳連線,系統會將提交內容排入佇列,以便稍後上傳。
呼叫刻點函式幾乎不會產生處理負擔,只會將索引計算為直方圖值區陣列,並增加整數計數。
整合 Tuning Fork 程式庫
這份整合指南分為兩個部分。第一部分說明如何使用試用版應用程式和 Google Play 管理中心執行端對端測試。第二部分說明如何將 Tuning Fork 程式庫整合至工具鏈,以及如何使用程式庫提供的函式。點選下方的「下一步」連結即可開始。