مقدمه ای بر موتور ساخت بازی Unreal Engine 4

صفحه بارگذاری Unreal Engine 4 Editorصفحه بارگذاری Unreal Engine 4 Editor

علیرغم حضور نام های بزرگی مانند CryEngine از شرکت Crytek و سایرین در دنیای بازی، بدون شک Unreal Engine موفق ترین موتور بازی سازی AAA تا به امروز می باشد. با ظهور مارکت های جدیدی مانند Valve Steam, Apple App Store, Google Play و سایر بازارهای از این دست در دنیای بازی های کامپیوتری، فرصت های بسیاری جهت درخشش توسعه دهندگان مستقل در دنیای بازهای کامپیوتری ایجاد شد. قطعا یکی از عوامل موفقیت توسعه دهندگان مستقل در این بازارهای نوظهور موتور بازی سازی Unity بود که برای چند سال سلطان بی چون و چرای دنیای Indie بود. این موتور بازی سازی بدلیل سهولت یادگیری و استفاده، همچنین قابلیت تولید خروجی برای پلتفرم های مختلف شامل دسکتاپ، موبایل و کنسول در ازای پرداخت مبلغی نسبتا معقول، داشتن فروشگاه Asset که باعث کاهش هزینه توسعه بازی ها توسط توسعه دهندگان می شد، از محبوب ترین موتورهای بازی سازی نزد تولیدکنندگان مستقل می باشد. لذا شرکت Epic سازنده موتور بازی سازی Unreal Engine ابتدا با عرضه UDK که بر اساس موتور Unreal Engine 3 توسعه داده شده بود و سپس باز نمودن و عرضه کد Unreal Engine 4 بر روی GitHub که قبلا با مبلغ بسیار گزافی فقط در اختیار آنهائی که این شرکت Licensees می نامید قرار داشت، گام بزرگی به سوی تسخیر بخشی از بازار بازی های مستقل نهاد.

در این سری از مقالات به آموزش ساخت بازی با استفاده از Unreal Engine 4 برای پلتفرم های مختلف Destkop, Mobile و Web خواهیم پرداخت. در اولین مقاله از این سری، به شناخت Unreal Engine 4، مختصری تاریخچه و توضیح مفاهیم آن می پردازیم.

جهت دنبال نمودن این دوره آموزشی نیازی به هیچگونه آشنائی مقدماتی با ساخت بازی های کامپیوتری نخواهد بود.


فهرست


تاریخچه

Unreal Engine حیات خود را به عنوان موتور مورد استفاده بازی Unreal جهت رقابت با بازی Quake II که از موتور بازی سازی id Tech 2 - که با نام Quake II Engine هم شناخته می شود - تولید شرکت id Software، استفاده می نمود آغاز کرد. یکی از موسسان شرکت id Software برنامه نویس افسانه ای John Carmack می باشد که به خاطر نوآوری های او در صنعت بازی های کامپیوتری از سوی بسیاری پدر بازی های مدرن کامپیوتری شناخته می شود. از ویژگی های برجسته او دفاع از نرم افزارهای آزاد می باشد. Id Software با عناوینی چون Commander Keen, Wolfenstien, Doom, Quake و اخیرا Rage از تاثیرگذارترین کمپانی های این صنعت می باشد. بازی Unreal در مقابل Quake، موتور Unreal Engine در مقابل id Tech و Tim Sweeney خالق Unreal Engine، یکی از موسسین و مدیرعامل فعلی Epic Games در مقابل John Carmack بخش قابل توجهی از گذشته صنعت بازی های کامپیوتری می باشد! هر چند که Carmack بعدها شرکت idTech را در آگوست 2013 جهت کار بر روی Oculus Rift که خود بعدها به تصاحب Facebook درآمد ترک نمود.

