دوره ی آموزش وبپک

اگر توسعه دهنده ی وب باشید با module bundler ها و task runner ها آشنا هستید ، دوره ای چهار قسمتی نوشته شده توسط نگارنده در سایت دات نت تیپس بر روی module bundler وبپک (webpack) موجود هست که در صورت علاقه می توانید به لینک های زیر مراجعه کنید.

قسمت اول آموزش وبپک

قسمت دوم آموزش وبپک

قسمت سوم آموزش وبپک

قسمت چهارم آموزش وبپک

مباحث اولیه یونیتی

یونیتی چیست و چرا باید برایم مهم باشد؟


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

در صورتی که با اصطلاحات و زیر وبند بازیسازی آشنا نیستید مطالعه ی پست مفاهیم اولیه بازیسازی پست پیشنهاد می شود.
قطعا اولین قدم در استفاده از یک نرم افزار نصب آن بر روی ��یستم عامل مورد استفاده ی شما می باشد.
جهت دریافت یونیتی می توانید به وبسایت سازنده مراجعه کنید یا از وبسایت های دانلود مشابه استفاده کنید.

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



در صورتی که نسخه ی قدیمی تر یا جدیدتر از نسخه ی ذکر شده را نصب کرده باشید ممکن است این صفحه متفاوت باشد.
ولی مفهوم یکسان خواهد بود و شامل قسمتی برای ایجاد یک پروژه ی جدید یا باز کردن پروژه های قبلی است.
در تصویر بالا قسمت های مختلف توضیح داده شده اند.
برای تکمیل کردن لازم است که برای ساخت یک پروژه ی جدید اسم پروژه ، مکان ذخیره کردن آن ، مشخص کردن اینکه پروژه دو بعدی یا سه بعدی خواهد بود و در نهایت پکیج های پیش فرض جهت وارد کردن به پروژه را بایستی تعیین کرد.
سوالی که تا به اینجا ممکن است پیش آمده باشد این است که نوع دو بعدی و سه بعدی را آیا حتما باید در این مرحله تعیین کرد که پاسخ منفی است.
امکان عوض کردن نوع پروژه در هر مرحله ای امکان پذیر است و تنها تفاوتی که ایجاد می کند در انتخاب پیش فرض نمای دو بعدی و سه بعدی پنجره ی scene می باشد که در آینده بررسی خواهد شد.

در صورتی که گزینه ی asset packages را انتخاب کنید با پنجره ی زیر بر خورد خواهید کرد :


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

پس از انجام این مرحله و انتخاب کردن دکمه ی ساخت پروژه یونیتی اقدام به ساخت پروژه در مسیر ذکر شده خواهد کرد و نمای پیش فرض ادیتور باز خواهد شد.


اگر آشنایی قبلی با نرم افزارهای گرافیکی مانند فوتو شاپ ، Illustrator و یا موتور های بازی سازی دیگر داشته باشید این صفحه تقریبا آشنا به نظر می رسد.
با کمی دقت می توان پنجره ی اصلی را به پنل های کوچک تری تقسیم کرد .
نام هر یک از این پنل ها در بالا وسمت چپشان نوشته شده است.
در سمت چپ پنل Hirerarchy قابل مشاهده است.
در قسمت پایینی پنل Project .
در بخش میانی پنل Scene و Game .
در سمت راست پنل Inspector.
هر یک از پنل ها در جای خود به همراه کاربری مخصوص اش توضیح داده می شود.

چینش پنجره ها در یونیتی و معرفی Layout ها


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


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

بررسی پنل های ابتدایی و مهم در یونیتی

 

پنل Game و Scene

زمانی که اولین بار یونیتی  را اجرا کنید این دو پنل در نمای میانی قابل مشاهده اند.
پنل Game همان نمایی را نشان خواهد داد که بازیباز هنگام بازی کردن محصول نهایی خواهد دید.
در پنل Game به جز زمانی که بازی در حال اجرا باشد هیچ تغییری نمی توان داد و می توان گفت که در زمان ادیت کردن و ساخت مراحل بازی این پنل قفل می باشد.
پنل scene نیز ادیتور شماست و جهت ساخت بازی از آن استفاده می کنید.
شاید بتوان گفت که این پنل مهم ترین پنل یونیتی است چرا که بیشترین زمان را در آن خواهیم گذراند.
پس از ساخت پروژه و وارد شدن به یونیتی این پنل تقریبا خالی می باشد ( تنها دوربین و یک منبع نوری به صورت پیش فرض وجود دارد) ، می توان ذکر کرد که پنل scene مهم ترین پنل در یونیتی است پس بهتر است به طور کامل همین جا با آن آشنا شویم.
برای اینکه در محیط پیش فرضمان چیزی قرار دهیم و کار را شروع کنیم از منوهای موجود در بالای پنجره ی اصلی یونیتی منوی GameObject را انتخاب می کنیم و سپس از زیر منوهای آن بر روی 3DObject می رویم و Cube را انتخاب می کنیم.
با انجام این کار یک مکعب در پنجره ی scene ایجاد می شود.

