תחילת העבודה עם Android Dynamic Performance Framework ‏ (ADPF) ב-Unreal Engine

Android Dynamic Performance Framework‏ (ADPF) הוא כלי רב-עוצמה של Google למפתחים שרוצים לבצע אופטימיזציה של ביצועי האפליקציות שלהם. באמצעות ממשקי ה-API התרמיים, ADPF מספק מידע בזמן אמת על המצב התרמי של המכשיר, שמשמשים לאחר מכן לשינוי הגדרות הגרפיקה באפליקציה.

למטרות מחקר, Arm פיתחה דמו באמצעות Unreal Engine ו-ADPF כדי לבדוק איך משתמשים ב-ADPF כדי לבצע אופטימיזציה של ביצועי המשחק.

ADPF עוקב אחרי הסטטוס התרמי, ואיכות הגרפיקה מותאמת בהתאם במנוע המשחק.

מפתחים צריכים לזכור שהמטרה היא לאפשר למשתמשים לשחק במשחק למשך זמן ארוך יותר בלי להשפיע על חוויית המשחק ועל צריכת החשמל של המכשיר.

לפני שמתחילים

לפני שנמשיך לבדוק את הדגמה בפירוט, חשוב להדגיש את המסמכים הרשמיים של Google בנושא ADPF. המסמך הזה הוא מקור מידע חשוב שמספק תובנות מעמיקות והנחיות לשימוש ב-ADPF.

עם זאת, אם אתם מעדיפים ללמוד באופן מותאם אישית, מאגר הדוגמאות של ADPF מכיל דוגמאות מעשיות להטמעת ADPF באפליקציות ל-Android.

שינוי הגדרות הגרפיקה

בהקשר של Unreal Engine, אנחנו יכולים לשנות את הגדרות הגרפיקה באופן דינמי כדי לשמור על הביצועים.

השתמשנו ב-Thermal State Monitor וב-Thermal Headroom API ב-ADPF כדי לעקוב אחרי צמצום הביצועים כתוצאה מהתחממות. לאחר מכן תוכלו לשנות את הגדרות האיכות, כמו איכות הצללים, איכות ההשתקפות ואיכות המרקם, כשהמכשיר יתחיל לבצע הגבלת קצב העברת הנתונים.

ההגדרות הבאות של איכות הגרפיקה ב-Unreal Engine משמשות לשינוי הגדרות שונות:

  • ViewDistanceQuality
  • ShadowQuality
  • GlobalIlluminationQuality
  • ReflectionQuality
  • AntiAliasingQuality
  • TextureQuality
  • VisualEffectQuality
  • PostProcessingQuality
  • FoliageQuality
  • ShadingQuality
  • OverallScalabilityLevel

בדיקות בעולם האמיתי

אנחנו ב-Arm יוצרים משחקי דמו משלו, שמשמשים למחקר של גרפיקה בנייד וטכנולוגיות משחקים. השנה בדקנו את ADPF באחד מהם, הדמו של SteelArms.

ל-SteelArms יש רמות שונות של עוצמת גרפיקה ועומסי עבודה משמעותיים על המעבד. הוא נבנה כך שיהיה דומה למשחקים מודרניים לנייד, כדי שנוכל ליצור מודל של התנהגות המשחק בטלפונים הניידים של היום. בנוסף, היא מאפשרת לנו לבדוק איך טכנולוגיות שונות עשויות לפעול במשחק במכשירים ניידים מבוססי-Arm.

תוצאות

איור 1: השוואה של SteelArms במסך מלא עם ADPF וללא ADPF.

בתמונות הקודמות מוצג הבדל בין האיכות הטובה ביותר (קולנועי) לבין האיכות הנמוכה ביותר (נמוך) כש-ADPF מופעל כדי לשנות את הגדרות הגרפיקה. השינוי הזה מתבצע בהדרגה והמשתמשים לא יכולים להבחין בו במהלך המשחק.

איור 2: משחק עם שילוב של ADPF: מסך מפוצל.

