افزایش عملکرد برای بازی ها

با شروع اندروید ۱۴، یک حالت مصرف انرژی جدید به نام GAME در چارچوب عملکرد پویای اندروید (ADPF) امکان سفارشی‌سازی عملکرد گوشی را در حین استفاده از بازی فراهم می‌کند. GAME به Power HAL نشان می‌دهد که یک برنامه بازی در پیش‌زمینه است. این نشانه به Power HAL اجازه می‌دهد تا هنگام اجرای یک بازی، استراتژی‌های مدیریت مصرف انرژی را اتخاذ کند، به طوری که کاربر عملکردی پایدار و بهبود یافته را تجربه کند.

برای بهبود زمان بارگذاری بازی، اندروید ۱۳ حالت مصرف انرژی جدیدی به نام GAME_LOADING را در ADPF معرفی می‌کند. GAME_LOADING نشان می‌دهد که آیا یک برنامه بازی در حالت بارگذاری است یا خیر، بنابراین Power HAL می‌تواند بارگذاری را افزایش دهد. این نشانگر به Power HAL اجازه می‌دهد تا اقدامات تقویت عملکرد را ارائه دهد که می‌تواند زمان بارگذاری بازی را سرعت بخشد.

این صفحه نحوه‌ی ارسال وضعیت بازی توسط برنامه‌ی بازی به Power HAL، نحوه‌ی پیکربندی Power HAL برای بهره‌برداری از آن در دستگاه‌های شما و همچنین نحوه‌ی آزمایش پیاده‌سازی Power HAL شما را شرح می‌دهد.

تشخیص و اعلان حالت پاور

این بخش نحوه مدیریت حالت‌های GAME و GAME_LOADING توسط Power Manager را شرح می‌دهد.

حالت قدرت بازی

حالت جدید مصرف انرژی GAME در اندروید ۱۴ به سرویس مدیریت مصرف انرژی نشان می‌دهد که کاربر در حال انجام یک بازی است. وقتی Power HAL از حالت GAME مطلع می‌شود، می‌تواند در حین بازی، مصرف انرژی را برای افزایش عملکرد، کاهش دما و افزایش عمر باتری تنظیم کند.

شکل زیر جریان اطلاعات به Power HAL را برای نشان دادن حالت قدرت GAME توضیح می‌دهد:

game-mode

شکل ۱. جریان اطلاعات برای نشان دادن اینکه یک بازی در حال انجام است.

حالت GAME power همیشه برای برنامه‌هایی که appCategory آنها در AndroidManifest.xml مقدار GAME دارد، تنظیم می‌شود.

حالت قدرت GAME_LOADING

حالت تقویت بارگذاری با تشخیص زمان بارگذاری یک برنامه بازی و اطلاع‌رسانی به Power HAL کار می‌کند. اندروید ۱۳ یک حالت بازی جدید به نام isLoading را در API مخصوص توسعه‌دهندگان معرفی می‌کند. این حالت بازی از حالت جدید GAME_LOADING power در سرویس Power Manager برای اطلاع‌رسانی به Power HAL در مورد وضعیت بازی سطح بالا استفاده می‌کند. هنگامی که Power HAL از وضعیت بارگذاری بازی مطلع می‌شود، می‌تواند تنظیمات عملکرد پلتفرم و نرخ کلاک CPU را تنظیم کند که منجر به بهبود زمان بارگذاری می‌شود.

برای نشان دادن اینکه یک بازی در حال بارگذاری است، برنامه بازی از داشبورد بازی برای تنظیم حالت isLoading در Game Manager استفاده می‌کند. Game Manager این حالت را به سرویس Game Manager ارسال می‌کند که از setPowerMode با حالت قدرت جدید GAME_LOADING برای فراخوانی سرویس Power Manager استفاده می‌کند. حالت قدرت GAME_LOADING به Power HAL نشان می‌دهد که بازی در حالت بارگذاری است تا Power HAL بتواند سرعت بارگذاری را افزایش دهد.

شکل زیر جریان اطلاعات از برنامه به Power HAL را برای نشان دادن وضعیت بارگیری توضیح می‌دهد:

loading-boost

شکل ۲. جریان اطلاعات برای نشان دادن اینکه یک بازی در حالت بارگذاری است.

داشبورد بازی به کاربران این امکان را می‌دهد که ویژگی افزایش سرعت بارگذاری را با استفاده از تنظیمات عملکرد (Performance Setting) فعال یا غیرفعال کنند. تنظیمات عملکرد (Performance Setting) همیشه به صورت پیش‌فرض غیرفعال است.

سفارشی‌سازی Power HAL با استفاده از GAME و GAME_LOADING

برای بهره‌گیری از حالت‌های GAME و GAME_LOADING ، تولیدکنندگان اصلی تجهیزات (OEM) باید پیاده‌سازی Power HAL خود را سفارشی‌سازی کنند. از آنجایی که مدیریت توان و افزایش عملکرد، وابسته به سخت‌افزار است، هیچ پیاده‌سازی مرجعی برای حالت‌های GAME یا GAME_LOADING تا زمان انتشار پیاده‌سازی مرجع برای دستگاه Google Pixel در دسترس قرار نگرفته است.

برای افزایش عملکرد در حالت GAME و GAME_LOADING ، تولیدکنندگان اصلی تجهیزات (OEM) می‌توانند ترکیبی از اقدامات زیر را اجرا کنند:

  • تثبیت نرخ فریم
  • افزایش سرعت کلاک پردازنده
  • کاهش موقت تنظیم دما
  • اولویت CPU بالاتری را به برنامه بازی پیش‌زمینه اختصاص دهید
  • کاهش افزایش سرعت پردازنده برای برنامه‌های معمولی و غیر بازی تنظیم شده است
  • بهینه سازی استراتژی توزیع برق مرتبط با گرما

پیاده‌سازی حالت بازی (GAME) را آزمایش کنید

برای آزمایش پیاده‌سازی حالت GAME ، از تست‌هایی که با پیشوند testGamePowerMode_ در GameManagerServiceTests.java همراه هستند، استفاده کنید.

اجرای تست GAME_LOADING

برای آزمایش پیاده‌سازی حالت GAME_LOADING ، از android.gamemanager.cts.GameManagerTest#testSetGameContext استفاده کنید. این آزمایش بررسی می‌کند که آیا GameManager::setGameContext() با یک زمینه isLoading حالت بارگذاری بازی را در Power HAL در حالت عملکرد فراخوانی می‌کند یا خیر.