مداخلات حالت بازی

مداخلات حالت بازی ، بهینه‌سازی‌های مخصوص بازی هستند که توسط سازندگان تجهیزات اصلی (OEM) برای بهبود عملکرد بازی‌هایی که دیگر توسط توسعه‌دهندگان به‌روزرسانی نمی‌شوند، تنظیم شده‌اند. به عنوان مثال:

  • با استفاده از تغییر اندازه بافر پشتیبان WindowManager.
  • استفاده از ANGLE به جای درایورهای اصلی GLES.

می‌توانید از بازی خود پشتیبانی کرده و API حالت بازی را مدیریت کنید تا مداخلات حالت بازی ارائه شده توسط OEM را لغو کنید.

Game Mode API و مداخلات در دسترس هستند:

هر بازی می تواند:

  • رفتار API حالت بازی را اجرا کنید،
  • تنظیمات مداخلات حالت بازی را به OEM ها پیشنهاد دهید، یا
  • صراحتاً از مداخلات حالت بازی انصراف دهید.

پس زمینه

این بخش توضیح می‌دهد که مداخلات Game Mode چه می‌کنند و چگونه بازی خود را برای هر حالت بهینه کنید.

تغییر اندازه بافر پشتی WindowManager

مداخله تغییر اندازه بافر پشتی WindowManager می تواند بار GPU دستگاه را کاهش دهد. همچنین می‌تواند مصرف باتری را زمانی که یک بازی با نرخ فریم هدف انجام می‌شود کاهش دهد.

فعال کردن تغییر اندازه می تواند منجر به کاهش 30 درصدی GPU و 10 درصدی مصرف کلی انرژی سیستم شود. نتایج می تواند بر اساس دستگاه مورد استفاده، شرایط محیطی و سایر عوامل مانند پردازش همزمان متفاوت باشد.

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

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

کاهش سرعت FPS

throttling Android FPS یک مداخله در حالت بازی است که به بازی ها کمک می کند تا با نرخ فریم پایدارتری اجرا شوند تا مصرف باتری کاهش یابد. این مداخله در اندروید 13 یا بالاتر در دسترس است. برای اطلاعات بیشتر، به نمای کلی throttling 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 به تنهایی، از دستور زیر برای تنظیم مقادیر مختلف تغییر اندازه بافر 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 قرار می‌گیرد:

adb shell cmd game mode [standard|performance|battery] <PACKAGE_NAME>

مطمئن شوید که پس از هر انتخاب حالت بازی، بازی را مجدداً راه اندازی کرده اید. مداخله کاهش مقیاس نیاز به راه اندازی مجدد برنامه دارد.

انصراف از مداخلات

با انصراف می‌توانید کنترل کنید که آیا مداخله‌ای در بازی شما اعمال می‌شود. هر مداخله تنظیمات انصراف خود را دارد.

  1. همان فایل پیکربندی 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"
/>
  1. بازی خود را دوباره بسازید و دوباره ارسال کنید تا انصراف دهید.

به‌طور پیش‌فرض، مداخلات تنظیم‌شده توسط سازندگان تجهیزات اصلی (OEM) استفاده می‌شود، مگر اینکه صراحتاً بازی خود را از استفاده از آنها انصراف دهید.

منابع

برای اطلاعات بیشتر در مورد اندازه گیری و بهینه سازی عملکرد بازی: