بهینه سازی نرخ تازه سازی

اندروید 15 برای بهینه سازی مصرف انرژی، نرخ تازه سازی پیش فرض 60 هرتز را برای بازی ها تنظیم می کند. برای باز کردن قفل نرخ فریم بالاتر مانند 120 FPS، اکنون باید با استفاده از Frame Rate API یا کتابخانه Swappy صریحاً آنها را درخواست کنید.

با این حال، سیستم ممکن است بر اساس عواملی مانند سطح باتری یا دمای دستگاه، این درخواست را لغو کند. در حالی که نرخ‌های تازه‌سازی بالاتر صافی بصری را افزایش می‌دهند، آنها همچنین به قدرت بیشتری نیاز دارند و گرمای بیشتری تولید می‌کنند. بنابراین، بسیار مهم است که به کاربران این گزینه را ارائه دهیم تا نرخ تازه سازی مورد نظر خود را انتخاب کنند و عملکرد را به دقت بررسی کنند تا از تجربه کاربری متعادل اطمینان حاصل شود.

از API setFrameRate() استفاده کنید

API setFrameRate() به توسعه دهندگان بازی اجازه می دهد تا از نرخ تازه سازی نمایشگر خاصی استفاده کنند. برای انجام این کار دو مرحله وجود دارد:

  1. بررسی سازگاری دستگاه و نسخه اندروید.
  2. FPS بالا را با استفاده از setFrameRate() درخواست کنید.

بررسی سازگاری دستگاه و نسخه اندروید:

از روش‌های Display.getSupportedModes() برای تعیین اینکه آیا دستگاه از 90 هرتز، 120 هرتز یا سایر نرخ‌های تازه‌سازی پشتیبانی می‌کند استفاده کنید. اگر دستگاه به 60 هرتز محدود شده باشد، امکان تجاوز از این محدودیت وجود ندارد.

کاتلین

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 بالا را درخواست کنید

هنگامی که حلقه رندر شما شروع می شود، در طول مقداردهی اولیه پنجره بازی، یا زمانی که FPS هدف نیاز به تغییر نرخ تازه سازی نمایشگر دارد setFrameRate() را فراخوانی کنید.

حتی اگر نرخ بالاتری را درخواست کنید، سیستم ممکن است به دلیل عواملی مانند حالت صرفه جویی در مصرف انرژی یا گلوگاه حرارتی، همچنان نرخ تجدید را به 60 هرتز محدود کند. اگر عملکرد رندر بازی شما به FPS مورد نظر نمی رسد، درخواست نرخ تازه سازی بالاتر ممکن است مصرف انرژی غیر ضروری را مصرف کند و دمای دستگاه را افزایش دهد.

قطعه زیر نشان می دهد که چگونه با API setFrameRate() از نرخ تازه سازی بیش از حد بالا جلوگیری کنید.

کاتلین

val targetFps = 120f
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
  window.setFrameRate(
      targetFps,
      Window.FrameRateCompatibility.FRAME_RATE_COMPATIBILITY_FIXED_SOURCE,
      0
  )
}

صفحه Framerate اطلاعات دقیق تری را برای مطالعه بیشتر ارائه می دهد.

از کتابخانه Frame pacing استفاده کنید

کتابخانه سرعت قاب یا Swappy یک کتابخانه منبع باز است که برای ساده کردن مدیریت VSync و زمان‌بندی فریم در موتورهای بازی اندروید C/C++ طراحی شده است. این ابزار روند بهینه‌سازی نرخ‌های تازه‌سازی را ساده می‌کند و به طور موثر به عنوان یک لایه انتزاعی سطح بالاتر بر روی عملکردهایی مانند setFrameRate() عمل می‌کند. علاوه بر این، Swappy ویژگی های اضافی را ارائه می دهد که می تواند نرمی و عملکرد کلی بازی شما را افزایش دهد.

صفحه Swappy اطلاعات دقیق تری را ارائه می دهد.

نکات اضافی برای بهترین نتایج

بخش زیر چندین نکته برتر را ارائه می کند:

  1. تغییر نرخ فریم دینامیک
  2. نظارت بر عملکرد
  3. گزینه های FPS را بر اساس حداکثر نرخ تازه سازی نمایشگر ارائه دهید.

تغییر نرخ فریم دینامیک

برای بهینه سازی عملکرد و مصرف انرژی، تغییر نرخ فریم پویا را در بازی خود در نظر بگیرید. این تکنیک به شما امکان می‌دهد به طور یکپارچه بین نرخ‌های تازه‌سازی بالاتر مانند ۱۲۰ هرتز برای گیم‌پلی روان‌تر در طول صحنه‌های سخت، و نرخ‌های پایین‌تر مانند ۶۰ هرتز در زمان‌های فشرده‌تر یا زمانی که عمر باتری یک نگرانی است یا هدف‌گیری کمتر از ۶۰ فریم در ثانیه است، جابه‌جا شوید. کارکردن مداوم در 120 هرتز می تواند منجر به تولید گرمای بیش از حد و تخلیه سریع باتری شود که به طور بالقوه منجر به تجربه منفی کاربر می شود. با تنظیم هوشمندانه نرخ تازه سازی بر اساس بار رندر فعلی و شرایط دستگاه، می توانید تعادلی بین وفاداری بصری و بهره وری انرژی ایجاد کنید.

نظارت بر عملکرد

برای اطمینان از عملکرد بهینه بازی شما با نرخ تازه سازی بالاتر، ابزارهای نظارت بر عملکرد مانند شمارنده فریم یا پوشش عملکرد را ادغام کنید. این ابزارها بازخورد بلادرنگی را در مورد نرخ فریم واقعی بازی شما ارائه می‌کنند و به شما امکان می‌دهند تا بررسی کنید که آیا به طور مداوم به هدف 120 فریم در ثانیه می‌رسید یا خیر.

اگر نرخ فریم شما به طور قابل توجهی در نوسان است، در نظر بگیرید که نرخ فریم کمتری را در دستگاه مورد نظر هدف قرار دهید. این می‌تواند تجربه‌ای روان‌تر را بدون سکته‌های عملکردی که ممکن است هنگام تلاش برای بالاترین نرخ تازه‌سازی رخ دهد، ارائه دهد.

گزینه های FPS را بر اساس حداکثر نرخ تازه سازی نمایشگر ارائه دهید

بازی شما باید حداکثر نرخ به‌روزرسانی نمایشگر را که دستگاه فعلی پشتیبانی می‌کند، مانند 60 هرتز، 90 هرتز یا 120 هرتز شناسایی کند و تنظیمات FPS را بر این اساس محدود کند. به عنوان مثال، اگر دستگاه فقط تا 60 هرتز را پشتیبانی می کند، توصیه می شود گزینه های بالاتر از 60 فریم در ثانیه را در تنظیمات بازی غیرفعال کنید تا بازیکن گیج نشود.