شروع کار با Android Dynamic Performance Framework (ADPF) در Unreal Engine

Android Dynamic Performance Framework (ADPF) ابزار قدرتمندی از گوگل برای توسعه دهندگانی است که می خواهند عملکرد برنامه های خود را بهینه کنند. ADPF از طریق API های حرارتی خود اطلاعاتی را در زمان واقعی در مورد وضعیت حرارتی دستگاه ارائه می دهد که سپس برای تنظیم تنظیمات گرافیکی در برنامه استفاده می شود.

برای اهداف تحقیقاتی، Arm یک نسخه نمایشی با استفاده از Unreal Engine و ADPF برای بررسی نحوه استفاده از ADPF برای بهینه سازی عملکرد بازی توسعه داد.

ADPF وضعیت حرارتی را نظارت می کند و کیفیت گرافیکی آن در موتور بازی تنظیم می شود.

با در نظر گرفتن توسعه دهندگان، هدف این است که به کاربران اجازه دهیم بازی را برای مدت طولانی تری انجام دهند بدون اینکه بر تجربه گیم پلی و مصرف انرژی بیش از حد دستگاه تأثیر بگذارد.

قبل از شروع

قبل از مشاهده جزئیات بیشتر به نسخه ی نمایشی، مهم است که اسناد رسمی Google در ADPF را برجسته کنید. این مستندات منبع ارزشمندی است که بینش و راهنمایی های عمیقی را در مورد نحوه استفاده از ADPF ارائه می دهد.

با این حال، برای کسانی که یادگیری قابل تنظیم را ترجیح می دهند، مخزن نمونه ADPF شامل نمونه های عملی از پیاده سازی ADPF در برنامه های اندروید است.

تنظیم تنظیمات گرافیکی

در زمینه Unreal Engine، ما می توانیم تنظیمات گرافیکی را به صورت پویا تنظیم کنیم تا عملکرد را حفظ کنیم.

ما از مانیتور حالت حرارتی و API Headroom حرارتی در ADPF برای نظارت بر گاز حرارتی استفاده کردیم. سپس می توانید تنظیمات کیفیت مانند کیفیت سایه، کیفیت بازتاب و کیفیت بافت را با شروع به گاز گرفتن دستگاه تنظیم کنید.

تنظیمات کیفیت گرافیک زیر در Unreal Engine برای تغییر تنظیمات مختلف استفاده می شود:

  • ViewDistanceQuality
  • ShadowQuality
  • کیفیت روشنایی جهانی
  • ReflectionQuality
  • AntiAliasingQuality
  • کیفیت بافت
  • VisualEffectQuality
  • کیفیت پس پردازش
  • کیفیت شاخ و برگ
  • ShadingQuality
  • سطح مقیاس پذیری کلی

آزمایش در دنیای واقعی

Arm بازی‌های نمایشی خودمان را ایجاد می‌کند که برای تحقیق در مورد گرافیک موبایل و فناوری‌های بازی استفاده می‌شود. امسال، ما ADPF را روی یکی از آنها آزمایش کردیم، نسخه ی نمایشی SteelArms.

SteelArms دارای سطوح مختلف شدت گرافیک و حجم کار قابل توجهی از CPU است. این شبیه به بازی های موبایل مدرن ساخته شده است، بنابراین می توانیم رفتار بازی را در تلفن های همراه امروزی مدل سازی کنیم. همچنین به ما امکان می‌دهد آزمایش کنیم که چگونه فناوری‌های مختلف ممکن است در یک بازی در دستگاه‌های تلفن همراه مبتنی بر Arm کار کنند.

نتایج

شکل 1: مقایسه تمام صفحه SteelArms با و بدون ADPF.

هنگامی که ADPF برای تنظیم تنظیمات گرافیکی فعال می شود، تصاویر قبلی تفاوت بین بهترین کیفیت (سینمایی) و پایین ترین (کم) کیفیت را نشان می دهد. این تغییر تدریجی است و در طول بازی توسط کاربران قابل توجه نیست.

شکل 2: بازی با ادغام ADPF: تقسیم صفحه.

نمای تقسیم‌شده از بالاترین تنظیمات گرافیکی در سمت چپ (ربات آبی) و پایین‌ترین تنظیمات گرافیکی در سمت راست (ربات قرمز).

شکل 3: بازی با یکپارچه سازی ADPF: مقایسه جزئیات کنار هم.
شکل 4: بازی با یکپارچه سازی ADPF: کنار هم.

در شکل های 3 و 4 قبلی همان نمای ربات در کنار هم دیده می شود. اگر نگاه دقیق تری داشته باشید، تنظیمات گرافیکی تنظیم شده با استفاده از ADPF مشاهده می شود. به کف حلقه، شانه ربات، طناب های حلقه و جمعیت توجه کنید؟ به نظر می رسد همه آنها کیفیت کمی پایین تری دارند که با استفاده از ADPF انجام شد.

هنگامی که throttling قریب الوقوع بود، این اثرات در نسخه ی نمایشی SteelArms کاهش یافت. تشخیص این کاهش های کوچک در پس پردازش و جلوه های بصری دشوار است. همچنین، کاربران معمولاً هنگام بازی متوجه آنها نمی شوند. این بدان معناست که شما می توانید بیشتر تجربه بصری بازی را بدون ضربه به تجربه گیم پلی حفظ کنید. شما می توانید همه این کارها را با حفظ عملکرد قدرت بازی خود و عمر باتری دستگاه خود انجام دهید.

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

نتایج

شکل 5: مقایسه FPS، دمای دستگاه، حالت حرارتی و فضای سر هنگام فعال/غیرفعال شدن ADPF ~ 57% بهبود در نرخ فریم

دستگاه از گرمای بیش از حد جلوگیری می کند و در 1.0 فضای سر حرارتی نگه می دارد.

مصرف برق

شکل 6: مقایسه مصرف برق با ADPF فعال/غیر فعال

نتایج ADPF

نتایج خاموش و روشن بودن ADPF را می توان در شکل های نشان داده شده قبلی مشاهده کرد. نشان می دهد که تفاوتی در نرخ فریم بازی و مصرف انرژی هسته ها وجود دارد. هنگامی که ADPF روشن است، تا 57٪ بهبود در نرخ فریم مشاهده می شود. هنگامی که ADPF خاموش است، GPU مقدار قابل توجهی توان مصرف می کند. سپس هسته بزرگ CPU دارای اسپک های قدرتی است که با حجم کاری GPU سازگار است. از آنجایی که به میزان پردازشی که از او خواسته می شود می رسد. در مقایسه، هنگامی که ADPF روشن است، هسته بزرگ CPU به گاز پاسخ می دهد و مصرف انرژی کلی همه هسته های دستگاه را کاهش می دهد.

نتیجه گیری

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

دستگاه های جدیدتر و قدیمی تر می توانند از استفاده از ADPF بهره مند شوند. این اجازه می دهد تا بازی ها با استاندارد بالا در دستگاه های نسل های قبلی بدون کار بهینه سازی اضافی اجرا شوند.