במסמך הזה נסביר איך להגדיר הערות, פרמטרים של איכות בהגדרות הפרויקט.
פרמטרים של הערות ואיכות
הערות מספקות מידע הקשרי לגבי מה שהמשחק שלך עושה כאשר תיבת הסימון מתועדת. פרמטרים של איכות משקפים את הביצועים הגדרות המשחק. אתם מגדירים אותם באמצעות מאגרי פרוטוקולים, שהם פורמט של Google - נייטרלי שפה, מובנה, חילופי נתונים. לקבלת מידע נוסף על שימוש במאגרי פרוטוקולים זמניים במשחק, מידע על מאגרי נתונים זמניים בפרוטוקול
ההערות והפרמטרים האפשריים של רמת הדיוק במשחק מוגדרים
קובץ בשם dev_tuningfork.proto
, שנמצא בתיקייה assets/tuningfork
של הפרויקט. הדוגמה הבאה היא מאפליקציית ההדגמה:
syntax = "proto3";
package com.google.tuningfork;
enum InstrumentKey {
CPU = 0;
GPU = 1;
SWAPPY_WAIT = 2;
SWAPPY_SWAP = 3;
CHOREOGRAPHER = 4;
}
enum Level {
// 0 is not a valid value
LEVEL_INVALID = 0;
LEVEL_1 = 1;
LEVEL_2 = 2;
LEVEL_3 = 3;
};
message Annotation {
Level level = 1;
}
message FidelityParams {
int32 num_spheres = 1;
float tesselation_percent = 2;
}
שימו לב:
- החבילה חייבת להיות
com.google.tuningfork
. - שמות ההודעות חייבים להיות בדיוק
Annotation
ו-FidelityParams
. - אפשר להשתמש רק ב-
enums
שהוגדר בקובץ הזה כחלק מהערות. - אפשר להשתמש ב-
enums
, ב-int32s
או ב-floats
רק בשדותFidelityParams
. - כלי האימות אוכף את המוסכמות האלה.
הגדרות
ההודעה Settings
מוגדרת על ידי tuningfork.proto
. דוגמה מלאה
קובץ הבא:
gamesdk/samples/tuningfork/insightsdemo/app/src/main/assets/tuningfork/tuningfork_settings.txt
עליך לקבוע את ההגדרות של המשחק בקובץ בשם
הקובץ tuningfork_settings.txt
נמצא בספרייה assets/tuningfork
של
פרויקט. צריך לציין רק את השדות הבאים:
aggregation_strategy
: הודעה שכוללת:method
:TIME_BASED
להעלאה כל n אלפיות השנייה אוTICK_BASED
כדי להעלות כל n סימונים.intervalms_or_count
: n לשדהmethod
.max_instrumentation_keys
: מספר מקשי האינסטרומנטציה שבהם צריך להשתמש. סיום אל4
אם משתמשים בספרייה של Android Frame Pacing.annotation_enum_size
: שדה אופציונלי מאחר שהגודל מחושב בזמן ההפעלה מהמתאר.
api_key
: מפתח ה-API של הפרויקט ב-Cloud של האפליקציה, שמשמש לאימות בקשות אל נקודת הקצה. כדי ליצור את המפתח הזה: מפעילים את ה-API. אם המיקום מופיעות שגיאות חיבור ב-logcat
, יש לוודא שמפתח ה-API נכון.default_fidelity_parameters_filename
: פרמטר הדיוק שהוגדר אתחול (אופציונלי אםtraining_fidelity_params
בקוד).level_annotation_index
: (אופציונלי) האינדקס בשדות ההערות שלך של מספר הרמה.
הנה דוגמה לייצוג טקסט:
aggregation_strategy: {method: TIME_BASED, intervalms_or_count: 10000,
max_instrumentation_keys: 5, annotation_enum_size: [3,4]}
api_key: "API-KEY-FROM-GOOGLE-CLOUD-CONSOLE"
default_fidelity_parameters_filename: "dev_tuningfork_fidelityparams_3.bin"
level_annotation_index: 1
הגדרת הערות
צריך להגדיר הערות באופן ידני במהלך המשחק. אפשר לראות
דוגמה לכך באפליקציית ההדגמה במהלך הסבב של כל השלבים במשחק
באופן אוטומטי. לקבלת מידע נוסף, אפשר להיעזר בפונקציה SetAnnotations()
insightsdemo.cpp
.
במקרה הזה, ההערה מציינת רק את מספר הרמה.
message Annotation {
Level level = 1;
}
הגדרה של רמות איכות
אפשר להשתמש ברמות איכות כדי להוסיף הערות לסשנים, וכך לקבוע אם המכשירים פועל ברמת איכות גבוהה מדי (וכתוצאה מכך ביצועים נמוכים) או נמוכה מדי (וכתוצאה מכך האיכות נמוכה שלא לצורך).
עליך להגדיר לפחות רמת איכות אחת, ועדיף גם כמה, עבור
משחק. רמת איכות תואמת למופע של FidelityParams
הודעה. יש לציין את הרמות האלה בסדר עולה יותר עם המאפיין של
הפורמט של שמות הקבצים הבאים:
dev_tuningfork_fidelityparams_i.txt
כאשר i
הוא אינדקס שמתחיל ב-1 עם ערך מקסימלי
מתוך 15. הקבצים האלה חייבים להיות בספרייה assets/tuningfork
של
פרויקט. הפרויקט לדוגמה מציג דוגמה למבנה הזה
gamesdk/samples/tuningfork/insightsdemo/app/src/main/assets/tuningfork/
מידע על מאגרי פרוטוקולים
הספרייה Tuning Fork משתמשת בפורמט מאגר הנתונים הזמני של Google לצורך ההגדרות, ההערות ופרמטרים של דיוק. זוהי מדיניות מוגדרת היטב, פרוטוקול רב-לשוני לנתונים מובנים ניתנים להרחבה. לקבלת מידע נוסף, לראות את מסמכי תיעוד של מאגרי פרוטוקולים
Proto2 לעומת proto3
הגרסה של פורמט מאגר הנתונים הזמני של הפרוטוקול מוגדרת בשורה הראשונה של הקובץ:
syntax="proto2";
Proto2 ו-proto3 הן שתי גרסאות נפוצות של מאגרי נתונים זמניים בפרוטוקולים. שתיהן משתמשים באותו פורמט של כבל, אבל קובצי ההגדרה לא תואמים. מפתח ההבדלים בין שתי הגרסאות כוללים את ההבדלים הבאים:
- מילות המפתח
optional
ו-required
לא מותרות יותר ב-proto3. - ב-proto3, הכול יעיל ב-
optional
. - תוספים לא נתמכים ב-proto3.
השתמשו ב-proto3 בקובצי Proto כי אפשר להדר אותם ל-C#. Proto2 פועל וגם עם קבוצת התכונות המוגבלת שנמצאת בספריית Tuning Fork.
ייצוגים טקסט לעומת ייצוגים בינאריים
פורמט החוטים הבינאריים של Protobuf מוגדר היטב ויציב
גרסאות Protobuf (הקוד שנוצר לא). יש גם פורמט טקסט
את הגרסה המלאה של ספריית Protobuf תוכל ליצור ולקרוא. הפורמט הזה הוא
אך הוא יציב ביחס לקבוצה המוגבלת של תכונות
ספריית כוונון המזלג. ניתן להמיר בין פורמט בינארי לפורמט טקסט
באמצעות המהדר (compiler) protoc
. הפקודה הבאה ממירה פרוטוקול טקסט
בינארית:
protoc --encode com.google.tuningfork.Settings tuningfork.proto < tuningfork_settings.txt > tuningfork_settings.bin
צריך לכלול קבצים בינאריים ולא קובצי טקסט ב-APK כי ספריית Protobuf מלאה היא בגודל של כמהMB; להכין את מזלג הכוונון תלויה בכך, הוא יגדיל את גודל המשחק במידה דומה.
מלא לעומת Lite לעומת נאנו
בנוסף לספריית Protobuf המלאה, יש גרסת Lite שמפחיתה את הקוד
טביעת רגל באמצעות הסרת תכונות מסוימות כמו השתקפות, FileDescriptors
ו
סטרימינג מפורמטים של טקסט, וממנו. לגרסה הזו עדיין נדרשים כמהMB
טביעת רגל נוספת של קוד, ולכן הספרייה Tuning Fork משתמשת באופן פנימי
לספריית ננו-b. קוד המקור
לספרייה הזו כלולה בפרויקט הקוד הפתוח של Android ב-external/nanopb-c
וגם
הוא חלק מהסתעפות gamesdk
. יש להשתמש בספרייה הזו במשחק אם גודל הקוד
היא בעיה.
יש קובצי CMake ב-gamesdk/src/protobuf
שיכולים לעזור לך לשלב
את כל שלוש הגרסאות של הפרוטובוף. בדגימות נעשה שימוש בשילוב של ננו-ביות ומלא
ב-Protobuf.