کاهش سرعت FPS

throttling Android FPS یک مداخله در حالت بازی است که به بازی ها کمک می کند تا با نرخ فریم پایدارتری اجرا شوند تا مصرف باتری کاهش یابد. این مداخله در اندروید 13 یا بالاتر در دسترس است.

از آنجایی که دستگاه‌های اندرویدی بیشتری با نمایشگرهایی با نرخ تازه‌سازی بالاتر، مانند 90 هرتز و 120 هرتز عرضه می‌شوند، بیشتر بازی‌ها سعی می‌کنند با سرعت FPS بالا حرکت کنند. با این حال، آنها معمولا ترجیحات کاربر را برای اولویت بندی عملکرد یا عمر باتری در نظر نمی گیرند. این باعث چندین مشکل می شود:

  • بازی‌هایی که نمی‌توانند به‌طور مداوم با FPS بالاتر حرکت کنند، در نهایت FPS ناپایدار یا ناهموار دارند.

  • کاربران اغلب واقعاً نمی خواهند FPS بالاتری داشته باشند زیرا باتری خیلی سریع تمام می شود.

سرعت فریم در ثانیه فقط می تواند نرخ فریم را محدود کند . به عنوان مثال، هنگامی که یک بازی در ابتدا با سرعت 60 فریم در ثانیه اجرا می شود، مداخله کاهش سرعت فریم در ثانیه نمی تواند آن را با سرعت 120 فریم در ثانیه اجرا کند، اما درگیری با سرعت 40 فریم در ثانیه و 30 فریم در ثانیه معتبر است.

کاهش سرعت FPS می تواند تا 50٪ کاهش قدرت GPU و 20٪ کاهش قدرت سیستم را به همراه داشته باشد. همچنین به اجرای بازی‌های بدون ریتم با نرخ فریم نرم‌تر و کم‌تر کمک می‌کند.

یک بازی بدون ریتم اغلب دارای حداکثر نرخ فریم بالاتر اما با واریانس بالاتر زمان فریم است. این به طور قابل توجهی بر نحوه درک عملکرد توسط بازیکنان تأثیر می گذارد. مداخله کاهش سرعت FPS فقط به بازی‌های بدون سرعت کمک می‌کند تا از سمت پلتفرم به سرعت فریم دست یابند.

نتایج مداخله throttling FPS ممکن است بر اساس دستگاه مورد استفاده، شرایط محیطی و سایر عوامل متفاوت باشد.

تعامل با پیاده سازی های فریم-گام برنامه

زمانی که هم پیاده‌سازی فریم برنامه و هم کاهش سرعت فریم در ثانیه اعمال می‌شوند، معمولاً نرخ فریم نهایی، نرخ فریم هدف پایین‌تر است.

شروع کنید

این بخش نحوه راه‌اندازی و استفاده از FPS throttling با استفاده از Android Debug Bridge (adb) را شرح می‌دهد.

مداخلات حالت بازی را فعال کنید

برای فعال کردن مداخلات حالت بازی برای یک بازی، از دستور زیر استفاده کنید:

adb shell device_config put game_overlay <PACKAGE_NAME> <CONFIG>

مداخله FPS را تنظیم کنید

برای تنظیم مداخله throttling FPS هدف، از دستور device_config استفاده کنید. در اینجا مثالی آورده شده است که فشار FPS را برای عملکرد و حالت باتری تنظیم می کند:

adb shell device_config put game_overlay <PACKAGE_NAME> mode=2,fps=90:mode=3,fps=30

جزئیات پارامترها:

  • mode [2|3]: 2 و 3 برای عملکرد و حالت باتری
  • fps [0|30|40|45|60|90|120]: بسته به دستگاهی که استفاده می‌کنید (اعم از دستگاهی با فرکانس 120، 90 یا 60 هرتز)، توصیه می‌کنیم نرخ فریم‌هایی را انتخاب کنید که مقسوم‌کننده حداکثر دستگاه هستند. نرخ تازه سازی 0 مقدار پیش فرض است.

در اینجا نرخ فریمی است که هر نوع نمایشگر پشتیبانی می کند:

  • نمایشگر 60 هرتز: 60 فریم در ثانیه، 30 فریم در ثانیه
  • نمایشگر 90 هرتز: 90 فریم در ثانیه، 45 فریم در ثانیه، 30 فریم در ثانیه
  • نمایشگرهای 120 هرتز: 120 فریم در ثانیه، 60 فریم در ثانیه، 40 فریم در ثانیه، 30 فریم در ثانیه

نتیجه بگیرید

برای مشاهده و تجزیه و تحلیل نتایج، می توانید شمارنده FPS را بررسی کنید یا یک ردیابی Perfetto را ثبت کنید. در اینجا مثالی از نحوه مشاهده شمارنده FPS در یک بازی که با سرعت 120 فریم بر ثانیه اجرا می شود آورده شده است:

شمارنده FPS را مشاهده کنید

برای تأیید تنظیمات FPS throttling خود، می‌توانید بازی را اجرا کنید و شمارنده FPS را در داشبورد بازی باز کنید. برای انجام این کار، این مراحل را دنبال کنید:

  1. در حین اجرای بازی، انگشت خود را به پایین بکشید و نماد داشبورد بازی را فشار دهید.

  2. با فشار دادن دکمه FPS شمارنده FPS را روشن کنید.

  3. داشبورد بازی را با فشار دادن دکمه X ببندید. برای نمایش شمارنده FPS، روی فلش به سمت راست بکشید.

یک رد Perfetto را ثبت کنید

برای اینکه نگاهی عمیق به عملکرد بازی خود داشته باشید، توصیه می کنیم که Perfetto Trace را انجام دهید. برای اطلاعات بیشتر در مورد انجام ردیابی، به Quickstart: Record Traces در Android مراجعه کنید.

وقتی ردیابی انجام می دهید، از منبع داده android.game_interventions استفاده کنید. پس از اتمام ردیابی، صفحه نمایشگر ردیابی نمایش داده می شود. در نوار پیمایش، اطلاعات و آمار را انتخاب کنید و سپس حالت بازی و فهرست مداخله را مشاهده کنید. به عنوان مثال:

نمونه ای از جدول لیست مداخله

مداخلات throttling FPS در قالب "fps=X" نشان داده می شود، که در آن X FPS فشار در یک حالت بازی خاص است. 0 مقدار پیش فرض است.