ב-Android 15 קצב הרענון שמוגדר כברירת מחדל למשחקים הוא 60Hz, כדי לשפר את צריכת האנרגיה. כדי לקבל גישה לשיעורי פריימים גבוהים יותר, כמו 120FPS, צריך לבקש אותם באופן מפורש באמצעות Frame Rate API או הספרייה Swappy.
עם זאת, המערכת עשויה לבטל את הבקשה הזו על סמך גורמים כמו רמת הטעינה של הסוללה או טמפרטורת המכשיר. קצב רענון גבוה יותר משפר את חלקות התצוגה, אבל הוא גם צורך יותר חשמל ויוצר יותר חום. לכן חשוב לתת למשתמשים אפשרות לבחור את קצב הרענון המועדף עליהם ולעקוב בקפידה אחרי הביצועים כדי להבטיח חוויית משתמש מאוזנת.
שימוש ב-API של setFrameRate()
ה-API של setFrameRate()
מאפשר למפתחי המשחקים להשתמש בקצב רענון ספציפי של המסך. יש שני שלבים לביצוע הפעולה הזו:
- בודקים את התאימות של המכשיר וגרסת 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()
כשמחזור העיבוד מתחיל, במהלך האימות של חלון המשחק או כשצריך לשנות את קצב הרענון של המסך בהתאם ליעד של FPS.
גם אם תבקשו קצב גבוה יותר, יכול להיות שהמערכת עדיין תגביל את קצב הרענון ל-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
)
}
בדף Framerate מפורט מידע נוסף.
שימוש בספרייה של קצב מסגרות
ספריית קצב הפריימים, או Swappy, היא ספריית קוד פתוח שנועדה לפשט את הניהול של VSync ואת תזמון הפריימים במנועי משחקים ל-Android ב-C/C++.
הכלי הזה מייעל את תהליך האופטימיזציה של שיעורי הרענון, ומעשה משמש כשכבת הפשטה ברמה גבוהה יותר מעל פונקציות כמו setFrameRate()
. בנוסף, Swappy מספק תכונות נוספות שיכולות לשפר את הביצועים והחלקות הכוללים של המשחק.
בדף Swappy יש מידע מפורט יותר.
טיפים נוספים לקבלת התוצאות הטובות ביותר
בקטע הבא מפורטים כמה טיפים מובילים:
- מעבר דינמי לקצב פריימים.
- מעקב אחר ביצועים.
- יש לספק אפשרויות FPS על סמך קצב הרענון המקסימלי של המסך.
מעבר דינמי לקצב פריימים
כדי לבצע אופטימיזציה של הביצועים ושל צריכת החשמל, כדאי להטמיע במשחק החלפה דינמית של קצב הפריימים. הטכניקה הזו מאפשרת לעבור בצורה חלקה בין קצב רענון גבוה יותר, כמו 120Hz, כדי לקבל חוויית משחק חלקה יותר בסצנות תובעניות, לבין קצב רענון נמוך יותר, כמו 60Hz, ברגעים פחות אינטנסיביים או כשחיי הסוללה חשובים או כשמגדירים יעד של פחות מ-60FPS. הפעלה רציפה של המסך בתדר 120Hz עלולה לגרום ליצירת חום מוגזמת ולהתרוקנות מהירה של הסוללה, וכתוצאה מכך לחוויית משתמש שלילית. על ידי התאמה חכמה של קצב הרענון על סמך עומס העיבוד הנוכחי ותנאי המכשיר, אפשר להגיע לאיזון בין איכות התצוגה לבין יעילות האנרגיה.
מעקב אחר ביצועים
כדי להבטיח שהמשחק יפעל בצורה אופטימלית בקצב רענון גבוה יותר, כדאי לשלב כלים למעקב אחר ביצועים, כמו מונה פריימים או שכבת-על של ביצועים. הכלים האלה מספקים משוב בזמן אמת על קצב הפריימים בפועל של המשחק, ומאפשרים לכם לוודא שאתם משיגים באופן עקבי את יעד ה-FPS של 120.
אם קצב הפריימים תנודתי באופן משמעותי, כדאי לטרגט קצב פריימים נמוך יותר שאפשר להשיג במכשיר הנתון. כך תוכלו ליהנות מחוויית שימוש חלקה יותר, בלי התנודות בביצועים שעשויות להתרחש כשמנסים להגיע לשיעור הרענון הגבוה ביותר.
לספק אפשרויות FPS על סמך קצב הרענון המקסימלי של המסך
המשחק אמור לזהות את קצב הרענון המקסימלי של המסך שנתמך במכשיר הנוכחי, כמו 60Hz, 90Hz או 120Hz, ולהגביל את הגדרות ה-FPS בהתאם. לדוגמה, אם המכשיר תומך רק ב-60Hz, מומלץ להשבית את כל האפשרויות שמעל 60FPS בהגדרות המשחק כדי למנוע בלבול אצל השחקן.