Frame Time چیست؟
«نرخ فریم دهی در ثانیه» یا Frames per second (به اختصار FPS) راهی آسان برای اندازه گیری کارایی است، با این حال یک یکتا دیگر به اسم Frame Time یا «طول فریم» نیز وجود دارد که راه بهتری برای پی بردن به عملکرد گیمینگ و نواسانات آن است. در نوشتار پیش رو به شناسایی Frame Time و تفاوت آن با FPS میپردازیم.
مفهوم Frame Time چیست؟
در صورتی که گیمر هستید ادراک به ماهیت Frame Time که Frame Delay نیز نامیده می شود، میتواند برای شما سودمند باشد اما اگر توسعه دهنده هستید، محاسبه و بهکارگیری Frame Time میتواند در بهینه سازی ها به شما کمک کند.همانطور که دانید FPS بیانگر شمار فریمها در یک ثانیه است و هرچه که بالاتر باشد، معمولاً مطلوبتر است. اما سخت آنجاست که FPS یک اندازه گیری خطی نیست و تحلیل دگرگونی ها آن میتواند گمراه کننده باشد. در ضمن یگانه سایر از دشواری ها FPS قابل جمع زدن نبودن آن است، چراکه یک یکای دست نویس نیست.
نمودار بالا سنجش FPS با Frame Time را اثر میدهد که به روشنی غیر دست نویس بودن FPS را پرتو میدهد. اگر یک گسترش دهنده یا حتی فرآوری کننده محتوا باشید، شما نمیتوانید برای پی بردن به تأثیر دگرگونی ها و بهینه سازی ها، FPS را جمع بزنید.
جدول بالا سنجش اندازه گیری FPS سری A و B و Frame Time آنها را نشانه میدهد. همانطور که مشاهده میکنید، FPS میتواند در مقادیر مختلف تغییر کند ولی تغییرات Frame Time هر بار مقاوم است. برای نمونه اگر نرخ فریم دهی از 100 فریم در ثانیه به 200 فریم در ثانیه برسد، دگرگونی ها ما 100 فریم در ثانیه یا 5 میلی ثانیه است. اما اگر نرخ فریم دهی از 20 فریم در ثانیه به 22.2 فریم در ثانیه برسد، تغییرات ما 2.2 فریم در ثانیه و تغییر Frame Time همان 5 میلی ثانیه است.
به بیانی ساده Frame Time حاصل تقسیم ثانیه (1000 میلی ثانیه) بر نرخ فریم دهی است. ذات خطی Frame Time شغل با آن و دریافتن به دگرگونی ها را آسانتر میکند. به وضوح Frame Time ذیل تر در اجرای بازی ها دلخواه تر است.
چگونه Frame Time را تفسیر کنیم؟
هنگامی که در رسیدگی یک بازی، کارت گرافیک و حتی پردازنده، نمودار Frame Time را مقابل خویش میبینید، این نمودار شدت بروز کُندی (افزایش مدت زمان لازم برای رندر شدن فریمها) را پرتو میدهد. در این دست از نمودارها، صاف بودن آن (خط راست) بهترین حالت شدنی است و نشان میدهد نرخ فریم دهی برقرار است. ولی خروشان بودن آن (برآمدگی و فرو رفتگی زیاد) میتواند اثر دهنده عملکرد ناپسند در اجرای بازی باشد. البته هستی یک یا دو برآمدگی یا فرو رفتگی قابل چشم پوشی است و هنوز تجربه نهایی میتواند روان باشد.
احتمالاً با تماشا نمودار بالا به احسان متوجه اهمیت Frame Time شدهاید، به راستی نمیتوان صرفاً از روی ذیل بودن حداقل نرخ فریم دهی یا Minimum-FPS در اجرای بازیها، به عملکرد لاغر رسید، چراکه میتواند تنها برای لحظات کوتاهی باشد، ولی دیاگرام Frame Time شدت آن را به اثر میدهد. در ضمن بیشینه نرخ فریم دهی یا Maximum-FPS نیز گذرگاه واقعیت برای داوری در ارتباط با تاثیر نیست چراکه درست همانند کمینه نرخ فریم دهی میتواند صرفاً انعکاس دهنده عملکرد لحظه ای کمیاب باشد.
در صورتی که Frame Time کم و بیش به 50 میلی ثانیه باشد، نرخ فریم دهی شما حدود 20 فریم در ثانیه است و مشکلاتی چون لگ زدن در اجرای بازیها را تجربه خواهید کرد، در ضمن فریمهایی که مدت موعد لازم برای رندر شدن آنها از 50 میلی ثانیه فراتر میرود، با تأخیر و به کُندی نمایش دیتا میشوند که مشکلاتی چون لگ زدن را پدید میآورد. لازم به بیان است اگر Frame Time برابر با 16.7 میلی ثانیه باشد، نرخ فریم دهی بر روی 60 فریم در ثانیه قفل شده است، در این چهره دنبال غیر پرکار کردن محدود کنندههایی چون Vsync باشید.
احتمالاً می گویید میانه نرخ فریم دهی یا Average-FPS پیشه را راحت میکند و دیگر نیاز نیست با چنین جزئیاتی درگیر شوید، اما مشکل آنجاست که متوسط نرخ فریم دهی دو مقدار مهم کمینه و بیشینه نرخ فریم دهی را در خود حل میکند و آنها را از دست میدهید.
پیچیدگیهای به وجود آمده میتواند گیج کننده باشد، چراکه کمینه نرخ فریم دهی و یا افت نرخ فریم دهی میتواند برای مدت بسیار اختصار باشد که حتی گیمر متوجه آن نشود اما از آنجایی که برنامههای کنتور (اروپایی) نرخ فریم دهی آن را ثبت میکنند، ممکن است به اشتباه تفسیر شود. خوشبختانه یک مسیر حل برای این سخت نیز وجود دارد و آن استفاده از صدک ها (Percentile) است. دیاگرام بالا حداکثر Frame Time در صدک های مختلف نشان می دهد. به راستی برای جاسازی دیاگرام صدک ها، مقادیر Frame Time به صورت افزاینده مرتب می شود.