API حالت بازی

API حالت بازی به شما امکان می‌دهد بازی خود را برای بهترین عملکرد یا طولانی‌ترین عمر باتری، زمانی که کاربر حالت بازی مربوطه را انتخاب می‌کند، بهینه کنید.

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

API حالت بازی و مداخلات در موارد زیر موجود است:

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

راه‌اندازی

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

  1. کیت توسعه نرم‌افزار اندروید ۱۳ (Android 13 SDK) را دانلود و نصب کنید.

  2. در فایل AndroidManifest.xml ، با تنظیم ویژگی appCategory در عنصر <application> ، برنامه خود را به عنوان یک بازی اعلام کنید:

android:appCategory="game"
  1. با اضافه کردن این به فعالیت اصلی خود، حالت بازی فعلی را جستجو کنید:

جاوا

// Only call this for Android 12 and higher devices
if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ) {
  // Get GameManager from SystemService
  GameManager gameManager = Context.getSystemService(GameManager.class);

  // Returns the selected GameMode
  int gameMode = gameManager.getGameMode();
}

کاتلین

// Only call this for Android 12 and higher devices
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
  // Get GameManager from SystemService
  val gameManager: GameManager? = context.getSystemService(Context.GAME_SERVICE) as GameManager?

  // Returns the selected GameMode
  val gameMode = gameManager?.gameMode
}
حالت بازی پشتیبانی شده توضیحات
پشتیبانی نشده این بازی پشتیبانی از API حالت بازی را اعلام نکرده و از مداخلات حالت بازی پشتیبانی نمی‌کند.
استاندارد کاربر حالت بازی را انتخاب نکرده است یا حالت استاندارد را انتخاب کرده است.
عملکرد کمترین نرخ فریم تأخیر را در ازای کاهش عمر باتری و کیفیت تصویر ارائه می‌دهد.
باتری در ازای کاهش دقت یا نرخ فریم، طولانی‌ترین عمر باتری ممکن را فراهم می‌کند.
  1. کدی را برای پرس‌وجوی وضعیت حالت بازی در تابع onResume اضافه کنید:

    مثال با تنظیم کاربر برای حالت باتری

بهترین شیوه‌ها

اگر بازی شما از قبل از چندین هدف برای وضوح تصویر و نرخ فریم پشتیبانی می‌کند، باید تنظیمات مناسب برای حالت‌های عملکرد و صرفه‌جویی در مصرف باتری را شناسایی کنید:

برای بازی‌های با کیفیت بالا مانند بازی‌های تیراندازی اول شخص، میدان‌های نبرد آنلاین چند نفره (MOBA) و بازی‌های نقش‌آفرینی (RPG)، باید روی دستیابی به نرخ فریم بالا و ثابت تمرکز کنید تا کاربر را به حداکثر برسانید.

برای هر دو بازی با کیفیت بالا و معمولی، باید از حالت صرفه‌جویی در باتری پشتیبانی کنید تا با کاهش نرخ فریم اوج، زمان پخش را طولانی‌تر کنید.

اعلام پشتیبانی از حالت‌های بازی

برای اعلام پشتیبانی از حالت‌های بازی و لغو هرگونه مداخله در حالت بازی توسط تولیدکنندگان اصلی تجهیزات (OEM)، ابتدا پیکربندی حالت بازی را به عنصر <application> در فایل AndroidManifest.xml خود اضافه کنید:

<application>
    <meta-data android:name="android.game_mode_config"
               android:resource="@xml/game_mode_config" />
  ...
</application>

سپس یک فایل game_mode_config.xml در دایرکتوری res/xml/ پروژه خود با محتوای زیر ایجاد کنید:

<?xml version="1.0" encoding="UTF-8"?>
<game-mode-config
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:supportsBatteryGameMode="true"
    android:supportsPerformanceGameMode="true"
/>

حالت‌های بازی را تغییر دهید

برای جابجایی بین حالت‌های بازی، می‌توانید از داشبورد بازی (موجود در دستگاه‌های پیکسل) یا برنامه‌های مشابه ارائه شده توسط تولیدکنندگان اصلی تجهیزات (OEM) استفاده کنید. همچنین می‌توانید در حین توسعه از دستور پوسته حالت بازی (Game Mode) استفاده کنید.

اگر از داشبورد بازی استفاده می‌کنید و نماد بهینه‌سازی هنگام اجرای بازی نمایش داده نمی‌شود، ممکن است لازم باشد برنامه خود را در کنسول گوگل پلی آپلود کرده و از طریق فروشگاه پلی آن را نصب کنید. برای اطلاعات بیشتر در مورد آزمایش برنامه در فروشگاه پلی، به بخش «اشتراک‌گذاری بسته‌های برنامه و APKها به صورت داخلی» مراجعه کنید.

Game Dashboard Activity! شکل ۱. داشبورد بازی که بازی در حال اجرا را روی دستگاه پیکسل نشان می‌دهد.

در شکل ۱، حالت بازی (Game Mode) بازی در حال اجرا را می‌توان از طریق ویجت بهینه‌سازی (Optimisation widget) تغییر داد. همانطور که در ویجت نشان داده شده است، بازی در حال حاضر در حالت PERFORMANCE mode) اجرا می‌شود.

در طول توسعه، اگر از دستگاهی بدون داشبورد بازی استفاده می‌کنید و سازنده هیچ راهی برای تنظیم حالت بازی برای هر برنامه ارائه نداده است، می‌توانید وضعیت حالت بازی را از طریق adb تغییر دهید:

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

نمونه درخواست

نمونه API حالت بازی نشان می‌دهد که چگونه می‌توانید FPS را بهینه کنید و محدودیت‌های وضوح تصویر را رندر کنید تا تقریباً 25٪ در مصرف انرژی برنامه‌های خود صرفه‌جویی کنید.

بعدی

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