دیباگر (Debugger)

بسم الله الرّحمن الرّحیم. ولادت پیامبر اکرم (ص) و امام جعفر صادق و هفته‌ی وحدت مبارک باد.
به همین مناسبت آموزشی را در مورد یکی از ویژگی‌های عالی کانستراکت یعنی دیباگر آماده کرده‌ایم.

دیباگر (Debugger)

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

چگونه دیباگر را اجرا کنیم؟

دیباگر می‌تواند از سربرگ Home در روبان، نوار دسترسی سریع، کلیک راست بر روی نام پروژه و یا یک لیوت در نوار پروژه، یا با کلید میانبر Ctrl + F5 اجرا شود.

آیکون اجرای دیباگر

دیباگر مثل یک پیش‌نمایش عادی عمل می‌کند، با این تفاوت که همراه بازی یک پانل اضافی هم به چشم می‌خورد که شامل اطّلاعات زیاد و تنظیمات مفیدی است.

نمای دیباگر کانستراکت ۲

در حالت دیباگ، آدرسی که در مرورگر نمایش داده می‌شود به عبارت debug/ ختم می‌شود، مثلاً http://localhost:50000/debug . حالا شما می‌توانید با استفاده از این ویژگی بین حالت دیباگر و پیش‌نمایش معمولی جابجا شوید (با اضافه کردن debug/ به آدرس عادی پیش‌نمایش به حالت دیباگ بروید و یا با حذف debug/ از آخر آدرس دیباگ به حالت پیش‌نمایش عادی بروید). حتّی می‌توانید با کمک پیش‌نمایش از طریق وای‌فای و اضافه کردن debug/ به انتهای آدرس، دیباگر را بر روی موبایل خود ببینید، مثلاً http://192.268.1.3:50000/debug .

شخصی‌سازی پانل دیباگر

با کشیدن دستگیره‌ای که در قسمت نوار عنوان خاکستری‌رنگ پانل دیباگر قرار دارد (سمت چپِ جایی‌که نوشته شده است Inspector) می‌توانید اندازه‌ی پانل دیباگر را تغییر دهید. این قابلیّت به شما اجازه می‌دهد تا با بزرگ‌تر کردن این پانل اطّلاعات بیشتری را مشاهده می‌کنید، یا با کوچک‌تر کردن آن فقط ابزارها و خلاصه‌ای از اطّلاعات عملکرد بازی را مشاهده کنید.

دستگیره‌ی تغییر اندازه‌ی دیباگر

دیباگر می‌تواند در پنجره‌ای دیگر هم (به حالت پاپ آپ) نمایش داده شود. این قابلیّت برای کسانی که از چند مانیتور استفاده می‌کنند مفید است. بازی با استفاده از تمام پنجره‌ی مرورگر نشان داده می‌شود، و پنجره‌ای جداگانه پانل دیباگ را نمایش می‌دهد. برای این کار باید روی دکمه‌ی pop-out که در تصویر زیر می‌بینید کلیک کنید. با کلیک دوباره بر روی این دکمه یا بستن پنجره‌ی پاپ آپ، این پانل دوباره به پنجره‌ی اصلی مرورگر باز می‌گردد.

نمایش دیباگر در حالت پاپ آپ

دستورات اصلی دیباگر

در اطراف دکمه‌ی pop-out چند وسیله‌ی مفید هم وجود دارند که به قرار زیرند:

Pause: بازی را موقّتاً متوقّف می‌کند. وقتی می‌خواهید اطّلاعاتی را در لحظاتی خاص بررسی کنید این امکان به کمک‌تان می‌آید. بعد از متوقّف شدن بازی این دکمه به Resume تبدیل می‌شود، با کلیک بر روی آن بازی ادامه پیدا می‌کند.

Step: فقط در مواقعی که بازی موقّتاً متوقّف شود امکان استفاده از این گزینه وجود دارد. این فریم بعدی بازی را نشان می‌دهد، بدون این که Δt) dt) را تغییر دهد. برای مواقعی که می‌خواهید رویدادی را فریم به فریم بررسی کنید و ببینید چه اتّفاقی رخ می‌دهد این ویژگی بسیار مفید است.

Save و Load به صورت موقّت بازی را ذخیره می‌کند، که به شما کمک می‌کنند که در وضعیّتی خاص بازی را ذخیره کنید، و هر موقع خواستید دوباره به همان وضعیّت برگردید. این برای اجرای یک قسمت از بازی به صورت مکرر به درد می‌خورد. مثل Saveهای عادی، وضعیّت فعلی بازی مداوماً در مرورگر فعلی ذخیره می‌شود. بنابراین سیوها در مرورگرهای دیگر در دسترس نیستند، امّا در همان مرورگر حتّی بعد از بستن و باز کردن مجدّد مرورگر، یا ریست کردن کامپیوتر و… باز هم در دسترس خواهد بود.

Restart: بازی را دوباره از ابتدا اجرا می‌کند.

خلاصه‌ی عملکرد بازی (Performance)

جزئیّاتی در رابطه با عملکرد بازی در بالا سمت چپ این پانل به رنگ خاکستری کم‌رنگ به چشم می‌خورد. مقادیری که در این قسمت وجود دارند از چپ به راست به قرار زیر هستند:

