silsin جان من تو سایت بهنام آقاجانی به نام "علی" کامنت میذاشتم.
اونجا راجع به مسائلی که ایشان در مقاله نوشته بودند به صورت مختصر و گزیده پاسخ دادم و به نظر خودم هم همین مقدار توضیحات کافی آمد. چرا که از یک طرف بیشتر از این فرصت باز کردن مسائل را نداشتم و از طرف دیگر به دلیل عدم تسلط آقای آقاجانی (علیرغم دانش خوب ایشان در زمینه ساخت بازی) و نیز کمی بدبینی ایشان نسبت به UDK توضیحات ارائه شده برای ایشان روشن مکفی نبود. من به هیچ وجه در ارائه آن مطالب قصد قانع کردن ایشان و یا هرکس دیگری را نداشتم و توضیحات فقط جهت روشن شدن مطلب برای کسانی بود که با UDK آشنایی ندارند و به نظر بنده مطلب ایشان باعث سردرگمی این جماعت میشد. من بر این معتقد نیستم که UDK و یا حتی Unreal Engine بهترین موتور دنیا است و هیچ نقصی ندارد. مساله من این است که مطالب ارائه شده باید با دلیل و آزمایش در اختیار خوانندگان قرار بگیرد یا حداقل عدم کارایی برخی بخشها به صورت نسبی در مقایسه با یک یا چند معیار بیان شود. این که بگوییم سیستم Cloth در UDK نا کارآمد است حرف کاملا اشتباهی است ولی اگر بگوییم سیستم Cloth در UDK (یا UE3) از CryEngine ضعیفتر است حرف صحیحی زده ایم. من با این ادبیات منفی نگرانه کمی مشکل دارم..gif)
و اما در مورد بحثی که شما مطرح کردی (این مطالب را نه برای پاسخ به شما بلکه جهت اطلاع رسانی به علاقمندان این مبحث مینویسم) ...
ببینید UDK هم مانند همه نرم افزارهای دیگر به عنوان ابزار توسعه در اختیار کسانی است که از آن برای تحقق بخشیدن به اهداف خود (در اینجا ساخت بازی) استفاده میکنند. هر ابزاری هم روش استفاده خود و امکانات خود را دارد. این که ما بگوییم چون UDK امکان استفاده از PerfHUD را ندارد پس ابزار Profiler و تستهای کارایی را ندارد و یا بگوییم چون اسکریپتهای آن به صورت آفلاین کامپایل میشوند امکان دیباگ کردن ندارد سخنان اشتباهی گفته ایم.
شما باید یک ابزار را به صورت کلی در نظر بگیرید. بله به دلیل شیوه اسکریپت نویسی در UDK سرعت کار در این بخش کاهش می یابد. ولی از آنطرف Kismet هم وجود دارد که به تنهایی حجم بسیار زیادی از تراکنشهای صحنه را میتوان با آن انجام داد و سرعت کار با آن زیاد است. حالا دهها ابزار دیگری که خود شما هم با آن آشنا هسیتد و هر کدام به تنهایی یک نرم افزار کوچک هستند را هم به آن اضافه کنید.
بحث Debugging در ساخت بازی فقط از منظر اسکریپت بررسی نمیشود من مطالب خودم را در شاخه های زیر دسته بندی کرده ام :
1- Performance & Memory Debugging
2- Script Debugging
3- Gameplay Debugging
1- هر چند شخصا اعتقاد دارم PerfHUD یکی از بهترین ابزارهای موجود برای این گونه تستها است ولی ما در UDK چند جایگزین برای آن داریم که اطلاعات مشابهی را در اختیار ما قرار میدهند و تا به امروز در تجربه های شخصی من کمک بزرگی بودند.
در این مورد شما اول View Mode های مختلفی را دارید که حتی قبل از اجرای بازی و در محیط ادیتور میتوانید صحنه خود را از حیث پیچیدگیهای محاسباتی مورد ارزیابی قرار دهید.
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
دوم شما مانند بسیاری از موتورهای دیگر دسترسی به یک Profiler داخلی دارید :
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سوم شما لیستی از Command های متعددی را در اختیار دارید که اطلاعات Low Level بسیاری را در اختیار شما قرار میدهند. این اطلاعات نیز قابلیت نمایش داده شدن در ادیتور را هم دارند.
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
چهارم شما ابزاری به نام Remote Control دارید که اگرچه بیشتر در بخش Gameplay Debugging استفاده میشه ولی اطلاعات وسیعی رو در مورد کارایی بخشهای مختلف بازی در اختیار میذاره.
2- در این بخش UDK کمی ضعیف عمل کرده ولی باز هم امکان Debugging در آن وجود دارد. برای این کار شما باید از یک میان افزار هم کمک بگیرید به نظر من بهترین آنها Nfringe هست که امکان نو شتن و دیباگ کردن کد در Visual Studio رو فراهم میکنه و دوم استفاده از UnrealScript Debugger Interface هست که به شما امکان Runtime Debugging رو میده.
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
3- وقتی که شما یه بازی رو میسازید علاوه بر تستهای کارایی و اسکریپت لازمه که به لحاظ منطقی (Logical) نیز بازی شما عملکرد خوبی از خودش نشون بده. برای این کار لازمه علاوه بر اطلاعات سطح پایین حافظه و کارکرد منابع سیستم و ... که قبلا اشاره شد عملکرد اشیا ، ارتباط داده ای آنها با یکدیگر، تغییر خصوصیات آنها و ... نیز مورد ارزیابی قرار بگیرند. UDK برای این کار ابزار Remote Control رو در اختیار ما گذاشته. مثلا فرض کنید شما میخواهید تغییرات پارامتریک یک Bot رو در اجرای هوش مصنوعی ببینید. این ابزار این امکان رو در اختیار شما میذاره.
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در رابطه با پیاده سازی هوش مصنوعی من زیاد وارد جزئیات نمیشم چون خودم هنوز کاملا روی این مساله مسلط نشدم و فقط در حد پیاده سازی سناریوهای خیلی ساده و فقط جهت یادگیری و تست کار کردم. تجربه شخصی خودم رو میگم. تا اونجایی که من متوجه شدم UDK فقط سیتمهای مسیر یابی (البته بر خلاف گفته آقای آقاجانی امکان تشخیص Dynamic Object ها هم تو حالت تحلیل Nvigation Mesh تو UDK تعبیه شده) و بینایی مجازی و نیز AIController مبنا رو در اختیار توسعه دهنده قرار میده و پیاده سازی State ها برای Bot بر عهده برنامه نویسه. البته این در مورد خیلی از موتورها صادقه برای این که حالتهای بسیار متنوعی برای پیاده سازی هوش مصنوعی برای توسعه دهندگان وجود داره. برخی از موتورهای بازی سازی برای قوی تر کردن بخش AI از میان افزارها استفاده میکنن. به عنوان مثال Unreal Engine 3 میان افزار Ai.Implant رو داخل خودش داره و مشخص نیست که چرا Epic آین میان افزار رو از UDK حذف کرده. اما کسانی که میخوان یه میان افزار با امکان Debugging و سازگار با UDK رو داشته باشن یه نگاهی به ابزار Pogamut بندازن :
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
همونطور که گفتم من رو تو بحث هوش مصنوعی کاملا بی تجربه حساب کنین و مطالب پاراگراف آخر رو به لحاظ فنی مستند حساب نکنید.
... ببخشید که اینقدر طولانی شد. امشب آخرین شبی بود که من میتونستم وقت بذارم دیگه تا حدود 2 هفته درگیر یه پروژه هستم و وقت نمیکنم تو بحثها فعال باشم.