GameObject ها و امکانات مختلف یا مد های تغییر حالت در پنل Scene


پیش تر ذکر شد که پنجره ی scene مهم ترین پنجره ی یونیتی است و همین طور از آن به عنوان ادیتور اصلی نام بردیم.
معنی این جمله بیشتر در اینجا قابل مشاهده است که می توان با استفاده از این پنجره مرحله های بازی را بسازیم و مکان قرار گیری و دیگر تغییرات مورد نیاز را در مراحل ایجاد کنیم.

GameObject چیست ؟

تا اینجا مهم ترین پنجره را معرفی کردیم اما عنوان مهم ترین مفهوم در یونیتی به GameObject ها تعلق دارد.
ترجمه ی GameObject را می توان اشیای بازی نامید.
هر شیی که در پنجره ی scene ایجاد می کنید یک GameObject است و در خروجی نهایی آن مرحله حضور خواهد داشت.
اشیای حاضر در یک مرحله را می توانید در پنجره ی Hirerarchy دید که جلوتر آنرا بررسی می کنیم.
یک گیم آبجکت می تواند مدل های بازی اعم از ساختمان ها و ... باشد که در یک مرحله قرار می گیرد و یا می تواند کلا بدون نما باشد به طور مثال می تواند یک شی فیزیکی نامریی باشد تا با عبور بازیباز اسکریپت هایی را فراخوانی کند .

 انتخاب GameObject و حالت های مختلف آنها

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

برای انتخاب یک گیم آبجکت در پنجره ی Scene بر روی آن با ماوس کلیک می کنیم.
با انتخاب یک گیم آبجکت در پنجره ی scene حالت نمای آن کمی عوض می شود  و سه جهت مختلف بر روی آن نمایان می شود که با اصطلاح 3dGizmos شناخته می شوند.
هر یک از این جهت ها برداری را در فضای سه بعدی نشان می دهند بردار قرمز نماینده ی محور x ، بردار سبز نماینده ی محور y و در آخر بردار آبی نماینده ی محور z ها می باشد.
کاربرد این محور ها فقط برای نمایش نیست و با کلیک کردن بر روی هر محور می توانید گیم آبجکت انتخاب شده را فقط در آن محور خاص جابه جا کنید.
همچنین با انتخاب صفحه های قرمز ،آبی و سبز در مرکز گیم آبجکت انتخاب شده می توانید آنرا به صورت دلخواه در محیط جابه جا کنید.
در تصویر زیر موارد بالا قابل مشاهده است .



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


با انتخاب اولین آیکون که به شکل دست می باشد نشان گر ماوس در پنجره ی Scene به حالت دست در می آید و می توانید در Scene جابه جا شوید.
با انتخاب دومین گزینه همان محورهای xyz نمایان می شوند.
با انتخاب سومین گزینه در حالت چرخش گیم آبجکت انتخاب شده قرار می گیریم و می توانیم در محور مورد نظرمان آن را بچرخانیم.
همچنین گزینه ی بعدی امکان تغییر ابعاد در گیم آبجکت انتخاب شده را می دهد .
در تصویر زیر تمامی این حالات قابل مشاهده اند.



حال نوبت به آن رسیده که در پنجره ی scene بتوانیم جابه جا شویم اگر با نرم افزار Maya آشنا باشید جابه جایی در محیط سه بعدی یونیتی شبیه به این نرم افزار می باشد.
برای عوض کردن زاویه ی دید می توان کلید راست ماوس را گرفته و ماوس را چرخاند تا زاویه ی دید عوض شود.
همچنین زوم کردن در صفحه با اسکرول کردن در پنجره ی scene قابل انجام است ، راه دیگر نیز نگه داشتن کلید راست ماوس و استفاده از کلید های W,A,S,D برای جابه جایی در صفحه می باشد.
موارد گفته شده تنها راه هایی برای چرخش در پنجره ی scene نمی باشند ، که برای شروع همین ها کافی است و در طول زمان و تجربه ی بیشتر با آن ها آشنا می شوید.


 پنل Project

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

 تعریف Asset ها