از زمان عرضه اولین نسخه از Unreal Engine در سال 1998 نسخ دیگری از این Game Engine در سال های بعد یکی پس از دیگری شامل Unreal Engine 2 در سال 2002 (که بعدها با یک آپدیت به نام Unreal Engine 2.5 عرضه شد) و Unreal Engine 3 در سال 2004 عرضه شدند. در ابتدا Unreal Engine 3 پلتفرم های Windows, Xbox 360 و PlayStation 3 را پشتیبانی می نمود که بعدها و در سال 2010 پشتیبانی از Android و iOS هم بدان اضافه شد. همچنین در سال 2011 پشتیبانی از Mac OS X سپس Adobe Flash Player 11 به این موتور اضافه شد. در نهایت در سال 2012 پشتیبانی از Windows RT به آن اضافه شد.

با وجود آنکه استفاده از Unreal Engine 3 برای Modder ها در دسترس و رایگان بود، تولید و فروش بازی توسط Unreal Engine 3 فقط در دسترس کمپانی هایی که لیسانس آن را خریداری کرده بودند قرار داشت. نکته قابل توجه قیمت گزاف این موتور بازی بود (طبق شنیده ها 750 هزار دلار که بسته به نوع Game متغیر بود و امکان داشت تا چندین میلیون دلار هزینه بردارد). با این وجود، در نوامبر 2009 کمپانی Epic نسخه ای از کیت توسعه این موتور بازی را تحت عنوان Unreal Development Kit یا به اختصار UDK جهت استفاده عموم منتشر نمود. سپس در دسامبر 2010 پشتیبانی از iOS به آن اضافه شد. این SDK در نهایت از ساخت بازی برای پلتفرم های Windows, Mac OS X و iOS پشتیبانی می نمود.

نقطه قوت UDK لیسانس بسیار معقول آن بود که آن را تبدیل به گزینه مناسبی برای کمپانی های با بودجه محدود می نمود. کمپانی هائی کوچک که ایده ساخت بازی های Next-Gen را در سر می پروراندند. برای استفاده از UDK بایستی ابتدا 99 دلار را پرداخت نموده و پس از آنکه سود خالص حاصله از درآمد شما بیش از 5,000 دلار می شد پس از کسر 5,000 دلار اولیه 25 درصد از آن را به کمپانی Epic بابت حق Royalty پرداخت می نمودید. بعدها مبلغ اولیه معاف از Royalty به 50,000 دلار افزایش پیدا کرد که بازهم هرچه بیشتر UDK را به عنوان گزینه معقول تری برای بازیسازان جلوه می داد. استفاده از UDK جهت امور آموزشی کاملا رایگان بود اما شما حق ساخت هیچگونه نرم افزار یا بازی Open Source توسط آن را نداشتید.

Unreal Engine 4 که از این پس آن را UE4 می نامیم، از سال 2003 در دست توسعه بوده است. عمده توسعه این Engine تا سال 2008 توسط خالق اصلی Unreal Engine و مدیرعامل Epic یعنی Tom Sweeney انجام گرفته است. در فوریه 2012 و در خلال کنفرانس توسعه دهندگان بازی برای اولین بار به شکل خصوصی و محدود از UE4 پرده برداری شد که به فاصله کوتاهی پس از آن در ژوئن 2012 به صورت عمومی معرفی شد. در سال 2014 اعلام شد که این موتور بازی از نسل هشتم کنسول های بازی، PC و دستگاه های اندرویدی مبتنی بر Nvidia Tegra K1 پشتیبانی می نماید. در حال حاضر که آخرین نسخه پایدار این موتور 4.10.2 می باشد، بصورت کامل از Windows, Linux, Mac OS X, SteamOS, Xbox One, PlayStation 4, Android, iOS و HTML5 پشتیبانی می نماید. همچنین VR و سخت افزارهای آن به خوبی در UE4 پشتیبانی می شود.

