گیر کوتاه را کنار میانگین پیدا کن
زمان فریم مدت یک فریم را بیان میکنه. میانگین میتواند لحظهٔ پرهزینهای را پنهان کنه که بازیکن به شکل مکث میبینه. پروفایلر یونیتی کار پیرامون فریم مشکلدار را بررسی میکنه و نیاز به حدس دربارهٔ کل برنامه را کم میکنه.
منو ممکنه بیشتر وقتها روان باشد و فقط با ظاهر شدن ده سکهٔ پاداش مکث کنه. گفتن اینکه میانگین نرخ فریم خوب هست، این لحظه را توضیح نمیدهدد. به زمان فریمهای اطراف همان پاداش نگاه کن و ببین کدوم کار ناگهان زیاد شده. برای تصور بودجه، شصت فریم در ثانیه حدود ۱۶٫۷ میلیثانیه برای هر فریم هست؛ این فقط تبدیل عدد هست، نه تضمین عملکرد یک گوشی. فریمی طولانی میتواند در میان فریمهای کوتاه پنهان بشه و بازیکن همچنان توقف را حس کنه.
همان پاداش را دوباره اجرا کن
نشست کوتاهی شامل بازی عادی و لحظهٔ پاداش کنه ثبت کن. فریم همان لحظه را ببین، نه فقط میانگین نشست. روی گوشی مورد نظر با ترتیب عمل یکسان تکرار کن. کار افزایشیافته و تغییر را بنویس. بعد همان مسیر را بازپخش کن؛ اجرای اول شلوغ را با اجرای دوم آرام مقایسه نکن.
یک تغییر را انتخاب کن، مثلاً آماده کردن جلوه پیش از نمایش، و همان صحنهٔ پاداش را دوباره اندازه بگیر. همزمان کیفیت تصویر، تعداد سکه و منطق جایزه را تغییر نده؛ دیگر معلوم نمیشود تفاوت از کجا آمده هست. Profiler میتواند هزینهٔ بخشهای اجرا را نشان دهد، ولی اندازهگیری در ادیتور با تجربهٔ دستگاه هدف یکی نیست. تنظیمات اندازهگیری و نوع بیلد را ثبت کن. اگر فقط اولین اجرا مکث داره، دربارهٔ بارگذاری اولیه سؤال کن؛ اگر هر بار تکرار میشود، هزینهٔ تکرارشونده را جدا دنبال کن.
عدد را با شرایطش گزارش کن
وقتی تغییری بهتر شد، نتیجهٔ دیداری را هم نگاه کن. جلوهای که ارزان شده اما دیگر معلوم نمیکنه سکه به موجودی اضافه شده، مسئلهٔ تازه ساخته هست. گزارشت میتواند بگوید در این دستگاه و این مسیر کدوم فریم پرهزینه بود و بعد چه اتفاقی افتاد. درصد بدون زمینه به نفر بعد کمک نمیکنه و یک بار مشاهده هم کافی نیست که همهٔ بازی را روان اعلام کنی. هدف تمرین پیدا کردن علت یک مکث مشخص و حفظ معنی پاداش هست؛ از همین مسئلهٔ کوچک میشود یک عادت خوب اندازهگیری ساخت.
مطالعهٔ بیشتر: Unity: Profiler
برای یک مثال مرتبط، دیباگ بدون ترس؛ خطا را به سؤال کوچک تبدیل کنیم را هم بخون.
مثال عملی زمان فریم بازی
برای فهم عملی زمان فریم بازی، یک مثال آموزشی را قدمبهقدم دنبال کنیم. میانگین سرعت خوب است، ولی هنگام باز شدن پنجرهٔ فروشگاه مکث کوتاهی دیده میشود. پیش از اجرا، وضعیت آغاز را روی کاغذ بنویس؛ مشخص کن چه چیزی میتواند تغییر کند و چه چیزی باید ثابت بماند. بعد فقط همین مسیر را اجرا کن. این مثال گزارشی از آمار کاربران یا قابلیت تازهٔ منتشرشدهٔ دلو نیست؛ تمرینی برای روشن کردن تصمیم طراحی همین مطلب است.
خطای رایج و علت آن
میانگین FPS میتواند قلههای زمان فریم و تجربهٔ لرزش را پنهان کند. این خطا معمولاً وقتی پنهان میماند که فقط مسیر موفق و ظاهر نهایی را ببینیم. برای پیدا کردن علت، آخرین وضعیت درست را از نخستین وضعیت نادرست جدا کن و ببین تغییر دقیقاً در کدام مرز رخ داده است. بودجهٔ هر فریم، توزیع زمان و سناریوی ثبت از یک عدد متوسط مفیدترند. اگر این تفاوت در قرارداد مشخص نباشد، اصلاح یک نشانه ممکن است همان مسئله را در بخش دیگری دوباره ایجاد کند.
چطور نتیجه را بررسی کنیم؟
زمان همان لحظه را روی دستگاه هدف با Profiler و شرایط یکسان بررسی کن. اجرای یکباره برای نتیجهگیری کافی نیست؛ یک بار مسیر معمول و بار دیگر همان موقعیت را با ورودی مرزی یا تکرار اقدام بررسی کن. اگر نتیجه فرق دارد، ورودی و شرایط اجرا را همراه خروجی نگه دار تا مقایسه قابل بازسازی باشد. جدول زیر خلاصهٔ مشخصات همین سناریو است و برای ثبت نتیجهٔ بررسی به کار میآید.
| بخش بررسی | آنچه باید ثبت شود |
|---|---|
| موقعیت آزمایشی | میانگین سرعت خوب است، ولی هنگام باز شدن پنجرهٔ فروشگاه مکث کوتاهی دیده میشود. |
| ریسک اصلی | میانگین FPS میتواند قلههای زمان فریم و تجربهٔ لرزش را پنهان کند. |
| روش بررسی | زمان همان لحظه را روی دستگاه هدف با Profiler و شرایط یکسان بررسی کن. |
| مرز نتیجهگیری | بودجهٔ هر فریم، توزیع زمان و سناریوی ثبت از یک عدد متوسط مفیدترند. |
پرسشهای کاربردی دربارهٔ زمان فریم بازی
از کجا شروع کنم؟
از همان موقعیت محدود این مطلب شروع کن: میانگین سرعت خوب است، ولی هنگام باز شدن پنجرهٔ فروشگاه مکث کوتاهی دیده میشود. ابتدا نتیجهٔ مورد انتظار را مشخص کن و بعد سراغ پیادهسازی یا ابزار برو. وقتی مسیر پایه قابل توضیح و بررسی شد، میتوان حالتهای بیشتری اضافه کرد. ساخت همهٔ حالتها از ابتدا، فهم علت خطا را سختتر میکند.
چه زمانی میتوانم بگویم این بخش درست کار میکند؟
زمانی که رفتار در موقعیت تعریفشده با قرارداد سازگار باشد و محدودیتهای آن روشن بمانند. زمان همان لحظه را روی دستگاه هدف با Profiler و شرایط یکسان بررسی کن. موفقیت در این آزمون دربارهٔ همان سناریو شاهد میدهد؛ از آن نمیتوان بدون بررسی دربارهٔ همهٔ دستگاهها، همهٔ قوانین محلی یا همهٔ حجمهای داده نتیجه گرفت. بودجهٔ هر فریم، توزیع زمان و سناریوی ثبت از یک عدد متوسط مفیدترند.
برای ادامهٔ همین موضوع، نمونهٔ اولیهٔ بازی؛ چه چیزی را باید زود امتحان کنیم؟ را ببین. زمینهٔ ساخت این پروژهها و معرفی سازنده در صفحهٔ کیان پاک نعمت آمده است.
جزئیات ابزار ثبت عملکرد در راهنمای رسمی Profiler یونیتی ۶ آمده است. قابلیتهای نسخهٔ مورد استفاده و دستگاه هدف را هنگام اجرای آزمایش جدا بررسی کن.