مفهوم بعدی که باید با آن برای کار با یونیتی آشنا شوید Asset می باشد ، تعریف یونیتی از این مفهوم تمامی فایل هایی می باشد که شما در پروژه قصد استفاده از آن را دارید.
پیش تر تعریفی از گیم آبجکت ارائه شد و مهم است که Asset ها با گیم آبجکت ها مخلوط نشوند.
گیم آبجکت ها شی هایی هستند که دریک مرحله یا Scene حضور دارند ولی Asset ها صرفا هر نوع فایلی است که شما وارد پروژه می کنید و از پنجره ی Project قابل مشاهده است.
در ابتدای ساخت یک پروژه اگر Asset ی را برای ایمپورت انتخاب نکرده باشید قطعا پنجره ی Project خالی است.
با راست کلیک کردن در این پنجره می توانید از منوی Create به انواع گزینه های مختلفی که امکان ساخت آنها امکان پذیر است دسترسی داشته باشید خواه قصد ایجاد فولدری جدید برای نگه داری مدل های بازی را داشته باشید یا قصد ایجاد یک اسکریپت هدفتان باشد از این منو قابل انجام است.
ایمپورت کردن هر گونه Asset نیز به صورت درگ کردن از اکسپلورر سیستم عامل به داخل این پنجره نیز قابل انجام است.
به طور مثال می توانید مدل های سه بعدی پروژه را به صورت درگ کردن به داخل این پنجره ایمپورت کنید و یا با راست کلیک کردن و انتخاب گزینه ی Import New Asset موارد دلخواه خود را به پروژه وارد کنید.
در تصویر زیر ایجاد گزینه های مختلف و همچنین انتخاب حالت نمایش متفاوت این پنجره قابل مشاهده است.

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

مبانی و اصطلاحات اولیه در بازی سازی


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

این پست به مفاهیمی از مدلینگ (Modeling) ، تکسچرینگ (Texturing) ، انیمیشن (Animation) و برنامه نویسی (Programming) خواهد پرداخت.

اصطلاحات مورد استفاده در مدلینگ (Modeling) :

 

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

نمایی از برنامه ی Blender

فرآیند مدل سازی ( از این پس همان مدلینگ در متن استفاده خواهد شد )  خود دارای اصطلاحات گوناگونی است .

می توان پرسید مدلینگ با استفاده از کامپیوتر به چه صورت انجام می شود ؟ قطعن مانند یک هنرمند واقعی نمی توان از خاک و ... برای ساخت مدلهایمان در کامپیوتر استفاده کنیم . 

مدلینگ در کامپیوتر با استفاده از نرم افزارهای خاصی که جهت انجام این کار ایجاد شده اند انجام می شود برای مثال می توان 3dsMax ، Maya و یا Blender را مثال زد که جزوه مشهور ترین نرم افزارهای مدلینگ هستند ، نرم افزارهای دیگری که محبوبیت بالایی دارند نیز می توان به Zbrush ، Houdini و ... را نام برد.

در پروسه ی یادگیری یک موتور بازی ( اگر با موتور بازی نیز آشنا نیستید تعریف آن نیز ارائه می شود ) ممکن است به اصطلاح Asset برخورده باشید ، به طور کل به هر فایلی که در یک نرم افزار جانبی ایجاد می شود در بازی سازی Asset می گویند این فایل می تواند موسیقی های بازی باشد یا مدل های بازی ، انیمیشن هایی باشد که برای شخصیت های بازی ایجاد شده اند و ... همگی و همگی به عنوان Asset معرفی می شوند.

به عنوان مثال موتور یونیتی داری یک فروشگاه Asset است که تقریبا در آن هر چیزی را می توانید برای ساخت بازی خود پیدا کنید .

اشاره شد که ساخت مدل ها با استفاده از نرم افزاری های تخصصی این کار انجام می شود ، برخلاف ساخت مدل در دیگر قسمت های گرافیک کامپیوتری مانند افکت های ویژه برای فیلم ها و یا انمیشن ها و ... که محصول نهایی فقط به صورت پیش آماده شده در اختیار استفاده کننده قرار می گیرد در مدلینگ برای بازی مُدلِر ( شخصی که مدلینگ می کند ! ) با محدودیت هایی رو به روست و نمی تواند به فرض مثال مدل هایی بسازد که از کیفیت بسیار بالایی برخوردارند و هر سخت افزاری را برای اجرای زنده دچار مشکل کند ، همین محدودیت ها نیز باعث ایجاد اصطلاحات گوناگونی شده اند .

در حین ساخت بازی ممکن است با این اصطلاح روبه رو شوید که مدل این شی یا شخصیت یا ... از Polygon Count   بالایی یا پایینی برخوردار است ، برای مشخص کردن معنی این مفهوم باید این را ذکرکرد که تمامی شکل و اشیایی که  در یک بازی می بینید از چند ضلعی ها و به طور دقیق تر از مثلث ساخته شده اند این اصطلاح به تعداد این چند ضلعی ها اشاره می کند که هر چه تعداد آن بیشتر باشد کیفیت مدل نهایی بالاتر خواهد بود ، همچنین هر مدلی که وارد موتوربازی می شود در زمان نمایش چند ضلعی هایش به مثلث تبدیل خواهند شد و سپس عملیات رسم آن آغاز می شود .