در مارس 2014 در خلال رخداد Game Developers Conference، کمپانی Epic به شکل غیرمنتظره ای مدل مالی جدیدی را جهت عرضه UE4 معرفی نمود آنچنان که این خبر دنیای بازی های کامپیوتری را به لرزه درآورد. Source Code کامل UE4 به همراه تمامی ابزارهای آن بر روی GitHub عرضه گذشت. همچنین جهت دریافت سورس کد کامل و ساخت بازی برای Platform های Windows, Mac OS X, Android و iOS بایستی ماهیانه 19 دلار به Epic پرداخت می نمودید به همراه 5 درصد حق Royalty از سود نهائی بازی یا محصول نرم افزاری که براساس آن عرضه می شد. در سپتامبر همان سال Epic اقدام به راه اندازی Unreal Engine Marketplace نمود که به خریداران حق لیسانس UE4 اجازه خرید و فروش Asset های آماده جهت استفاده در ساخت بازی ها را می داد. در همان ماه UE4 به شکل کاملا رایگان به مدارس، دانشگاه ها و سایر مراکز آموزشی جهت امور آموزشی، ساخت بازی، هنر، معماری، شبیه سازی و … توسط دانشجویان عرضه شد. Epic حتی پا را از این فراتر گذاشت و در فوریه 2015 برنامه ای به نام Unreal Dev Grants را با بودجه ای 5 میلیون دلاری جهت سرمایه گذاری بلاعوض در پروژه های ساخته شده با UE4 و تشویق برنامه نویسان به استفاده از آن تخصیص داد. یکسال پس از معرفی مدل مالی جدید، در مارس 2015 استفاده از UE4 و تمامی بروزرسانی های آن برای همگان بدون پرداخت هزینه ماهیانه، تا سقف درآمد 3000 دلار رایگان اعلام شد. در مدل نهائی پس از 3000 دلار سود خالص برای هر محصول در هر فصل، بایستی مبلغ 5 درصد Royalty به شرکت Epic پرداخت شود.

در ژوئن 2015 اعلام شد که Unreal Editor یه شکل Native قابلیت اجرا بر روی GNU/Linux را دارد. البته در حال حاضر هیچگونه باینری برای GNU/Linux عرضه نمی شود و بایستی سورس کد آن پس از دریافت از GitHub توسط کاربر نهائی Compile شود. شایان ذکر است که علیرغم Open Source بودن UE4، لیسانس آن از نوع EULA می باشد. این لیسانس و محدودیت های آن را می تواند از اینجا مطالعه فرمائید.


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

با UE4 می توانید پلتفرم های عمده دسکتاپ شامل Windows, Mac OS X و Linux را هدف قرار دهید. همچنین UE4 از پلتفرم های اصلی موبایل شامل Android و iOS پشتیبانی می نماید. پشتیبانی از وب در UE4 از طریق HTML5 و کیت توسعه Emscripten صورت می پذیرد.

جهت پشتیبانی از کنسول های بازی PlayStation 4 و Xbox One نیازی به پرداخت هزینه اضافه نمی باشد. اما، به Kit توسعه و ابزارهای آن از سوی Sony و Microsoft نیاز خواهید داشت.

UE4 از Virtual Reality یا به اختصار VR بر روی SteamVR/HTC Vive, Morpheus, Oculus Rift, Gear VR و سایر دستگاه های از این دست پشتیبانی می نماید.

به این دلیل که SteamOS شرکت Valve بر اساس لینوکس دبیان توسعه یافته است، به خوبی توسط UE4 پشتیبانی می شود.


زبان برنامه نویسی

به شکل سنتی، زبان اسکریپت نویسی UnrealScript تا پیش از UE4، زبان اصلی برنامه نویسی GamePlay در تمامی نسخ آنریل انجین بوده است. گاها ممکن است از این زبان به نام UScript نام برده شود. UnrealScript به عنوان یک زبان سطح بالا مانند زبان برنامه نویسی Java یک زبان برنامه نویسی شی گرا می باشد که از ارث بری چندگانه پشتیبانی نمی نماید و نام فایل ها بایستی مترادف نام کلاس درون آن ها باشد. برخلاف جاوا از Object Wrappers برای Primative Type ها پشتیبانی نمی نماید. Interface ها فقط در Unreal Engine 3 به بعد و چند بازی انگشت شمار که بر اساس Unreal Engine 2 توسعه داده شده اند دیده می شوند. این زبان اسکریپت نویسی از بارگذاری عملگرها پشتیبانی می نماید اما قابلیت بارگذاری متد ها را ندارد (نگران واژه های فنی مطرح شده نباشید بعدها در صورت لزوم در جای خود توضیح داده خواهند شد). در مارچ 2014 اعلام شد که در Unreal Engine 4 زبان برنامه نویسی C++ جایگزین UnrealScript در UE4 خواهد شد. بنابر اعلام Epic Games به دلیل آنکه UnrealScript یک زبان مفسری می باشد کارائی آن 20 برابر کمتر از C++ می باشد.

