آموزش کار با موتور گرافیکی آنریل ( Unreal Engine ) “قسمت اول”
“به قلم وحید حیدریپور از مجله بازینامه”
مقدمه
موتور بازیسازی آنریل، یکی از معروفترین موتورهای بازی سازی است که توسط شرکت اپیک گیمز طراحی شده و توسعه داده میشود. این موتور اولین بار در سال ۱۹۹۸ در بازی اول شخص تیراندازی Unreal رونمایی شد. اگرچه موتور آنریل در درجهی اول برای ساخت بازیهای اول شخص تیراندازی ساخته شده، ولی حضور موفقیت آمیزی در مابقی ژانرهای بازی های ویدئویی شامل stealth، MMORPG و سایر RPGها داشته است. یکی از ویژگیهای بارز و بسیار خوب موتور آنریل قابل حمل بودن بسیار بالای کدهایی است که که به زبان C++ در آن نوشته میشود. و به عنوان ابزاری کارآمد برای بسیاری از بازیسازان کنونی درآمده است.
نسخهی کنونی موتور آنریل، Unreal Engine 4، برای DirectX 11,12 مایکروسافت ( برای ویندوز، Xbox One و ویندوز RT)، OpenGL ( برای سیستم عامل مک، لینوکس، PlayStation 4، IOS، Android، Ouya و ویندوز XP) و JavaScript/WebGL برای کار با HTML5 در browserهای وب طراحی شدهاست.
بازی آنریل، اولین بازی ساخته شده با موتور بازیسازی آنریل ۱:
بازی Killing Floor، ساخته شده با استفاده از موتور آنریل ۲:
بازی BioShock Infinite، ساخته شده با استفاده از موتور آنریل ۳:
و تصویری از مقایسه توانایی رندر گرافیکی موتورآنریل ۱، ۲ و ۳ با استفاده از مدل Malcom از بازی آنریل تورنمنت، آنریل تونمنت ۲۰۰۴ و آنریل تورنمنت ۳ در کنار هم:
شرکت اپیک گیمز چندی پیش در حرکتی خداپسندانه، آخرین نسخه از موتور آنریل را که تاکنون رایگان نبود(!) یعنی آنریل ۴ را به شکل رایگان و متن باز در اختیار عموم قرار داده است. مقالهای که پیش روی شماست به عنوان متنی آموزشی سعی در ارائهی مطالب مفید و کاربردی در مورد موتور آنریل ۴ دارد، با ما همراه باشید.
آشنایی با ادیتور آنریل ۴
برای شروع با ادیتور موتور آنریل ۴ آشنا میشویم، وقتی برای اولین بار ادیتور موتور آنریل ۴ را باز میکنیم با صفحه به این شکل روبرو میشویم:
همانطور که ملاحظه میکنید در قسمت پروژهی جدید، دو سربرگ Blueprint و C++ وجود دارد، که در هرکدام گزینههای مختلفی موجود است. در صورتی که در سربرگ Blueprint یک پروژهی خالی بسازیم، در ادامه خواهیم دید که چه اتفاقی خواهد افتاد. اما اگر سربرگ C++ و پروژهی خالی را انتخاب کنیم مقادیری کد به زبان C++ به پروژه اضافه خواهد شد. در قسمت پایین صفحه مسیری که پروژه در آن ذخیره خواهد شد را انتخاب میکنیم و دکمه Create Project را میزنیم. حال اندکی صبر لازم است تا موتور فایلهای مورد نیاز برای پروژه جدید را در مسیری که به آن دادهاید کپی کند.
اگر شما هم مثل من پروژهی خالی Blueprint را انتخاب کرده باشید با صفحهی بالا روبرو خواهید شد. خب، ما یک مرحلهی خیلی خیلی ساده ساختهایم، اولین چیزی که نظرِ شما را به خود جلب خواهد کرد و بیشترین بخش تصویر را هم شامل میشود Viewport است، که به عنوان چیزی که شما از دنیای سه بعدی خواهید دید به نمایش درمیآید. در سمت چپ و بالا، مانند بسیاری از نرم افزارهای دیگر منوهای اصلی را مشاهده میکنید. با کلیک بروی گزینهی فایل منوی فایل به شکل زیر خواهد بود:
همانطور که میبینید مانند بسیاری از منوهای فایل دیگر، با اندک گزینههایی متفاوت که در ادامه به آنها خواهیم پرداخت.
با کلیک بروی گزینه ادیت، منوی زیر را خواهیم داشت:
که در آن گزینههای Editor Preferences و Project Settings، گزینههایی هستند که میشود بروی آنها جزئی شد و درموردشان صحبت کرد. گزینهی بعدی Window، بسیار پراهمیت است زیرا بخشهای مختلف از رابط کاربری را میتوان از این منو فعال یا غیرفعال کرد.
که بازهم درمورد هرکدام از بخشهای آن میتوان کاملاً جزئی سخن گفت. و در آخر منوی Help است که بسیار کاربردی است. در منوی Help اولین قسمت مستندسازی است که با استفاده از کلید F1 قابل دسترسی است.
این گزینه شما را مستقیماً به مستندات وبسایت متصل میکند. در مورد آموزشهای مقدماتی میتوانید از قسمت Tutorials استفاده کنید. از منوها که بگذریم به نوارابزاری که بالای Viewport قرار دارد میرسیم، که شامل کلیدهای پرکاربردی است و به شما این امکان را میدهد که با یک کلیک کاری که میخواهید را انجام دهید.
از چپ به راست کلید Save یا همان Ctrl+s خودمان که برای ذخیرهسازی است. Source Control که به شما امکان متصل شدن به یک نرم افزار کنترل پروژه را میدهد. Content که شما را به Content Browser خواهد برد و امکان استفاده از آنها را مهیا میسازد.
Marketplace شما را به مارکت های فروش Content متصل خواهد کرد. گزینه ی بسیار مهم Settings که به شما این امکان را میدهد خیلی سریع تنظیماتی از Viewport و یا پروژه را تغییر دهید. گزینهی Play که شما را به محیط Viewport میبرد و هرآنچه که در بازی خواهید دید و شنید برایتان قابل شنیدن و رؤیت خواهد بود.
خب، بیایید دوباره به سمت چپ برویم، همانجایی که پنل Modes وجود دارد؛
به صورت پیش فرض بروی مود جایگذاری است، و به شما این امکان را میدهد تا اتفاقات مختلفی را در Viewport وارد کرده و جایگذاری کنید، برای مثال به قسمت Lights سری بزنید، یک نور مستقیم یا نقطهای را انتخاب کنید و بکشید و در Viewport رها کنید و به صورت زنده تأثیری که بر محیط میگذارد را ملاحظه کنید.
در این بخش سربرگهای بعدی به ترتیب Paint، Landscape، Foliage و Geometry Editing هستند، که درمورد هرکدام به تفصیل صحبت خواهیم کرد.
بخش بعدی Content Browser، یا همان بخشی است که ما در آن محتواهایی که میخواهیم در پروژه استفاده کنیم را در آن مییابیم. به عنوان مثال اگر شما میخواهید بر روی آبجکتهای موجود در پروژهتان، Material خاصی بدهید و یا در پروژهتان موسیقی داشته باشید، باید آنها را ازین بخش بارگذاری کنید. در تصویر، من بروی StarterContent کلیک کردم و همانطور که میبینید در آن تعدادی پوشه وجود دارد. برای مثال اگر بروی پوشه Props دوبار کلیک کنم همهی Propهای موجود در صحنه را برایم لیست میکند و درصورتی که بخواهم هرکدام از آنها را ادیت کنم، با دوبار کلیک بروی آن Prop این امکان برایم فراهم میشود.
که من بروی یکی از Meshها دوبار کلیک کرده و MeshEditor به شکل زیر ظاهر میشود.
حال بیایید سری به سمت بالا و راست بزنیم، World Outliner. این همان جایی است که همهی آبجکتهای موجود در مرحلهی شما را به شکل سلسلهمراتبی در خود دارد. که با کلیک کردن بروی هرکدام از آنها همان آبجکت در صحنه به شکل خودکار انتخاب میشود و به شما امکان تغییر در آن را میدهد. برای مثال شما میتوانید یکی از آبجکتها را به عنوان Parent برای آبجکت دیگر مشخص کنید و به این ترتیب، هر تغییری بروی والد، بروی فرزندان آن هم اعمال خواهد شد.
با انتخاب هرکدام از آبجکتهای موجود در صحنه، پنل خصوصیات آن آبجکت نمایان میشود که فوق العاده مهم و کاربردی است و به شما این امکان را میدهد تا تغییرات دلخواه را بروی
آبجکت مورد نظرتان اعمال کنید.
این پنل شامل بخشهای متنوعی برای ایجاد تغییرات دلخواه شماست، از تغییر مکان و اندازه و زاویه گرفته تا تغییر در Mesh و Material. که البته به همین جا خاتمه نمییابد، ولی به دلیل محدودیت در تصویر به همین اندازه بسنده میکنم و مابقی را به شما واگذار میکنم.
تا بدین جای کار سعی کردم تا شما را با چیزهایی که در اولین برخورد با ادیتور آنریل مواجه خواهید شد اندکی آشنا کنم. حال میخواهم تا شما را با نحوهی کار با Viewport که یکی از مهمترین بخشهای واسط کاربری است بیشتر آشنا کنم. اولین کاری که میخواهیم انجام دهیم کار کردن با ماوس در Viewport است. در Viewport کلیک چپ ماوس را نگه دارید و به سمت چپ یا راست حرکت دهید، گویی در حال چرخاندن سرتان به چپ یا راست هستید. حال ماوس را به سمت جلو و عقب حرکت دهید؛ همانطور که میبینید به سمت جلو و عقب حرکت میکنید. شما میتوانید آزادانه در مرحلهای که طراحی خواهید کرد پرواز کنید و به همه جای آن سرک بکشید.
حال در همان حالی که در Viewport هستیم، کلیک راست را نگه میداریم و به سمت چپ و راست و جلو و عقب حرکت می دهیم. در حالتی که ماوس را به سمت چپ و راست حرکت میدهیم مشابه کلیک چپ خواهد بود، ولی زمانی که به سمت جلو و عقب حرکت دهید، نمای دوربین به سمت بالا و پایین حرکت میکند. در واقع با کلیک راست شما در جایتان ثابت هستید.
حالت بعدی استفاده از کلید میانی ماوس است ( که میتوان به جای آن همزمان از کلیک چپ و راست هم استفاده کرد)؛ اگر میخواهید زاویه دوربین ثابت بماند و فقط در جایی که هستید به طرف بالا یا پایین و چپ و راست حرکت کنید، کلید میانی این کار را برایتان انجام خواهد داد.
در بالای Viewport گزینههایی وجود دارد که شما را در کار کردن با Viewport یاری میدهد. مثلاً اگر حس میکنید سرعت دوربین زیاد است میتوانید با استفاده از گزینه بالا سمت راست سرعت دوربین را تعیین کنید که به صورت پیشفرض بروی ۴ تنظیم شدهاست.
راه دیگری که برای حرکت کردن در محیط Viewport وجود دارد استفاده از کلیدهای W،A،S و D است، بله، کلیدهای همراهمان در بازیهای اول شخص تیراندازی. در همان حالی که کلیک چپ ماوس را نگه داشتهاید، با استفاده از کلیدهای مذکور در محیط حرکت کنید. کلید E شما را مستقیماً به سمت بالا میبرد، برای به خاطر سپردن، اول کلمه Elevator. کلید Q همان حرکت را عکس انجام میدهد. به خاطر داشته باشید که باید کلیک چپ ماوس را نگه داشته باشید، در غیر این صورت کلیدهای گفتهشده شما را به هدفتان نمیرسانند. کلید C ( به همراه کلیک) برای زوم کردن استفاده میشود و FOV را تغییر میدهد، و برای زوم به سمت عقب از کلید Z استفاده میشود و به محض اینکه کلیک را رها کنیم به حالت عادی باز خواهیم گشت.
راه سوم استفاده از کلید Alt و کلیک ماوس است، کلید Alt را نگه دارید و با کلیک چپ بهدور محوری که در صفحه وجود دارد حرکت خواهید کرد. اگر میخواهید که شیای را به عنوان محور در صحنه داشته باشید برویش کلیک کنید و کلید F را بزنید، حال با استفاده از Alt و کلیک ماوس به دور آن بچرخید.
حال که با اشکال مختلف کار کردن با Viewport آشنا شدیم، بیایید درمورد Orthografic Views باهم صحبت کنیم. در بخش Viewport به بالای سمت راست دقت کنید، اگر مأوس خود را بروی مربعهای کوچکی که در کنار سرعت دوربین هست نگه دارید با این جمله مواجه میشوید: Maximizes or restores this viewport. بروی آن کلیک کنید. با تصویر زیر روبرو خواهید شد.
همانطور که مشاهده میکنید Viewport به چهار قسمت تقسیم میشود که در واقع سه قسمت از آن به شکلی بدون عمق هستند. بالا سمت چپ نمای کناری از صحنهی کنونی، بالا سمت راست، نمای روبرو، پایین سمت راست نمای از بالا و پایین سمت چپ هم که همان نمای آشنای پرسپکتیو خودمان است.
با استفاده از کلید میانی مأوس میتوانید بروی هریک زوم کنید و با استفاده از کلیک راست تصویر را جابهجا کنید. نکتهی جالبی که احتمالاً در هنگام جابهجا کردن متوجه آن خواهید شد این است که اشیای موجود در صحنه در هر سه نما همواره برخط خواهند ماند و خط سبز در نمای کناری با خط قرمز نمای جلو و به همین ترتیب با نماهای پایین همواره یکی است و با حرکت دادن یکی از نماها مابقی هم حرکت میکنند تا همه اشیای موجود در صحنه در یک خط بمانند. به صورت پیش فرض همهی نماهای بدون عمق به شکل Wireframe نشان داده می شوند. اگر روی دکمهای که در سه نما به همین نام است کلیک کنید با حالات مختلفی روبرو میشوید. اگر خواستید که یکی از این نماها را به عنوان نمای اصلی انتخاب کنید و بزرگش کنید، از همان مربع کوچک که در گوشه بالاییِ نماست استفاده کنید. راه دیگری برای دسترسی به نماهای بدون عمق هست و آن این است که در نمای پرسپکتیو، بروی کلید Perspective کلیک کنید و هر سه نما را در این قسمت خواهید دید، هرکدام را که میخواهید انتخاب کنید.
کاربرد گسترده نماهای بدون عمق زمانی است که شما میخواهید با دقت بسیار زیاد آبجکتها را در محیط قرار دهید. در کنار دکمه Perspective نوشته شده است Lit. به نظرتان این گزینه چیست؟ برویش کلیک میکنیم تا ببینیم.
همان طور که ملاحظه می کنید Wireframe که قبلاً با آن آشنا شدیم هم هست، بله، حالتهای مختلف در نشان دادن نماها وجود دارد. که به شکل پیشفرض در حالت Lit قرار دارد. Lit حالتی است که نورپردازی را در محیط اعمال میکند و در واقع همان حالتی است که تاکنون میدیدیم. گزینه بعدی Unlit است، یعنی همان حالت Lit ولی بدون نورپردازی. حالت بعدی Wireframe است که به شما این امکان را می دهد تا تمامی لبههای چندضلعیهای موجود را مشاهده کنید. بعدی Detail Lighting است که تنها نورپردازی را به نمایش میگذارد. گزینه بعدی که به کارتان خواهد آمد Reflections است که بازتابها را به نمایش خواهد گذاشت. گزینه بعدی که به نظرم خوب است بدانید Exposure است، ماوس خود را برویش نگه دارید.
Exposure در موتور آنریل به صورت پیش فرض به شکل اتوماتیک است، سؤال خوبی است! این Exposure چیست؟ حتماً برایتان اتفاق افتاده است که وقتی در محیطی تاریک هستید و به محیطی با نوری بیشتر میروید شدت نور چشمتان را بزند یا اطراف را خیلی سفید حس کنید. این قابلیت در موتور آنریل به شکل پیش فرض وجود دارد. پس اگر محیطی که طراحی میکنید نور کمی دارد و میخواهید از این محیط کم نور به محیطی با نور بیشتر بروید، اگر این قابلیت را دوست ندارید Exposure را به صفر تغییر دهید.
گزینه بعدی Show است که لیست تعدادی از flagهای تغییرپذیر را در خود دارد.
همانطور که می بینید می توانید Anti-aliasing، BSP،Collision،Fog و مابقی اتفاقات را خاموش یا روشن کنید. در قسمت All Show flags میتوانید همه این قابلیتها را درکنار هم ببینید. پس پردازش، انواع نور و نورپردازی، مشخههای نوری و … با همهی این قابلیتها کار کنید و حداقل هرکدام را یکبار روشن و خاموش کنید، و نگران این نباشید که چیزی را خراب خواهید کرد. گزینه Use Defaults در هر حالی که باشید شما را به حالت پیش فرض برخواهد گرداند.
حال بیایید اندکی درمورد اینکه چگونه آبجکتها را در محیط چیدمان کنیم صحبت کنیم. برای این منظور به منوی فایل بروید، New Level و سپس Defualt را انتخاب میکنیم.
بر روی دستهی بازی که در وسط صحنه است کلیک کنید و کلید Delete را فشار دهید. با استفاده از پنل سمت چپ میتوان اشیایی را به محیط اضافه کرد. فقط کافی است یکی را انتخاب کنید، و بکشید و در Viewport رها کنید. البته سایز آبجکتها نسبت به محیطی که ما داریم بزرگ است و به کمک پنل سمت راست میتوانید اشیا را به اندازه دلخواه درآورید. و با استفاده از ابزارهای بالای Viewport به آن تغییر اندازه یا زاویه و … دهید. همچنین میتوانید از Content Browser برای آوردن assetهای مختلف به محیط استفاده کنید. اگر خاطرتان باشد در Content Browser پوشه StarterContent را داشتیم. که برای شروع خوب است. برای مثال از پوشه Props یک Mesh انتخاب کنید و به محیط بیاورید. جالب است که به شکل پیش فرض بروی سطح قرار میگیرد، و یا یک میز در محیط بیاورید. دیگر نیازی نیست نگران این باشید که مبادا پایههای میز در سطح فرو رود یا بروی هوا بایستد، خودش میداند که باید بروی سطح قرار بگیرد. همچنین این امکان وجود دارد که در هر نقطه از محیط کلیک راست کنید و در قسمت Place Actor آبجکتی را در همان نقطه ایجاد کنید.
حال بیایید تا آبجکتهایی که به محیط آوردهایم را اندکی جابهجا کنیم، یک صندلی به محیط میآوریم. کلید W را بزنیم یا از نوار بالای Viewport کلید چهارجهته را انتخاب میکنیم.
سه کمانه در مرکز صندلی ظاهر میشود که امکان جابهجایی صندلی در سه جهت x، y و z را میدهد. اگر صندلی را اندکی بچرخانیم وسط سه کمانه صفحاتی را خواهیم دید که امکان حرکت دادن صندلی در آن صفحات را مهیا میکنند.
در قسمت پایین و چپ تصویر هم نشانگر کوچکی حاضر است تا محورهای مختصات را به شما یادآور شود. اگر آبجکت را از سطح جدا کردید نگران این نباشید که چطور آن را دوباره بروی سطح گردانید، راههای زیادی برای این کار وجود دارد که یکی از آنها استفاده از کلید End است. اگر اکنون کلید E را فشار دهید امکان چرخاندن شی برایتان مهیا میشود.
اندکی با ابزار چرخش کار کنید، حال میخواهم که شما هم صندلی خود را به شکلی که من درآوردهام دربیاورید، اندکی بچرخانید، سپس با استفاده از W آن را مقداری به سمت بالا جابهجا کنید.
اگر بخواهم صندلی را در جهت محور z خودِ صندلی حرکت دهم به نظرتان چه باید بکنم، اگر من کمانه آبی رنگ را بگیرم و به سمت بالا یا پایین بکشم چه اتفاقی میافتد؟ این همان جایی است که مبحث سیستم مختصات محلی و جهانی پیش میآید. نظر شما را به کرهی کوچکی که در بالای تصویر در کنار ابزارهای حرکت دادن و چرخش و تغییراندازه قرار دارد جلب میکنم. این کره کوچک بیانگر این مسئله است که شما در سیستم مختصات جهانی هستید، یعنی اگر در جهت محور z صندلی را حرکت دهید در جهت محور z جهانی حرکت خواهد کرد. یک بار که برویش کلیک کنیم یک مکعب کوچک جایگزین کره میشود. و سیستم مختصات به سیستم محلی تغییر میکند.
همانطور که میبینید کمانههای مختصات در راستای ابعاد صندلی قرار گرفتهاند. حال اگر در جهت z حرکت کنیم صندلی در جهت محور z خودش حرکت میکند. به راحتی میتوانیم با استفاده از پنل Transform صندلی را به حالت اول بازگردانیم. و به این نکته توجه داشته باشیم که در محیط موتور آنریل واحد جابهجایی به سانتیمتر است. اگر شما در پنل Transform و در قسمت Location مقدار x را به ۳۰۰ تغییر دهید آبجکت در راستای محور x به همان اندازه در واحد سانتیمتر جابهجا خواهد شد.
وقتی صندلی را جابهجا میکنید حتماً متوجه شدهاید که صندلی حرکتی بریده بریده دارد. انگار که بروی یک Snap Grid حرکت کند! بله، همینطور است، نظر شما را به قسمت بالایی تصویر و به صفحه شطرنجی که در کنارش عدد ۱۰ نوشته شده است جلب میکنم. این شکل که به رنگ نارنجی درآمدهاست بیان میکند که شما بروی یک Grid در حرکت هستید و گام حرکتتان ۱۰ سانتیمتر است. اگر میخواهید میتوانید گامتان را بلندتر بردارید و یا با غیرفعال کردن این دکمه آزادانه آبجکت را در محیط حرکت دهید.
اجازه دهید یک نکتهی دیگر درمورد جابهجایی بگویم و مبحث جابهجایی را خاتمه دهیم، در تصویر بالا به نقطهی سفید رنگ در وسط سه محور توجه کنید، این نقطه به شما این امکان را میدهد که در هرجهتی که میخواهید آزادانه صندلی خود را حرکت دهید، برویش کلیک کنید و امتحان کنید.
در قسمتهای بعدی این سری مقالات به بررسی امکانات بیشتری از این موتور قدرتمند خواهیم پرداخت.
با ما همراه باشید.
…………………………..
این مقاله در مجله تخصصی بازینامه تهیه شده است.
برگرفته شده از PardisGame