
Mir 2: Return of the King یک بازی موبایل Legend IP با کیفیت است که توسط Actoz Soft مجاز است و توسط HK ZHILI YAOAN LIMITED با استفاده از موتور بازی Unity توسعه یافته است.
این بازی نه تنها احساسات Mir 2 ، نماینده MMORPG فانتزی کره ای را کاملاً بازسازی می کند، بلکه بسیاری از محبوب ترین محتویات بازی مانند مجموعه تجهیزات، حمله شنی در مقیاس بزرگ و سایر گیم پلی های اصلی را ارائه می دهد.
این بازی از کتابخانه Android Frame Pacing (Swappy) برای بهبود ثبات نرخ فریم خود، دستیابی به رندرینگ روان و افزایش قابل توجهی Android Vitals (متریک جلسه آهسته) خود استفاده کرد.
Slow Sessions در اندروید حیاتی راه اندازی شد
Slow Sessions یک معیار حیاتی اندروید در کنسول Google Play است. یک جلسه آهسته بیش از 25 درصد فریم آهسته دارد. یک فریم کند است اگر:
در 20 فریم در ثانیه، در 50 میلی ثانیه پس از فریم قبلی ارائه نمی شود.
در 30 فریم در ثانیه، در عرض 34 میلی ثانیه پس از فریم قبلی ارائه نمی شود.
به مرور زمان، Play کاربران را از بازیهایی که نمیتوانند 20 فریم در ثانیه روی گوشیهای خود به دست آورند، دور میکند.
دلایل زیادی وجود دارد که ممکن است یک فریم بیشتر از زمان فریم هدف برنامهنویس روی صفحه نمایش داده شود یا نمایش داده شود. بازی ممکن است به CPU یا GPU متصل باشد، بیش از حد داغ شود (باعث فشار حرارتی شود)، یا عدم تطابق در نرخ فریم بازی و نرخ تازه سازی نمایشگر دستگاه وجود داشته باشد.
کتابخانه Frame Pacing چیست؟
کتابخانه Android Frame Pacing که با نام Swappy نیز شناخته میشود، بخشی از کتابخانههای AGDK است. Swappy به بازیهای OpenGL و Vulkan کمک میکند تا رندر نرم و سرعت فریم صحیح را در اندروید انجام دهند.
اگر دستگاه از آن پشتیبانی کند، کتابخانه چندین نرخ بهروزرسانی را کنترل میکند، که به بازی انعطافپذیری بیشتری در ارائه فریم میدهد. به عنوان مثال، برای دستگاهی که از نرخ نوسازی 60 هرتز و همچنین 90 هرتز پشتیبانی می کند، بازی ای که نمی تواند 60 فریم در ثانیه تولید کند، می تواند به جای 30 فریم در ثانیه به 45 فریم در ثانیه کاهش یابد تا روان بماند. کتابخانه نرخ فریم مورد انتظار بازی را تشخیص میدهد و زمانهای ارائه فریم را بر اساس آن به صورت خودکار تنظیم میکند.
کتابخانه Frame Pacing همچنین عمر باتری را بهبود میبخشد زیرا از بهروزرسانیهای غیرضروری نمایشگر جلوگیری میکند. به عنوان مثال، اگر یک بازی با سرعت 60 فریم در ثانیه رندر می شود اما صفحه نمایش با فرکانس 120 هرتز به روز می شود، صفحه نمایش برای هر فریم دو بار به روز می شود. کتابخانه Frame Pacing با تنظیم نرخ تازه سازی روی مقدار پشتیبانی شده توسط دستگاهی که نزدیکترین به نرخ فریم مورد نظر است، از این امر جلوگیری می کند.
چگونه Mir 2 عملکرد رندرینگ را با کتابخانه Frame Pacing بهبود داد
Mir 2 ( 미르2: 왕의 귀환 ) با مشکلی در عملکرد رندر ناپایدار مواجه بود که در آن 40٪ جلسات آهسته را در آستانه نرخ فریم 20 FPS تجربه کردند، بسیار بالاتر از آستانه 20٪ Google Play.

Mir 2 ( 미르2: 왕의 귀환 ) یک بازی گرافیکی با وفاداری بالا است، برخی از دستگاه ها برای حفظ یک FPS پایدار با چالش هایی روبرو هستند. توزیع نرخ فریم آنها نشان می دهد که تعداد زیادی از جلسات با فریم بر ثانیه کمتر از 20 فریم در ثانیه اجرا می شوند.

هر سطل نشان دهنده درصد جلساتی است که 75٪ از فریم های آنها سریعتر از برچسب سطل بوده است.
وقتی حجم کاری نمایش بیشتر از حجم کاری برنامه طول می کشد، فریم های اضافی به یک صف اضافه می شوند. این یک بار دیگر منجر به لکنت زبان می شود و همچنین ممکن است منجر به یک فریم تاخیر اضافی به دلیل پر کردن بافر شود.

کتابخانه Frame Pacing این مشکل را با استفاده از حصارهای همگامسازی ( EGL_KHR_fence_sync
و VkFence
) برای تزریق انتظارها به برنامهای که به خط لوله نمایشگر اجازه میدهد بهجای ایجاد فشار برگشتی پاسخ دهد، حل میکند. قاب A هنوز یک فریم اضافی ارائه می دهد، اما فریم B اکنون به درستی ارائه می شود.

Mir 2 به راحتی کتابخانه Frame Pacing را با استفاده از ویژگی تعبیه شده در Unity بهینه سازی شده تنظیم کرد. این اقدام به بهبود قابل توجهی برای عملکرد رندر آنها منجر شد، بهویژه متریک جلسه آهسته را از 40% به 10% کاهش داد.

تعداد جلسات آهسته برای Mir2 پس از ادغام کتابخانه به میزان قابل توجهی کاهش یافته است.

هر سطل نشان دهنده درصد جلساتی است که 75٪ از فریم های آنها سریعتر از برچسب سطل بوده است.
با کتابخانه Frame Pacing شروع کنید
نحوه استفاده از کتابخانه Frame Pacing در موتورهای بازی بومی
برای ادغام کتابخانه Android Frame Pacing در بازی خود به راهنماهای زیر مراجعه کنید:
- Android Frame Pacing را در رندر Vulkan خود ادغام کنید
- Android Frame Pacing را در رندر OpenGL خود ادغام کنید
نحوه استفاده از کتابخانه Frame Pacing در موتور بازی Unity
Unity کتابخانه Android Frame Pacing را در موتور خود ادغام کرده است. برای فعال کردن این ویژگی در Unity، چک باکس Optimized Frame Pacing را در قسمت تنظیمات پروژه > پخش کننده > تنظیمات اندروید > وضوح و ارائه علامت بزنید:

از طرف دیگر، به صورت برنامهای گزینه Optimized Frame Pacing را در کد منطقی خود فعال کنید تا به یونیتی اجازه دهد تا فریمها را به طور مساوی توزیع کند تا واریانس کمتری در نرخ فریم داشته باشد و گیمپلی روانتری ایجاد کند.
نحوه استفاده از کتابخانه Frame Pacing در موتور بازی Unreal
Unreal 4.25 و نسخه های جدیدتر کتابخانه Android Frame Pacing را که بخشی از کیت توسعه بازی اندروید است، یکپارچه می کند. مقاله Mobile Frame Pacing توضیح میدهد که چگونه کتابخانه Android Frame Pacing را فعال کنید و چگونه سرعت فریم را از طریق کد C++ کنترل کنید.