با معرفی Unreal Engine 4 از سوی Epic، زبان بصری Blueprints به عنوان جایگزینی برای زبان مشابه دیگر اما محدودی به نام Kismet در Unreal Engine 3 معرفی شد. مزیت این زبان، یادگیری سریع آن توسط افراد غیربرنامه نویس مانند Artist ها می باشد که به آن ها توانائی ساخت بازی بدون نیاز به برنامه نویس را خواهد داد. همچنین برنامه نویسان می توانند از Blueprints جهت ساخت سریع Prototype یا نمونه اولیه بازی هایشان با صرف کمترین زمان ممکن استفاده نمایند. بزرگترین مزیت Blueprints ویژگی Live Debugging آن به علاوه زمان توسعه سریع و کوتاه می باشد که در اکثر موارد آن را تبدیل به گزینه مناسبی در مقابل C++ می نماید. این زبان بصری 10 برابر از C++ کندتر می باشد.

در طول این سری آموزشی از هر دو زبان C++ و Blueprints استفاده می نمائیم. همزمان با این سری به آموزش C++ در پست های جداگانه به زبان ساده خواهیم پرداخت. یادگیری C++ جهت دنبال نمودن این دوره الزامی نخواهد بود اما به شما کمک می نماید تا حداکثر کارائی را از UE4 برداشت نمایید. در واقع علیرغم سرعت اجرای پایین تر Blueprints در بسیاری از موارد کارائی آن بیش از حد نیاز می باشد.