תצוגת מסך מפוצל של הגדרות הגרפיקה הגבוהות ביותר בצד ימין (הרובוט הכחול) והגדרות הגרפיקה הנמוכות ביותר בצד ימין (הרובוט האדום).

איור 3: משחק עם שילוב ADPF: השוואה של פרטים זה לצד זה.
איור 4: משחק עם שילוב של ADPF: זה לצד זה.

בתמונות 3 ו-4 הקודמות אפשר לראות את אותה תצוגה של הרובוט, לצד לצד. אם מעיינים מקרוב, רואים את הגדרות הגרפיקה שהותאמו באמצעות ADPF. רואים את רצפת הזירה, את הכתף של הרובוט, את החבלים של הזירה ואת הקהל? נראה שאיכות כל התמונות נמוכה יותר, בגלל השימוש ב-ADPF.

כשהצטברו הרבה בקשות, האפקטים האלה הוקטנו בהדגמה של SteelArms. קשה לזהות את ההפחתות הקטנות האלה בעיבוד הווידאו ובאפקטים החזותיים. בנוסף, בדרך כלל המשתמשים לא יבחינו בהם בזמן המשחק. כך תוכלו לשמור על רוב חוויית הצפייה במשחק בלי לפגוע בחוויית המשחק. אתם יכולים לעשות את כל זה בלי לפגוע בביצועים של המשחק ובחיי הסוללה של המכשיר.

כפי שצוין קודם, למטרות הדגמה, אנחנו משווים בין תמונות באיכות הגבוהה ביותר לבין תמונות באיכות הנמוכה ביותר. לכן, עדיין אפשר לראות את ההבדל אם בוחנים אותו היטב. עם זאת, כשהתמונה מצטמצמת במהלך המשחק, המשתמש בקושי מבחין בכך, וחוויית המשחק נשארת יציבה.

תוצאות

איור 5: השוואות של FPS, טמפרטורת המכשיר, מצב תרמי ורווח עבודה כש-ADPF מופעל/מושבת (שיפור של כ-57% בשיעורי הפריימים)

המכשיר נמנע מהתחממות יתר ומתמיד בתוך מרווח תרמי של 1.0.

צריכת חשמל

איור 6: השוואה בין צריכת החשמל כש-ADPF מופעל/מושבת

תוצאות ADPF

התוצאות של ADPF כשהתכונה מושבתת וכשפעילה מוצגות בנתונים שצוינו למעלה. הצגת ההבדל בין קצב הפריימים של המשחק לבין צריכת החשמל של הליבות. כשהתכונה ADPF פועלת, קצב הפריימים משתפר בעד 57%. כש-ADPF מושבת, ה-GPU צורך כמות משמעותית של אנרגיה. לאחר מכן, ליבת המעבד הראשית תהיה עליות חדות בצריכת החשמל שתואמות לעומס העבודה של ה-GPU. כשהוא מתעדכן לגבי כמות העיבוד שהוא מתבקש לבצע. לעומת זאת, כש-ADPF מופעל, הליבה הגדולה של המעבד מגיבה לוויסות הקצב ומפחיתה את צריכת האנרגיה הכוללת של כל הליבות במכשיר.

סיכום

ADPF יכול לשפר באופן משמעותי את צריכת החשמל במשחקים. בסופו של דבר, המשמעות היא שזמן המשחק של הגיימרים ארוך יותר, עם חיי סוללה משופרים וטמפרטורה נמוכה יותר במכשיר שבו משתמשים. מנקודת המבט של המפתחים, ADPF שומר על קצב הפריימים הנכון של המשחק. תוך מתן גמישות להקטין את הגדרות האיכות ועדיין לספק למשתמש חוויית משחק מעולה.

גם במכשירים חדשים וגם במכשירים ישנים אפשר להפיק תועלת משימוש ב-ADPF. הוא מאפשר להריץ משחקים ברמה גבוהה במכשירים מדור קודם, בלי צורך לבצע אופטימיזציה נוספת.