התערבות במצב משחק היא אופטימיזציה ספציפית למשחקים שמוגדרת על ידי יצרני ציוד מקורי (OEM) כדי לשפר את הביצועים של משחקים שהמפתחים כבר לא מעדכנים. לדוגמה:
- שימוש בשינוי הגודל של מאגר הנתונים הזמני של windowManager.
- שימוש ב-ANGLE במקום בנהגים מקומיים של GLES.
אתם יכולים לאפשר למשחק לתמוך ולנהל את Game Mode API, כדי שהוא יוכל לבטל התערבויות של מצב משחק שסופקו על ידי יצרן הציוד המקורי (OEM).
ממשק ה-API של מצב המשחק והפעולות זמינים במכשירים הבאים:
- מכשירי Android 12 נבחרים
- במכשירים עם Android 13 ואילך
כל משחק יכול:
- מטמיעים את ההתנהגות של Game Mode API,
- להציע ליצרני ציוד מקורי הגדרות של התערבויות במצב משחק, או
- לבטל באופן מפורש את התערבויות מצב המשחק.
רקע
בקטע הזה נסביר מה עושות ההתערבויות במצב משחק ואיך לבצע אופטימיזציה של המשחק בכל מצב.
שינוי הגודל של מאגר הנתונים הזמני של windowManager
התערבות לשינוי הגודל של מאגר ה-backbuffer ב-WindowManager יכולה להפחית את העומס על המעבד הגרפי של המכשיר. היא גם יכולה לצמצם את צריכת הסוללה כשקצב המשחק הוא לפי קצב פריימים יעד.
הפעלת שינוי הגודל יכולה להוביל לירידה של עד 30% בצריכת ה-GPU ו-10% בצריכת האנרגיה הכוללת של המערכת. התוצאות עשויות להשתנות בהתאם למכשיר שבו נעשה שימוש, לתנאי הסביבה ולגורמים אחרים, כמו עיבוד בו-זמני.
במשחק ללא קצב שבו יש הגבלה על GPU, סביר להניח שיהיו שיעורי פריימים גבוהים יותר במהלך עומסי GPU מופחתים.
אנחנו ממליצים מאוד שכל המשחקים יתנהלו בקצב טוב, כי קצב פריימים לא שווה משפיע באופן משמעותי על האופן שבו המשתמשים תופסים את הביצועים.
ויסות נתונים (throttle) של FPS
ויסות נתונים (throttle) של FPS ב-Android הוא התערבות במצב משחק שעוזר למשחקים לפעול בקצב פריימים יציב יותר כדי לצמצם את צריכת הסוללה. התכונה זמינה ב-Android 13 ואילך. למידע נוסף, קראו את הסקירה הכללית על הגבלת FPS.
הערכת התערבויות במצב משחק
בקטע הזה נעשה שימוש בפקודה adb.
הגדרת המצבים
עליך לבטל את ההצטרפות ל'מצבי משחק' בקובץ התצורה של מצב משחק באפליקציה, לפני בדיקת ההתערבות במצב משחק. אחרת, הפלטפורמה תתעלם מהן ותתייחס רק לאופטימיזציות במשחק.
<?xml version="1.0" encoding="UTF-8"?>
<game-mode-config
xmlns:android="http://schemas.android.com/apk/res/android"
android:supportsBatteryGameMode="false"
android:supportsPerformanceGameMode="false"
/>
(אופציונלי) גיבוי של תצורת המכשיר הקיימת
במכשירי Pixel או במכשירים אחרים, יכול להיות שהגדרה קיימת של התערבות במשחקים כבר מוגדרת בהגדרות המכשיר. אפשר לשלוח שאילתה להגדרות באמצעות הפקודה:
adb shell device_config get game_overlay <PACKAGE_NAME>
אם השאילתה מחזירה את הערך null
, מתעלמים מההגדרה הקיימת. אחרת, אפשר לשמור אותה ולאפס אליה לאחר ההערכה.
הערכת התערבויות
כדי להעריך את ההתערבות של WindowManager בגודל של מאגר ה-backbuffer בנפרד, משתמשים בפקודה הבאה כדי להגדיר ערכים שונים של שינוי גודל מאגר ב-WindowManager במצבי המשחק השונים.
adb shell device_config put game_overlay <PACKAGE_NAME>
mode=2,downscaleFactor=0.9:mode=3,downscaleFactor=0.5
בדוגמה שלמעלה, הערך mode=2
הוא 'ביצועים' ו-mode=3
הוא 'חיסכון בסוללה'. הערך של downscaleFactor
מצוין כאחוז
שחל על הגדרת הגודל (לדוגמה, 0.7 הוא 70% ו-0.8 הוא 80%). שינוי גודל של 90% (0.9) הוא כמעט זניח, בעוד ששינוי גודל של 50% (0.5) הוא משמעותי.
אזהרה: יכול להיות שגודל התהליכים הצאצאים לא ישתנה בצורה נכונה ב-Android 12. במיוחד, חשוב לוודא שההצגה של הודעות קצרות ושל חלונות קופצים תקינה. מומלץ להגביל את הגדרת שינוי הגודל ל-70% לפחות.
אחרי שמגדירים את הערכים החדשים לשינוי הגודל, עוברים בין מצבי המשחק כדי לראות איך המשחק מושפע מהתערבות של WindowManager לשינוי הגודל של מאגר ה-backbuffer:
adb shell cmd game mode [standard|performance|battery] <PACKAGE_NAME>
חשוב להפעיל מחדש את המשחק אחרי כל בחירה של מצב משחק. כדי לבצע את ההתערבות של הפחתת הרזולוציה, צריך להפעיל מחדש את האפליקציה.
ביטול ההסכמה להתערבויות
אתם יכולים לקבוע אם התערבות תוחל על המשחק שלכם על ידי ביטול ההסכמה. לכל התערבות יש הגדרה משלה לביטול ההסכמה.
- אותו קובץ XML של תצורה שמשמש לניהול ההסכמה לשימוש במצבי המשחק והסרה של ההסכמה משמש גם להגדרות ההתערבות:
<?xml version="1.0" encoding="UTF-8"?>
<game-mode-config
xmlns:android="http://schemas.android.com/apk/res/android"
android:allowGameDownscaling="false"
android:allowGameFpsOverride="false"
/>
- צריך ליצור מחדש את המשחק ולשלוח אותו מחדש כדי לבטל את ההסכמה.
כברירת מחדל, המערכת תשתמש בהתערבויות שהוגדרו על ידי יצרני הציוד המקורי (OEM), אלא אם תבטלו את השימוש בהן במשחק באופן מפורש.
משאבים
מידע נוסף על מדידה ואופטימיזציה של ביצועי משחקים:
כלי ליצירת תמונת מצב של מערכת – ניתוח השימוש במעבד (CPU) והקריאות לרכיבי הגרפיקה.
Android GPU Inspector – כלי לפרופיל גרפיקה ב-Android.
Android Frame Pacing Library – ספרייה שבעזרתה משחקים ב-OpenGL וב-Vulkan יכולים להשיג רינדור חלק וקצב פריימים תקין.
Android Performance Tur – מדידה ואופטימיזציה של קצב הפריימים והגרפיקה במכשירי Android בקנה מידה רחב.
Power Profiler – כלי לזיהוי מקומות שבהם האפליקציה צורכת יותר אנרגיה מהנדרש.