Unreal Editor

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

  • Level Editor: این ابزار، Editor اصلی جهت ساخت مراحل بازیتان می باشد. به بیان ساده اینجا جائی است که فضای بازی را بوسیله افزودن Actor ها، Geomery ها، کدهای Blueptints، سیستم Particle و یا هر چیزی که می خواهید در آن باشد تعریف می نمائید. به صورت پیش فرض پس از ایجاد یک پروژه جدید، آن پروژه در Level Editor باز می شود.
  • Material Editor: این ابزار جائی است که شما می توانید بافت هائی را – مانند سنگ، شیشه، چوب و … - جهت اعمال بر حجم ها و سطوح سه بعدی ساخته یا ویرایش نمائید تا شکل بصری آن ها را کنترل کنید. برای مثال شما می توانید با استفاده از این ابزار بافت گِل را ایجاد نموده و آن را بر روی کف خیابان ها یا کوه های داخل بازی اعمال نمائید تا سطح آنها گِلی به نظر برسد.
  • Blueprint Editor: با استفاده از این ابزار به شکل کاملا بصری قادر به ویرایش و یا کار با Blueprint هایتان خواهید بود، Asset هائی ویژه که به شما توانائی ایجاد انواع جدید Actor و کنترل روند و خدادهای بازی را می دهند، بدون حتی یک خط کد نویسی در C++.
  • Behavior Tree Editor: در داخل این ابزار شما توانائی ایجاد و تعیین هوش مصنوعی یا AI را از طریق یک سیستم بصری مبتنی بر Node (درست مانند Blueprints) برای Actor های داخل مراحل خود خواهید داشت (که می تواند هر تعداد رفتار را برای دشمنان، کاراکترهای NPC، خودروها و … شامل شود).
  • Persona Editor: مجموعه ای از ابزارها جهت ویرایش انیمیشن در UE4 می باشد که برای ویرایش Skeleton Asset ها، Skeletal Mesh ها، Animation Blueprint ها و انواع دیگر Asset های انیمیشن به کار می رود. غالب (اگر نه تمامی) کار انیمیشن شما در UE4 در این Editor اتفاق می افتد.
  • Cascade Editor: در UE4 تمامی Cascade Particle System ها داخل این ابزار ویرایش می شوند که یک محیط مجتمع ویرایشگر ماژولار افکت های ذرات است (مانند: انفجار، آتش، گرد و خاک، باران و …). Cascade مشاهده آنی و بلادرنگ تغییرات را به همراه ویرایش ماژولار جلوه ها، فراهم می آورد.
  • UMG UI Editor: یک ابزار بصری ساخت رابط کاربری یا UI می باشد که می توان از آن برای ساخت عناصر رابط کاربری مانند In-game HUD، منوها و سایر عناصر گرافیکی مربوط به رابط کاربری که می خواهید به کاربر نشان دهید، استفاده نمود.
  • Matinee Editor: اساس آن ترک های انیمیشن ویژه ای هستند که می توانید درون آن ها Keyframe هایتان را برای تعیین خصوصیات خاصی از Actor های درون مراحل، بگنجانید. با استفاده از آن می توانید دست به خلق سینماتیک های داخل بازی، رخدادهای Dynamic مربط به Gameplay یا حتی Animate نمودن خصوصیات Actor ها به مرور زمان نمائید (مثلا تغییر روشنائی یک نور).
  • Sound Cue Editor: چگونگی پخش صدا در UE4 داخل Sound Cue ها تعریف می شود که توسط این Editor ویرایش می شوند. در آن می توانید چند Asset صدا را با یکدیگر ترکیب نموده و آن صدای واحد ترکیب شده را در قالب یک Sound Cue ذخیره نمائید.
  • Paper2D Sprite Editor: قابلیت ساخت و ویرایش هر فریم جداگانه از Sprite های Paper 2D (که در واقع راهی ساده و سریع جهت ساخت انیمیشن های دوبعدی در UE4 هستند) را فراهم می آورد.
  • Paper2D Flipbook Editor: با استفاده از آن می توانید انیمیشن های دوبعدی درست کنید که Flipbook نامیده می شود. این اتفاق با تعیین نمودن یک رشته از Sprite ها در قالب تعداد مشخصی Keyframe در Paper 2D Flipbook میسر می شود که با ورق خوردن هر فریم یک انیمیشن ساخته می شود. بهترین راه جهت درک Flipbook ها تصور انیمیشن های سنتی و قدیمی هستند که با دست طراحی می شدند.
  • Physics Asset Tool Editor: که به اختصار PhAT هم نامیده می شود در جهت ساخت Asset های فیزیک به منظور استفاده در Skeletal Mesh ها به کار می رود. در آن به سادگی می توان بدون هیچ پیش زمینه ای یک Ragdoll ساخته و یا با استفاده از ابزارهای خودکار Physic Body ها و Physics Constraint ها را ایجاد نمود.
  • Static Mesh Editor: با استفاده از این ابزار می توان اقدام به نمایش ظاهر، برخورد و UV ها نموده، همچنین خصوصیات Static Mesh ها را دستکاری نمود. علاوه بر آن در این Editor می توان تنظیمات LOD یا Level of Detail را برای Static Mesh Asset ها تعیین نمود.
  • Media Player Editor: این Editor شما را قادر به تعریف فایل های چندرسانه ای و یا URL ها جهت پخش در UE4 می سازد. با وجود آنکه لزوما یک Editor محسوب نمی شود (به این جهت که امکان ویرایش فایل های چندرسانه ای را به شما نمی دهد) اجازه تعیین اینکه فایل یا URL شما چگونه پخش شود را به شما خواهد داد. از قبیل: Auto-playing, Play Rate یا Looping. همچنین می توانید با استفاده از آن اطلاعات مربوط به Media خود را مشاهده نمائید.علاوه بر آن، اجازه پخش فایل یا URL تان را به شما خواهد داد.

