موتور بازی سازی چیست؟
یک موتور بازی سازی نرمافزاری است که مجموعهای از امکانات و ویژگیهای مورد نیاز برای ساخت یک بازی به صورت سریع و کارآمد را فراهم میکند. یک موتور بازیسازی فریمورکی (Framework) است برای توسعه بازی که از چندین هسته اصلی تشکیل شده است. توسعه دهنده میتواند آرت و دارایی دو بعدی و سه بعدی را از دیگر نرمافزارها نظیر Maya یا 3D Max یا فوتوشاپ وارد موتور کند و با آنها مرحلهها و محیطهای بازی را بسازد. همچنین نور، صدا، افکتهای خاص، فیزیک، انیمیشن، تعامل و منطق گیمپلی (Gameplay) اضافه کند. همینطور میتواند آنها را ویرایش کند، عیبیابی یا دیباگ (Debug) انجام بدهد و بازی خود را برای پلتفرمهای مختلف بهینهسازی کند.
گرافیک
موتورهای بازیسازی مدرن قدرت گرافیکی خیرهکنندهای دارند و به سهولت فرایند تولید کمک میکنند. همانند فرآیند وارد کردن داراییها از پلتفرمهای مختلف، اصلا نیازی به صرف وقت زیاد برای ایمپورت کردن (Import) نیست. برای ساخت بیشتر بازیها، موتورهای بازیسازی قابلیتهای رندر با عملکرد بالایی را فراهم میکنند. با دسترسی به API گرافیکی سریع میتوان از نظر بصری بسیار به بازی خود رسید.
صدا
توسعهدهنده این امکان را دارد تا صداهای بازی را از پایه طراحی کند. این صداها شامل موسیقی، صداهای محیطی و صوتهای کاراکترها میشود. همینطور میتوان صداهای موردنظر خود را از پلتفرمهای مخصوص صدا و موسیقی انتخاب و تهیه کرد و در بازی استفاده کرد. موتورهای بازی سازی کمک میکنند تا با جمعآوری این صداها از منابع مختلف، آنها را به صورت خلاقانهای در متن بازی خود استفاده کنیم. توسعهدهنده با به کارگیری هوشمندانه صداها میتواند احساسهای گوناگون در بازیکن را برانگیزد.
شبکهسازی
بسیاری از بازیکنها دوست دارند با دوستان خود به صورت گروهی و آنلاین بازی کنند. چه از طریق موبایل و چه از طریق کامپیوترهای شخصی و کنسولها. برای بعضی از بازیها شبکهسازی (Networking) نیازمند یک سرور قدرتمند است که پردازشها و محاسبات پیچیده و زیاد را هندل کند. خوشبختانه بیشتر موتورهای بازی سازی امروزی دارای جریانکاری، کامپوننتهای قابل تنظیم و APIهای داخلی هستند که این امکان را به توسعهدهنده میدهند تا برای بهینهسازی بازیهای آنلاین و چندنفره از آنها استفاده کنند.
فیزیک
سیستم فیزیک در یک موتور بازی سازی، قابلیت شبیهسازی مفاهیم فیزیکی را با به کارگیری کامپوننتهای (Component) فیزیکی فراهم میکند. با این سیستم دیگر توسعهدهنده مجبور نیست مفاهیم پایهای فیزیک، برخورد بین گیمآبجکتها و همچنین حرکات ناشی از برخوردها را خودش بنویسد. با استفاده از موتور بازیسازی فقط با نوشتن چند خط کد میتوان کاری کرد که گیمآبجکتها به واقعیترین شکل ممکن رفتار کنند.
رابط کاربری گرافیکی
بسیاری از بازیها رابط کاربری گرافیکی (Graphical User Interface: GUI) خود را دارند که متناسب با تم (Theme)، آرت استایل (Art Sryle) و روایت (Narration) بازی است. به همین دلیل است که بیشتر موتورهای بازیسازی ابزارهایی را برای طراحی رابط کاربری در اختیار توسعهدهندگان قرار میدهند؛ عناصری مثل دکمهها، منوهای کشویی، اسلایدرها و ترکیبی از عناصر تعاملی مختلف.
اسکریپتنویسی
یکی از مهمترین قسمتهای هر موتور بازی سازی اسکریپتنویسی (Scripting) در آن است. توسعهدهنده، منطق قسمتهای مختلف بازی را در فایلهایی تحت عنوان اسکریپت مینویسد. یک امکان که توسط بعضی از موتورهای بازیسازی فراهم شده با استفاده از اسکریپتهای پیشساخته (Pre-build Script) از اختیار ما قرار میگیرد. توسعهدهنده به راحتی و بدون درگیر شدن با کدنویسی اضافه میتواند دوربین، رفتار بین عناصر، سیستم انیمیشن بازی و موارد دیگر را با استفاده از آن کنترل کند.
معروفترین موتورهای بازی سازی
در این بخش از مقاله قصد داریم به بررسی تعدادی از موتورهای بازیسازی معروف بپردازیم.
1. Unreal Engine
یکی از پرطرفدارترین و پراستفادهترین موتورهای بازی سازی ساخته شرکت اپیک گیمز (Epic Game) یعنی آنریل انجین (Unreal Engine) است. اولین نسخه از این موتور در سال 1998 عرضه شد و اکنون بعد از گذشت 17 سال بازیهای بزرگی با این موتور ساخته شده است.
از معروف آثار ساخته شده با آنریل میتوان به سری Gears of War، Mass Effect، Bioshock و Batman: Arkham اشاره کرد. قدرت آنریل در توانایی آن برای پرداخت کافی یک بازی است تا آن بازی یک تجربه منحصر به فرد به بازیکن ارائه کند.
آخرین نسخه این موتور، آنریل انجین 4 است که به گفته خیلیها آسانترین ابزار برای حرفههای این صنعت است. بلو پرینت (Blueprint) سیستم اسکریپتینگ بصری آنریل است که به شما امکان تعریف منطق قسمتهای مختلف بازی را بدون کدنویسی میدهد. با این حال موتورهای دیگری نیز وجود دارد که برای افراد تازهکار مناسبتر است.
قدرت گرافیکی فوقالعاده آنریل
2. Unity
یکی از محبوبترین موتورهای بازی سازی برای تازهکارها یونیتی (Unity) است. یک موتور چند پلتفرمی که به کاربر اجازه میدهد به راحتی با محتواهای سهبعدی تعامل داشته باشد. به دلیل عملکرد بسیار خوب، قابلیت ساخت محتوای باکیفیت و قابلیتهایی که در بسیاری از انواع بازیها میتوان استفاده کرد، بسیاری از بازیسازان مستقل از یونیتی استفاده میکنند. معروفترین ساختههای بازیسازان مستقل با یونیتی میتوان Inside، Ori and the Blind Forest، Cuphead و Firewatch را نام برد. بازی ایرانی و تحسین شده فرزندان کوه مورتا (Children of Morta) نیز با این موتور ساخته شده است.
مزیت بعدی یونیتی رایگان بودن آن است. شما میتوانید این موتور را با تمام امکاناتی که برای ساخت بازی برای پلتفرمهای مختلف نیاز است دانلود کنید. نسخه دیگری نیز تحت نام Professional ارائه شده که یک سری امکانات اضافهتری نظیر گزارشدهنده کارایی (Performance) بازی، قابلیت شخصی سازی Splash Screen و … را شامل میشود.
اگر شما به یک میانبر برای تأمین داراییهای بازی خود نیاز دارید فروشگاه دارایی یونیتی (Asset Store) بهترین گزینه است. در این فروشگاه کاربران پکیجهای ساخته شده خود را با دیگران به صورت رایگان یا پولی به اشتراک میگذارند و شما میتوانید هر چیزی که برای پروژه خود نیاز دارید را در این فروشگاه بیابید.
ساخت کاتسین به راحتی در یونیتی انجام میشود
3. CryEngine
کرای اینجین (CryEngine) هم از دسته موتورهای رایگان برای استفاده است. بدون پرداخت پولی میتوان به نسخه کامل این موتور دسترسی پیدا کرد. این موتور توسط شرکت آلمانی کرایتک (Crytek) ساخته و قدرت گرافیکی آن اثبات شده است. سری بازیهای معروف فارکرای (FarCry) و کرایسیس (Crysis) این ادعا را تایید میکنند. این موتور برای ساخت بازی روی کامپیوترهای شخصی و کنسولهای بازی که توان گرافیکی بالایی دارند از بهترین گزینههاست. همچنین کرای انجین از عینک واقعیت مجازی Oculus Rift پشتیبانی میکند و برای ساخت بازیهای VR نیز گزینه مناسبی است.
به جز خود موتور شما به منابع آموزشی رایگان زیادی دسترسی خواهید داشت. ویدیوهای آموزشی، فرومها، مستندات و مقالات، همه اطلاعاتی را که برای شروع کار با این موتور نیاز دارید در اختیار شما قرار میدهند. به دلیل قدرت بالای پشت این موتور ممکن است یادگیری آن کمی سخت باشد. اما ویدیوهای آموزشی که در یوتیوب فراوان هستند میتوانند به شما کمک کنند.
همانند یونیتی، کرای انجین نیز یک فروشگاه برای اشتراکگذاری انواع پکیجها و داراییهای رایگان و پولی به نام Cryengine Marketplace دارد.
از موتوری که سری کرایسیس و فارکرای با آن ساخته شده کمتر از این قدرت انتظار نمیرود
4. Game Maker
برخلاف موتورهای دیگر محبوبیت گیممیکر (Game Maker) به این دلیل است که برای بازیسازی با آن نیازی به دانش برنامهنویسی نیست. کاربر به جای کدنویسی از سیستم ایونت و اکشن گیممیکر استفاده میکند که به مراتب از برنامهنویسی با زبانهای مختلف راحتتر و سریعتر است. به همین دلیل گیممیکر نیز گزینه مناسبی برای بازیسازان تازهکار است. ایراد این سیستم و همینطور دیگر موتورهایی که از سیستم مشابهی برای بازیسازی استفاده میکنند این است که توسعهدهنده برای پیاده کردن برخی از مکانیکهای موردنظر خود با محدودیت روبهرو میشود. به جز سیستم ایونت و اکشن، گیممیکر قابلیت اسکریپتنویسی نیز دارد و از زبان مخصوص خود یعنی GML (Game Maker Language) استفاده میکند که زبان نسبتا سادهای برای یادگیری است. افراد آشنا با اسکریپتنویسی میتوانند از آن برای بهتر کردن بازی خود استفاده کنند.
بازیهای Spelunky، Hotline Miami، Super Crate Box و بازی ایرانی مِموراندا همگی با گیممیکر ساخته شدهاند. با نگاهی به عناوین گفته شده متوجه میشویم که گیممیکر موتور بازیهای دوبعدی است.
نسخه رایگانی برای گیممیکر وجود دارد اما برای استفاده از امکانات بیشتر نیاز به خریداری یکی از نسخههای Professional یا Master است.
Game Maker موتور بازیهای دوبعدی. (Game Maker Studio 2 جدید نسخه گیممیکر)
5. Godot
موتور گودو (Godot Engine) در سالهای اخیر و به تدریج جای خود را در بین بازیسازان پیدا کرده است. این موتور که برای ساخت بازیهای دوبعدی و سهبعدی مناسب است، با فراهم کردن مجموعه بزرگی از ابزارهای رایج برای بازیسازی، “نیاز به اختراع مجدد چرخ” را از بین برده است. موتور گودو تحت لایسنس MIT، رایگان و متنباز است. بدون نیاز به خرید لایسنس یا حق اشتراک، هرچیزی که در گودو توسعهدهید، از جمله توسعه خود موتور، متعلق به خود شماست. در گودو همانند گیممیکر یک سیستم Visual Scripting نیز وجود دارد.
وجود یک کامیونیتی که به رفع باگها و ایرادات و توسعه ویژگیهای جدید میپردازد از دیگر مزایای این موتور است. این بدین معناست که جامعه گودو به خاصترین سوالات شما پاسخ میدهد. همچنین این جامعه به دیگر فرومها و گروهها نظیر فرومهای Reddit، گروههای فیسبوک، جامعه استیم و… متصل است.
توان گرافیکی Godot یکی از دلایل محبوبیت اخیر آن
موتورهایی که کمتر شناخته شدهاند
در ادامه موتورهایی که در بین بازیسازان کمتر شناخته شدهاند را بررسی میکنیم. هر کدام از این موتورها ویژگیهای خاص خود را دارند که حتی باعث میشوند در مواردی به سراغشان برویم.
1. Spring Engine
Spring Engine مخصوص استراتژیبازها ساخته شده است. این موتور مخصوص ساخت بازیهای استراتژی و به طور خاصتر استراتژی سهبعدی است. اگر از فنهای بازیهای استراتژی نظیر Age of Empires و Halo Wars هستید و دوست دارید بازی خود را نیز در این سبک بسازید، اسپرینگ انجین بهترین گزینه است. امکانات و ابزارهای فراهم شده در این موتور دقیقا همان چیزیهایی است که برای ساخت یک بازی استراتژی نیاز دارید. زبان برنامهنویسی این موتور Lua است که برای تازهکارها نیز مناسب است.
قدرت این موتور تنها با توان سیستم شما محدود میشود و شما برای ساخت بازی خود دچار مشکل نخواهید شد. برای ساخت اسپرینگ انجین از زبان C++، OpenGL و FreeType 2 استفاده شده است. این انجین کاملا رایگان و متنباز است.
Spring Engine مخصوص هواداران بازیهای RTS
2. Cocos Creator
یکی دیگر از گیمانجینهای رایگان و متنباز Cocos Creator است که تحت لیسانس MIT است. نسخه قدیمیتر این موتور به نام Cocos2d همانطور که از اسمش پیداست مخصوص ساخت بازیهای دوبعدی است. اما Cocos Creator قابلیت ساخت بازی به صورت دوبعدی و سهبعدی را داراست. با توانایی گرفتن خروجی برای پلتفرمهای مختلف. برای برنامهنویسی در Cocos میتوان هم از جاوااسکریپت استفاده کرد هم از تایپ اسکریپت. تایپ اسکریپت (Typescript) زبانی ست که توسط مایکروسافت توسعه داده شده و نسخه پیشرفته جاوااسکریپت است. ادیتور جدید Cocos تا حد خیلی زیادی شبیه به ادیتور یونیتی شده و سرعت اجرایی بالایی دارد بدین معنا که یک بازی را در این انجین نسبت به موتورهای دیگر بسیار سریعتر میتوانید به اتمام برسانید.
ویرایشگر جدید Cocos Creator تا حدی شبیه به ویرایشگر یونیتی است
3. Construct
Construct موتوری دوبعدی مبتنی بر HTML است. اگر شما با HTML 5 آشنا هستید و قصد ساخت بازی دوبعدی برای موبایل دارید انتخاب اول شما میتواند کانستراکت باشد. این موتور از آن دسته موتورهایی است که در آن برای بازیسازی نیازی به کدنویسی ندارید. بازی شما میتواند برای اندروید، iOS، ویندوز فون و مرورگرهای وب منتشر شود.
کانستراکت 3 جدید نسخه این موتور
4. jMonkeyEngine
موتور jMonkeyEngine با جاوا ساخته شده است و به دلیل متنباز بودن آن از بهترین گزینهها برای توسعهدهندگان اندروید است. با اینکه این موتور تمرکز خود را بر روی جاوا قرار داده است اما برای خروجیiOS نیز میتوانید روی آن حساب کنید. اخیرا نیز تیم سازنده از برخی برنامههای خود برای واقعیت مجازی رونمایی کردهاند.
5. AppGameKit
اپ گیم کیت (AppGameKit) یکی از همان موتورهای آسان برای یادگیری است. مناسب برای تازهکارها و بازیسازان مستقل. این موتور تمرکز خود را بر روی سرعت بخشیدن به روند کدنویسی، ساخت بازی و اشتراکگذاری آن روی پلتفرمهای مختلف گذاشته است. این روند سریع تکرار و اشتراکگذاری روی پلتفرمها با نگاهی ویژه به بازیهای موبایلی است اما پلتفرمهای دیگری نیز پشتیبانی میشوند. پلتفرمهایی نظیر لینوکس، HTML5، رزبریپای، مک، ویندوز و سیستمعاملهای تلفنهای هوشمند مثل اندروید و iOS. استفاده از اپ گیم کیت رایگان نیست.
6. Lumberyard
انجینی که توسط شرکت آمازون ساخته شده است. در توصیف این موتور در سایت آمده است “رایگان، قدرتمند، کاملا قابل شخصیسازی”. Lumberyard قابلیت یکپارچهسازی با شبکههای Twitch و AWS (شبکه خدمات اینترنتی آمازون) را دارد. AWS یک پلتفرم ابری امن است که توسط آمازون طراحی شده. یکپارچگی (Integration) این پلتفرم با لامبریارد به این معنی است که ساخت بازی آنلاین با آن راحت است اما باید هزینه استفاده از سرویس AWS را بپردازید. اگر قصد ساخت بازی چندنفره را دارید لامبریارد به همین دلیل گزینه مناسبی است. مجموعه ویدیوهای راهنمای شروع لامبریارد میتواند برای ساخت اولین بازی شما با این موتور مفید باشد.
در آینده بیشتر در مورد این موتور خواهیم شنید
7. RPG Maker
بهترین چیز درمورد موتور RPG Maker دقیقا همان دلیلی است که به آن خورده میگیرند، هرکسی میتواند با آن بازی بسازد. این موتور طوری طراحی شده است تا شما بتوانید یک بازی را از صفر تا صد با آن بسازید، بدون آن که چیزی از برنامهنویسی بدانید. همانطور که از اسم این موتور پیداست هدف آن ساخت بازیهای RPG دوبعدی است. RPG Maker با یک رابط کاربری آسان برای استفاده، به توسعهدهنده اجازه میدهد تمام جوانب بازی خود را همانطور که میخواهد بسازد. بدون کدنویسی محدود به استفاده از امکانات آماده موتور هستیم اما توسعهدهنده میتواند از زبان جاوااسکریپت برای هرچی بهتر کردن بازی خود استفاده کند.
از این موتور چندین نسخه وجود دارد که اکثرا نیاز به پرداخت وجه دارند اما یک نسخه رایگان آزمایشی برای سیستمعامل ویندوز تهیه شده است.
RPGبازها وقت آن است که RPG خود را بسازید
8. LibGDX
LibGDX یک فریمورک بازیسازی مبتنی بر جاوا است که از یک API یکپارچه برای تمام پلتفرمهای تحت پشتیبانی خود استفاده میکند. API مخفف عبارت Application Programming Interface است. داشتن یک تک API این موتور را گزینه مناسبی برای ساخت بازی بر روی چند پلتفرم کرده است.
این موتور قابلیت اجرا و دیباگ بازی مستقیما از خود دسکتاپ را به توسعهدهنده میدهد، به جای آنکه شما مجبور باشید برای هر بار تست تغییرات آن را بر روی اندروید یا iOS اجرا کنید. این امکان سرعت تست تغییرات را بالا میبرد.
برای شروع یادگیری، فرومهای LibGDX با تاپیکهای آموزشی و همچنین راهنمایی با دموها و مثالهایی به همراه سورسکد آنها گزینههای مناسبی هستند.
9. Urho3D
Urho3D یک موتور رایگان و کم حجم چند پلتفرمی است با قابلیت ساخت بازیهای دوبعدی و سهبعدی که با C++ ساخته شده و تحت لایسنس MIT قرار دارد. بهترین جا برای شروع کار با این موتور ویکی آن یعنی Urho3D Wiki است. در این ویکی آموزشهای قدم به قدم برای ساخت اولین پروژه با Urho وجود دارد. جامعه استفادهکننده این موتور نیز قابل قبول است و در فرومهایی با تاپیکهای مختلف فعالیت میکنند.
شاید Urho زیاد برای تازهکاران مناسب نباشد زیرا برای کار با آن و بهبود و گسترش زیرسیستمهایی نظیر فیزیک، شبکهسازی و انیمیشن، به دانش زبان C++ نیاز است.
در نهایت
موتورهای بازی سازی زیادی وجود دارند که میتوانند نیازهای شما را برای ساخت بازی تأمین کنند. در نهایت شما هستید که با توجه به معیارهایی مثل سبک بازی، 2بعدی یا 3بعدی بودن آن، واقعیت مجازی (Virtual Reality) یا واقعیت افزوده (Augmented Reality)، مخصوص پلتفرم مشخص یا چند پلتفرم بود آن، باید یکی از موتورهای موجود را انتخاب کنید.
خیلی ممنون از سایت عالیتون بنظر من هم موتور Unreal و Cry Engine و unity از بهترین ها هستن. البته یونیتی فقط برای موبایل
از اینکه از مطالب ما استفاده میکنید خیلی خوشحالیم
بله موتورهای خیلی خوبی هستند
البته با موتور یونیتی هم بازی های بزرگ و باکیفیتی برای پلتفرم های مختلف از جمله کنسول ها و PC ساخته شده.
سلام
من به زبان c++ مسلط هستم اما هیچ انجینی پیدا نکردم که از این زبان حمایت کنه و اموزش فارسی هم داشته باشه
می شه لطفا یه اموزش خوب در این باره معرفی کنید
سلام دوست عزیز
انجین معروف آنریل (Unreal) از c++ برای استفاده میکنه که آموزشهای زیادی براش هست. همینطور از ویژوال اسکریپتینگ هم پشتیبانی میکنه.
سلام من 25 سال دارم. ایا برای شروع بازی سازی از 0 دیر نشده؟ منظورم اینکه چقدره طول میکشه برنامه نویسیش رو یاد بگیرم؟ یا کلا برم سر طراحی گرافیک بازی؟ بعد من یه چیزی می خوام که آینده نگر باشه مثلا برای 10 سال دیگه هم خوب باشه. بنظر خودم cryengine خوبه چون مناسب بازی های آینده است که گرافیک بالایی دارن. آیا میشه داخل 3 سال به سطح خوبی رسید؟ بعد اینکه من به زبان فرانسه مسلط هستم و فرانسه و شرکت ubisoft از بهترین ها هستن. منظورم اینکه به منابع و کتاب های آموزشی بازیسازی فرانسوی دسترسی دارم که فوق العاده اند. ( شاید یه روز کتاب های بازی سازی فرانسوی رو به فارسی ترجمه کنم!).
سلام به شما بازی دوست عزیز
برای یادگیری بازی سازی بی تعارف هیچ وقت دیر نیست. تازه سن 25 سال هم بسیار و خوب عالیه. اگر شما هر کدوم از مهارت های اصلی بازی سازی اعم از برنامه نویسی، طراحی بازی یا طراحی هنری (که هرکدوم خودش به زیردسته هایی تقسیم میشه و بهتره شما از یکی شروع کنید) رو از همین الان شروع کنید به شما قول میدم با تمرین مستمر و روزانه تا سال آینده توی همون رشته به سطح مهارت بسیار خوبی خواهید رسید. این تصمیم شماست که به کدوم رشته علاقهمند هستین.
در مورد آینده دار بودن هم باید بگم که کرای انجین در حال حاضر همانند آنریل و یونیتی از قدرت گرافیکی بالایی برخوداره و در حال پیشرفت هست اما در مجموع با توجه به روند توسعه موتورهای بازی سازی آینده از آن یونیتی و آنریل هست.
اینکه به زبان فرانسوی مسلط هستید یک ویژگی بسیار خوب حساب میشه و همونطور که خودتون گفتین میتونید به راحتی از منابع خارجی استفاده کنید. در کل با تسلط به زبان خارجی مخصوصا انگلیسی شما سریع تر و راحت تر بازی ساز میشین.
در نهایت باعث خوشحالی خواهد بود اگر در آینده بتونیم باهم همکاری داشته باشیم و کتاب های ترجمه شده شما رو از طریق سایت بازیسازباش با علاقهمندان به بازی سازی به اشتراک بذاریم 🙂
تلفظ صحیح Godot گودو می باشد
سلام
ممنون از تذکرتون… به صورت دقیق تر Godoh تلفظ میشه
واقعا سایت خوبی دارید ممنون.
فقط اگه میشه اموزش از موتور های دیگه بجز یونیتی هم بزارید
سلام سامان عزیز
مطلب از انجین ها و مطالب دیگه که حتما می گذاریم تا باهاشون آشنا بشیم اما برای آموزش تمرکز ما فعلا در یونیتی هست و هنوز خیلی مطلب برای گفتن باقی مونده. در این رابطه که چرا تمرکز ما برای آموزش در یونیتی هست پیشنهاد می کنم که سری به مقاله “چرا برای بازی سازی یونیتی را انتخاب می کنیم؟” بزنید.
ممنون از شما بابت نظر دادن و همراهی کردن.
موفق باشید.