במדריך הזה מוסבר איך להשתמש בפלאגין Unity כדי לתעד ולהעלות נתוני זמן פריימים מ-Unity 2017.4 ואילך.
אם אתם משתמשים במנועי משחקים שמבוססים על C או C++, תוכלו לעיין במדריך למנועי משחקים מקוריים.
רקע
רכיב מרכזי בחוויית המשחק הוא ביצועי הרינדור. ביצועי העיבוד הם תוצאה של שני נתונים:
- קצב פריימים: באיזו תדירות מצויר פרים.
- הגדרות איכות גרפית: רמת הדיוק שבה מוצג פריים, כולל דיוק הסימולציה והגרפיקה.
במשחקים, ביצועי רינדור טובים מוגדרים כך:
- הצגת קצב פריימים יציב ועקבי (כלומר, אחוז הפריימים שמוצגים בתדירות הרצויה).
- רינדור פריימים בתדירות הגבוהה ביותר האפשרית תוך שמירה על יציבות, בדרך כלל 30 או 60 פריימים לשנייה, בהתאם לסוג המשחק.
- הגדלת רמת הפירוט למשתמש בהתאם לגודל המסך ולצפיפות הפיקסלים, תוך שמירה על קצב פריימים יציב ורצוי.
ספריית Android Frame Pacing מגבילה את רוב השינויים בזמני הרינדור של הפריים, ומספקת קצב פריימים יציב למשחקים. השונות שנותרה בזמני הפריימים נובעת מרמת הפירוט שמוצגת במהלך סצנות מסוימות במשחק ומהיכולות הגרפיות של המכשיר. באמצעות Android Performance Tuner, אפשר לזהות מקרים במהלך המשחק שבהם זמן הרינדור של הפריים איטי או מהיר יותר מהיעד, ולקשר בין הבעיות וההזדמנויות האלה לבין:
- הגדרות איכות ספציפיות
- סצנות ספציפיות במשחק
- דגמים ספציפיים של מכשירים או מפרטים של מכשירים
הקלטה והעלאה של נתונים
ספריית Tuning Fork מסתמכת על אחת מפונקציות ה-tick שלה שמופעלת בכל פריים על ידי ספריית Android Frame Pacing (או על ידי מנוע Unity בגרסאות ישנות יותר של Unity שבהן ספריית Frame Pacing לא קיימת). בספרייה, המידע הזה על הטיקים נצבר בהיסטוגרמות, שמועלות מעת לעת ל-Google Play דרך נקודת קצה (endpoint) של HTTP. כל סימון נרשם כמשויך למפתח כלי ולהערה. אתם מגדירים את ההערות באמצעות הפלאגין Unity.
מפתחות לציון מקום
מפתח כלי מציין את המיקום בפריים שממנו מגיע הטיק, והוא מספר שלם שצריך להעביר לכל קריאה של פונקציית טיק. הפעולה הזו מתבצעת באופן אוטומטי על ידי הפלאגין Unity. אם האפשרות Optimized Frame Pacing (אופטימיזציה של קצב הפריימים) מופעלת בהגדרות Unity של המשחק (זמינה ב-Unity מגרסה 2019.3.14 ואילך), Android Performance Tuner ישתמש במידע מספריית Android Frame Pacing כדי לדווח על מדדים משופרים.
הערות
ההערות מספקות מידע הקשרי על הפעולות שהמשחק מבצע כשמתועד טיק. לדוגמה, הערה יכולה לזהות כל אחד מהפריטים הבאים:
- הרמה הנוכחית במשחק
- סצנה ספציפית נטענת
- "הבוס הגדול" מופיע על המסך
- כל מידע רלוונטי אחר על מצב המשחק
ההערות מוגדרות בתיבת דו-שיח שמופיעה בתוסף Unity.
באופן פנימי, ספריית Tuning Fork משתמשת בפורמט של פרוטוקול למאגר נתונים זמני של Google כדי לאחסן הערות ופרמטרים של איכות. זהו פרוטוקול מוגדר היטב, רב-לשוני, לנתונים מובְנים שניתנים להרחבה. מידע נוסף זמין במסמכי התיעוד בנושא Protocol Buffers.
פרמטרים של אמינות
פרמטרים של דיוק משפיעים על הביצועים ועל הדיוק הגרפי של המשחק, כמו רמת הפירוט של הרשת, רזולוציית הטקסטורה ושיטת ההחלקה. בדומה להערות, פרמטרי אמינות (Fidelity) מוגדרים בתיבת דו-שיח שמופיעה בתוסף Unity.
תקורה של זיכרון ומעבד
כל הזיכרון שבו נעשה שימוש בספריית Tuning Fork מוקצה בזמן האתחול כדי למנוע הפתעות במהלך המשחק. גודל הנתונים תלוי במספר מפתחות המכשירים, במספר ההערות האפשריות ובמספר הדליים בכל היסטוגרמה. הוא שווה למכפלה של כל אלה כפול ארבעה בייטים לכל דלי. יש גם שני עותקים של כל ההיסטוגרמות כדי לאפשר שליחה בשיטת באפרינג כפול.
השליחה מתבצעת בשרשור נפרד ולא חוסמת קריאות של tick. אם אין חיבור להעלאה, השליחה מתווספת לתור להעלאה מאוחר יותר.
התקורה של קריאה לפונקציית tick היא נמוכה: היא פשוט מחשבת אינדקס למערך של משבצות היסטוגרמה ומגדילה את ספירת המספרים השלמים.
בקשות אינטרנט
הספרייה שולחת שני סוגים של בקשות לנקודת הקצה של השרת:
- בקשת
generateTuningParameters
במהלך האתחול - מדי פעם במהלך המשחק, מתבצעת בקשת
uploadTelemetry
לשליחת נתונים לשרת
שחקנים אופליין
אם אין חיבור זמין בזמן האתחול, המערכת מנסה לשלוח את הבקשה כמה פעמים עם זמן השהיה הולך וגדל. אם אין חיבור בזמן ההעלאה, ההעלאה נשמרת במטמון. ההעלאות מאוחסנות כקבצים באחסון זמני.
דרישות
כדי להשתמש בפלאגין במשחק, צריך להשתמש בגרסה נתמכת של Unity:
- Unity מגרסה 2017.4 ואילך ו-.NET מגרסה 4.6
- כדי להשתמש בקובצי הרחבה של APK, נדרשת Unity 2018.2
- כדי לשפר את קצב הפריימים ואת מדידות ה-GPU, צריך להשתמש ב-Unity מגרסה 2019.3.14 ואילך
- כדי לתמוך בסצנות של Addressables, צריך להשתמש ב-Unity 2019.3 ואילך ובחבילת Addressables בגרסה 1.19.4 ואילך.
שילוב של Android Performance Tuner ב-Unity
מידע על שילוב של Android Performance Tuner ב-Unity זמין במאמר בנושא הפעלת ה-API.