در زمان مناسب با هریک از این Editor ها و مفاهیم مطرح شده آن ها آشنا خواهیم شد.

محیط توسعه

چنانچه از Blueprints Visual Scripting یا کدنویسی بصری استفاده نمائید تمام کد نویسی شما در محیط Unreal Editor انجام خواهد شد و نیاز به هیچ ابزار دیگری نخواهد بود.

در صورت انتخاب C++ به عنوان زبان اصلی توسعه در UE4، بسته به پلتفرمی که به عنوان پلتفرم توسعه انتخاب نموده اید IDE مقصد متفاوت خواهد بود.

  • محیط رسمی مورد پشتیبانی جهت توسعه در پلتفرم ویندوز Microsoft Visual Studio می باشد. تا نسخه 4.10.2 که آخرین نسخه پایدار فعلی است، بهتر است از Visual Studio 2013 Update 5 استفاده نمائید (ابتدا اعلام شد که این نسخه با Visual Studio 2015 Update 1 سازگار نمی باشد اما بعدا اعلام شد که مشکلی وجود نداشته است). از آن جهت که مایکروسافت به اجبار تمامی توسعه دهندگان ویندوز را به ارتقا هرچه سریعتر به نسخه 2015 آن تشویق می نماید، در نسخه سری UE 4.11 و بالاتر، نسخه رسمی مورد پشتیبانی، Visual Studio 2015 با Update 1 و یا بالاتر می باشد. طبق گفته Epic از نسخه 4.11 به بعد پشتیبانی از Visual Studio 2013 منسوخ شد.
  • در محیط Mac OS X همانطور که انتظار می رود محیط رسمی توسعه فقط Apple Xcode می باشد.
  • در محیط Linux روش پیشنهادی Coss-Compile از ویندوز برای لینوکس می باشد (در حال حاضر Coss-Compile از Mac OS X مقدور نمی باشد). اما می توان اقدام به تولید Unix Makefile یا CMakeLists.txt نموده سپس با استفاده از یکی از IDE های Qt Creator یا KDevelop 4.6+ یا هر IDE با پشتیبانی از یکی از روش های فوق، اقدام به باز نمودن پروژه نمود. چناچه از KDevelop استفاده نمائید نیاز به حداقل 3 تا 4 گیگابایت رم خواهد بود. همچنین نیازمندی های مورد نیاز شامل Mono 3.x به علاوه Compiler زبان C# و کتابخانه های .NET نسخه 4.0، کامپایلر Clang 3.3.x تا 3.6.x بجز 3.5.x، کتابخانه Qt 4 یا 5 و یا GTK.

Unreal Tournament

همزمان با عرضه کد های UE4 از سوی Epic بر روی GitHub، یک Repository دیگر جهت توسعه نسخه بعدی Unreal Tournament بر روی اکانت GitHub این شرکت ایجاد و کار بر روی آن بر اساس UE4 شروع شد. تاریخچه کامل توسعه آن به همراه تمامی منابع و Asset های مورد استفاده، برای همگان قابل رویت می باشد که آن را تبدیل به یک منبع آموزشی فوق العاده جهت استفاده افرادی که تمایل به مشاهده چگونگی ساخت بازی های بزرگ دارند، می نماید. به مانند کد UE4، شما حتی قابلیت اعمال تغییر بر روی کد آن و عرضه تغییرات خود به Epic را خواهید شد که ممکن است از سوی آن ها پذیرفته شود. Epic اعلام نموده که لزوما این Repository و محتویات آن، در ساخت Unreal Tournament بعدی مورد استفاده قرار نخواهد گرفت!


در ادامه این سری آموزشی، ابتدا به نحوه ی نصب، پیکربندی و راه اندازی UE4 با استفاده از Epic Games Launcher و یا دریافت و کامپایل از سورس کد به همراه تمامی پیش نیاز ها و ابزارهای آن خواهیم پرداخت. پس از آن قادر خواهیم بود توسعه بازی در محیط UE4 را به همراه هم تجربه نمائیم.

مقالات مرتبط