ב-Android 15, קצב הרענון שמוגדר כברירת מחדל למשחקים הוא 60Hz, כדי לבצע אופטימיזציה של צריכת החשמל. כדי להפעיל קצב פריימים גבוה יותר, כמו 120 FPS, צריך עכשיו לבקש אותו באופן מפורש באמצעות Frame Rate API או ספריית Swappy.
עם זאת, המערכת עשויה לבטל את הבקשה הזו על סמך גורמים כמו רמת הסוללה או טמפרטורת המכשיר. קצב רענון גבוה יותר משפר את החלקות של התמונה, אבל הוא גם דורש יותר חשמל ויוצר יותר חום. לכן, חשוב מאוד להציע למשתמשים את האפשרות לבחור את קצב הרענון המועדף עליהם ולעקוב בקפידה אחרי הביצועים כדי להבטיח חוויית משתמש מאוזנת.
שימוש ב-setFrameRate() API
setFrameRate() API מאפשר למפתחי המשחקים להשתמש בקצב רענון ספציפי של המסך. יש שני שלבים לביצוע הפעולה הזו:
- בודקים את התאימות של המכשיר ושל גרסת Android.
- כדי לבקש FPS גבוה, משתמשים ב-
setFrameRate().
אימות התאימות של המכשיר וגרסת Android:
אפשר להשתמש בשיטות Display.getSupportedModes() כדי לבדוק אם המכשיר תומך ב-90Hz, ב-120Hz או בקצב רענון אחר. אם המכשיר מוגבל ל-60Hz,
אי אפשר לחרוג מהמגבלה הזו.
Kotlin
val display = windowManager.defaultDisplay
val supportedModes = display.supportedModes
for (mode in supportedModes) {
Log.d("DisplayInfo", "Supported mode: ${mode.physicalWidth}x${mode.physicalHeight}, ${mode.refreshRate}Hz")
}
בקשת FPS גבוה
מפעילים את setFrameRate() כשלולאת הרינדור מתחילה, במהלך האתחול של חלון המשחק או כשצריך לשנות את קצב הרענון של התצוגה בהתאם לקצב הפריימים ליעד.
גם אם תבקשו קצב רענון גבוה יותר, המערכת עדיין עשויה להגביל את קצב הרענון ל-60Hz בגלל גורמים כמו מצב חיסכון בחשמל או ויסות תרמי. אם ביצועי הרינדור של המשחק לא מגיעים ליעד של FPS, בקשה של קצב רענון גבוה יותר עלולה לגרום לצריכת חשמל מיותרת ולהעלות את הטמפרטורה של המכשיר.
בקטע הקוד הבא אפשר לראות איך להימנע מקצב רענון גבוה מדי באמצעות API setFrameRate().
Kotlin
val targetFps = 120f
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
window.setFrameRate(
targetFps,
Window.FrameRateCompatibility.FRAME_RATE_COMPATIBILITY_FIXED_SOURCE,
0
)
}
בדף בנושא קצב הפריימים יש מידע מפורט יותר.
שימוש בספרייה של קצב פריימים
ספריית קצב הפריימים, או Swappy, היא ספריית קוד פתוח שנועדה לפשט את הניהול של VSync ואת תזמון הפריימים במנועי משחקים של C/C++ Android.
הכלי הזה מייעל את תהליך האופטימיזציה של קצב הרענון, ובעצם משמש כשכבת הפשטה ברמה גבוהה יותר מעל פונקציות כמו setFrameRate(). בנוסף, Swappy מספק תכונות נוספות שיכולות לשפר את הפעולה החלקה והביצועים הכוללים של המשחק.
מידע מפורט יותר זמין בדף של Swappy.
טיפים נוספים לתוצאות הטובות ביותר
בקטע הבא מפורטים כמה טיפים חשובים:
- החלפה דינמית של קצב הפריימים.
- מעקב אחר ביצועים.
- מספקים אפשרויות FPS על סמך קצב הרענון המקסימלי של המסך.
החלפה דינמית של קצב הפריימים
כדי לבצע אופטימיזציה של הביצועים וצריכת החשמל, מומלץ להטמיע במשחק מעבר דינמי בין קצבי פריימים. הטכניקה הזו מאפשרת מעבר חלק בין קצב רענון גבוה יותר, כמו 120Hz, למשחק חלק יותר בסצנות תובעניות, לבין קצב רענון נמוך יותר, כמו 60Hz, ברגעים פחות אינטנסיביים או כשחיי הסוללה חשובים או כשמכוונים ל-60FPS. הפעלה קבועה של קצב רענון של 120Hz עלולה לגרום לחימום מוגזם ולריקון מהיר של הסוללה, וכתוצאה מכך לפגוע בחוויית המשתמש. התאמה חכמה של קצב הרענון על סמך עומס הרינדור הנוכחי ותנאי המכשיר מאפשרת להגיע לאיזון בין דיוק חזותי לבין יעילות בצריכת החשמל.
מעקב אחר ביצועים
כדי לוודא שהמשחק פועל בצורה אופטימלית בקצבי רענון גבוהים יותר, כדאי לשלב כלי מעקב אחר הביצועים, כמו מונה פריימים או שכבת-על של ביצועים. הכלים האלה מספקים משוב בזמן אמת על קצב הפריימים בפועל של המשחק, ומאפשרים לכם לוודא שאתם משיגים באופן עקבי את היעד של 120 FPS.
אם קצב הפריימים משתנה באופן משמעותי, כדאי לטרגט קצב פריימים נמוך יותר שאפשר להשיג במכשיר הנתון. כך אפשר ליהנות מחוויה חלקה יותר בלי בעיות בביצועים שעלולות להתרחש כשמנסים להשיג את קצב הרענון הגבוה ביותר.
מספק אפשרויות FPS על סמך קצב הרענון המקסימלי של המסך
המשחק צריך לזהות את קצב הרענון המקסימלי של המסך שנתמך במכשיר הנוכחי, כמו 60Hz, 90Hz או 120Hz, ולהגביל את הגדרות ה-FPS בהתאם. לדוגמה, אם המכשיר תומך רק בקצב רענון של עד 60Hz, מומלץ להשבית בהגדרות המשחק את כל האפשרויות שגבוהות מ-60FPS כדי למנוע בלבול של השחקן.