


חברת Netmarble, מפתחת מובילה של משחקים לנייד, פיתחה את Game of Thrones: Kingsroad (בקרוב ל-Android), משחק תפקידים פעולה-הרפתקאות שמבוסס על סדרת Game of Thrones שזכתה בפרס Emmy® ובפרס Golden Globe®. הם נתקלו בבעיות בביצועים, במיוחד בוויסות תרמי, במהלך הפעלת המשחק במכשירי Android, והבעיות השפיעו על הביצועים ועל חוויית המשתמש. כדי לטפל בבעיה הזו, הם השתמשו באופן אסטרטגי ב-Android Adaptive Performance Framework (ADPF) והטמיעו אופטימיזציות שמתמקדות בהתאמה לעומס (scaling) של הרזולוציה ובכוונון דינמי של קצב הפריימים.
האתגר
משחקים לנייד באיכות גבוהה דורשים משאבים משמעותיים של מעבד גרפי ומעבד, ולרוב מובילים ליצירת חום מוגזמת ולצמצום תרמי של המהירות במכשירי Android. ב-Netmarble ציינו שסשנים ארוכים של משחקים גרמו לעלייה בטמפרטורה של המכשיר, וכתוצאה מכך לירידה בביצועים, כולל ירידות בקצב הפריימים וביצועים לא עקביים. האתגר העיקרי היה לשמור על חוויית משתמש מעניינת מבחינה ויזואלית תוך ניהול יעיל של טמפרטורות המכשיר כדי למנוע הגבלת קצב התעבורה (throttling) ולהבטיח ביצועים עקביים.
הפתרון
ב-Netmarble השתמשו בגישה מבוססת-נתונים כדי להשתמש ב-ADPF, והתמקדו בהתאמות דינמיות על סמך סטטוס תרמי בזמן אמת.
זיהוי צווארי בקבוק בביצועים
חברת Netmarble ערכה ניתוח ביצועים יסודי, ובדקה את ההשפעה של הגדרות שונות של איכות הגרפיקה על קצב הפריימים ועל העומס התרמי. מהניתוח הזה עולה שההשפעה המשמעותית ביותר על עומס ה-GPU ועל הפלט התרמי הייתה לשינוי הרזולוציה, בלי להשפיע באופן משמעותי על קצב הפריימים. חשוב לציין שהם גילו שלאפשרויות גרפיקה אחרות (צללים, טקסטורות וכו') הייתה השפעה מינימלית יחסית על הביצועים התרמו-פיזיים הכוללים.
התאמה דינמית של רזולוציה
Netmarble הוסיפה מערכת דינמית לפתרון בעיות. הוא משתנה את איכות התמונה של המשחק בהתאם לטמפרטורה של המכשיר, באמצעות ADPF Thermal API. כך המשחק יכול להתאים את עצמו לתנאים שונים. כשהמכשיר קריר, המשחק פועל ברזולוציה גבוהה. אם המכשיר מתחמם יותר מדי, הרזולוציה של המשחק תופחת כדי לצמצם את החום.
התאמה דינמית של קצב הפריימים
בשילוב עם התאמת הרזולוציה, Netmarble הטמיעה התאמות דינמיות של קצב הפריימים. אם יעד ה-FPS של המשחק מוגדר ל-60, המערכת יכולה להפחית בהדרגה את יעד ה-FPS כשמזוהה חום מוגזם. כדי להימנע מבעיות תרמיות, Netmarble הגדרה את קצב הפריימים המינימלי שניתן לשינוי ל-30. כך מובטחת חוויית גיימינג עקבית. בנוסף, המערכת תוכננה כך שתגדיל בהדרגה את FPS בחזרה ליעד כשהחום יורד, כדי לשמור על ביצועים אופטימליים.
תוצאות
ההטמעה של התאמת רזולוציה דינמית והתאמות דינמיות של FPS, שמבוססות על ADPF, הביאה לשיפורים משמעותיים בניהול התרמי ובביצועים לאורך זמן.

- שיפור של מרווח חום: ADPF הפחית את המרווח החום הממוצע מ-1.04 ל-0.92 (ירידה של 11%), וכך מנע ירידה בביצועים ושפר את אורך החיים של המכשיר. הערך של מרווח התרמי לעולם לא חרג מ-1.0, וכך מנע התחממות יתר של המכשיר.
- קצב פריימים עקבי יותר: ADPF מספק חוויית משחק חלקה יותר על ידי התאמה חכמה של יעד ה-FPS של המשחק על סמך המצב התרמי של המכשיר. ללא ADPF, שיעור הפריימים לשנייה (FPS) של המשחק עשוי להשתנות באופן משמעותי (למשל, מ-40 ל-56) בגלל הגבלת הספק תרמית. שיעור הפריימים הלא עקבי הזה, שנגרם בגלל שהמכשיר מתקשה לנהל את החום, עלול להוביל לחוויית משחק לא נעימה ומקפיצה. כשמשתמשים ב-ADPF, המשחק מפחית באופן יזום את יעד ה-FPS לפי הצורך כדי למנוע הצטברות חום מוגזמת, וכך מבטיח קצב פריימים יציב ועקבי יותר, בדרך כלל בטווח של 50-60FPS. כך אפשר למנוע ירידות חדות בקצב הפריימים שמשויכות לוויסות תרמי, וכתוצאה מכך חוויית הצפייה בנגן נעימה יותר ומוצלחת יותר.
- שימור על גרפיקה באיכות גבוהה: Netmarble העדיפה שינוי רזולוציה בתור מנגנון ההתאמה העיקרי, כדי למזער את ההשפעה החזותית של ניהול החום, תוך שמירה על הגדרות אחרות (טקסטורות, אפקטים וכו') ברמות גבוהות יותר.
סיכום
התמקדות של Netmarble בשינוי רזולוציה ובתיקונים דינמיים של FPS בהתאם ל-ADPF אפשרה להפחית את בעיות ההתחממות יתר ב-Game of Thrones: Kingsroad, תוך שמירה על איזון אופטימלי בין הביצועים, האיכות החזותית וחוויית המשתמש. השימוש האסטרטגי שלהם ב-ADPF מדגים גישה יעילה למפתחי משחקים לנייד שנתקלים באתגרים דומים. ADPF אפשרה חוויה מהנה, עקבית ואמינה יותר, שמאפשרת לשחקנים לשחק יותר זמן עם פחות ירידות קצב פריימים ופחות חששות לגבי התחממות יתר של המכשיר. בעזרת הפתרון הזה, Netmarble ממשיכה לספק חוויית משחק איכותית תוך שמירה על ביצועים לאורך זמן ועל אורך חיים אופטימלי של המכשיר.
מתחילים היום לעבוד עם ADPF ב-Unity, ב-Unreal וב-C++
מפתחים שרוצים להשתמש ב-Android Adaptability צריכים לבצע את הפעולות הבאות:
- מידע נוסף על ADPF, על הפלאגין ADPF של Unreal Engine ועל הספק של Unity Adaptive Performance ל-Android
- שימוש ב-ADPF עם רמות האיכות שמוגדרות כברירת מחדל ב-Unity ועם היכולת להתאמה של Unreal Engine.
- כדאי לעקוב אחרי הביצועים של המשחק כדי לוודא שהוא עומד בציפיות. כדאי לנסות הגדרות שונות – רזולוציה, שיעורי פריימים, צללים, טקסטורות וכו' – כדי למצוא את הביצועים הטובים ביותר ואת העלייה התרמית המינימלית.
- משנים את הגדרות איכות הגרפיקה בנפרד כדי לצמצם ירידות חדות בביצועים.
לא משנה באיזה מנוע אתם משתמשים, תמיד תוכלו להשתמש ב-API ישירות. מידע נוסף זמין במאמרים התאמה של Android והפלאגין ADPF של Unreal Engine.