تعداد اشیاء (مثلاً 500 objects): تعداد اشیائی که در حال حاضر وجود دارند را نشان می‌دهد. تعداد بسیار زیاد اشیاء عملکرد بازی را کاهش می‌دهد. این مقدار معادل اکسپرشن سیستمی objectcount است.

نرخ فریم (مثلاً 60 FPS): نمایش این‌که در هر ثانیه چند فریم در بازی نمایش داده می‌شود. اکثر صفحات نمایش هر یک‌شصتم ثانیه به روز رسانی می‌شوند، بنابراین در حالت مطلوب بازی باید در 60 فریم بر ثانیه (60 FPS) اجرا شود. این مقدار معادل اکسپرشن سیستمی fps است.

تخمین CPU time (مثلاً 20% CPU): مقداری تخمینی از این‌که چه‌قدر از CPU time صرف اجرای دستورات بازی می‌شود. این مقدار همیشه دقیق نیست، بیشتر به این خاطر که فقط زمانی را که صرف اجرای جاوااسکریپت اصلی می‌شود در نظر می‌گیرد. سربرگ Profile می‌تواند مشخّص کند که که هر کدام از بخش‌های بازی چه مقدار از CPU time استفاده می‌کند، در ادامه‌ی این راهنما در مورد این سربرگ نیز توضیحاتی خواهیم داد. این مقدار معادل اکسپرشن سیستمی CPUUtilisation است.

حافظه‌ی تخمینی مورد استفاده برای تصاویر (مثلاً 32.5mb images): تخمینی از این‌که چه مقدار از حافظه (RAM) صرف بارگذاری تصاویر بازی شده است. این مورد فقط در حالت WebGL موجود است. بیشترین مقدار مصرف حافظه در بازی به خاطر تصاویر است، امّا توجّه داشته‌باشید که مقداری که این‌جا نمایش داده می‌شود چیزهای دیگر را در نظر نمی‌گیرد، چیزهایی مثل مقدار حافظه‌ای که برای حوادث منطقی بازی استفاده می‌شود، و همین طور حافظه‌ای که به خاطر پخش موسیقی و افکت‌های صوتی بازی اشغال می‌شود. این مقدار معادل اکسپرشن سیستمی ImageMemoryUsage است.

رندر کننده (مثلاً webgl): به ما می‌گوید که بازی در حال رندر شدن در حالت canvas2d است یا webgl. حالت Webgl سریع‌تر است و از افکت‌ها نیز پشتیبانی می‌کند. این مقدار معادل اکسپرشن سیستمی renderer است.

جزئیّاتی بیشتر در مورد عملکرد بازی در قسمت Performance در سربرگ inspect نمایش داده می‌شوند، که به طور پیش‌فرض از این قرارند:

Collision checks/sec (مثلاً 1144 (~22)): نشان می‌دهد که در ثانیه‌ی آخر، انجین باید چند برخورد را بین دو شیء بررسی کند. بررسی‌های برخورد برای کندیشن‌های On collision و Is overlapping اسپرایت‌ها انجام می‌شود. البتّه تعداد زیادی از رفتارها نیز به صورت خودکار بررسی‌هایی برای برخورد انجام می‌دهند. داخل پرانتز، میانگین بررسی‌های برخورد در هر تیک نیز نشان داده می‌شود. برای مثال اگر در ثانیه‌ی آخر 600 بررسی برای برخورد انجام شود، و نرخ فریم بازی باشد، به طور میانگین در هر تیک ۱۰ بررسی برای برخورد انجام می‌شود. این به شما می‌گوید در هر فریم بازی حدود ۱۰ بررسی برای برخورد اشیاء انجام می‌شود، البته مقدار واقعی معمولاً در هر فریم با فریم دیگر فرق می‌کند.

Poly checks/sec (مثلاً 60 (~1/tick)): اکثر بررسی‌های برخورد بسیار سریع انجام می‌شود، و انجین می‌تواند به سادگی بگوید که اشیاء درحال برخورد نیستند (با اطمینان از این‌که bounding box هایشان هم‌پوشانی ندارند). امّا اگر bounding box های آن‌ها هم‌پوشانی داشته باشد، بررسی برخورد سخت‌تر می‌شود، انجین باید بررسی کند که آیا collision polygon های آن‌ها نیز به هم برخورد داشته‌اند یا نه. این مقدار می‌گوید که در ثانیه‌ی آخر چند بررسی برخورد از این نوع انجام می‌شود، مثل قبل (در Collision checks/sec) میانگین این نوع بررسی‌ها در هر تیک نیز نمایش داده می‌شود. معمولاً مقدار Poly checks/sec عددی کوچکتر است، امّا اگر این مقدار بالا برود، امکان مشکل در عملکرد بازی وجود دارد.

سؤالات فنی خود را فقط در انجمن بپرسید. در غیر این صورت پاسخ داده نخواهد شد.
۳ نظر

افزودن دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

تمامی حقوق برای مرجع تخصصی کانستراکت محفوظ است.