[RB@Blog_Title]

  • نویسنده : pchelp رضانژاد
  • بازدید : [۲۸۱] مشاهده
  • دسته بندی : دسته: PC , Unity ,

موتور بازی سازی (Game Engine) چیست؟


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

در جهان امروز، بازی‌های کامپیوتری بخش عمده‌ای از زندگی کودکان و نوجوانان را درگیر خود کرده است؛ شرکت‌های بزرگ بازی سازی در سراسر جهان تمامی قدرت و نوآوری‌ها را در خدمت گرفته‌اند تا بازی‌هایی را عرضه دارند که بتواند در میان مخاطبین حرفی برای گفتن داشته باشند و نظر منتقدان را نیز جلب کنند.

حالا ممکن است برای شما نیز این سوال پیش آمده باشد که عناوین بزرگ بازی‌های ویدیویی چگونه ساخته می‌شوند و به این شکل در اختیار ما قرار می‌گیرند؟! بدین منظور باید با ماهیت موتور بازی آشنا شویم. پس در ادامه با فول کده همراه باشید.

موتور بازی چیست؟

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

مهم‌‌ترین وظایف یک موتور بازی چیست؟

  • Rendering یا انجام عملیات مربوط به رندر کردن تصویر در بازی
  • Collision یا تعیین برخوردهای فیزیکی در محیط بازی
  • تخصیص صدای مناسب به کاراکترها و محیط‌های گوناگون
  • ایجاد انیمیشن‌های مورد نیاز در بازی
  • تعیین وظایف و کارکردهای هوش مصنوعی
  • مدیریت حافظه سیستم هنگام اجرای بازی
  • تعیین تنظیمات شبکه در بازی‌های چند نفره

همان‌گونه که مشاهده می‌کنید، وظایف مذکور باعث می‌شوند تا عملاً نحوه‌ی تعامل بازیکن با محیط بازی، توسط موتور بازی تعریف شود.

قبل از ورود موتورهای بازی به این عرصه، ساخت بازی‌ها، توسط کد نویسی خالص انجام می‌شد که این کار، باعث ایجاد محدودیت‌های فراوانی در این زمینه شده بود.

مهم‌ترین این محدودیت‌ها

  • نیاز به زمان زیاد برای تکمیل یک پروژه
  • امکان بالای بروز خطا و مشکلات برطرف کردن خطاها
  • نیاز به برنامه مجزا و جدید برای هر عنوان جدید بازی
  • شباهت فراوان بازی‌هایی که از یک منبع برنامه استفاده می‌کردند.

به عنوان مثال، بازی‌های کنسول محبوب Atari 2600 را در نظر بگیرید که عملاً تمامی بازی‌های نسل نخست این کنسول، از یک منبع منتشر می‌شدند و همین موضوع باعث شباهت انکار ناپذیر آن‌ها با یکدیگر می‌شد. تمامی بازی‌های نسل نخست این کنسول، به نوعی در برگیرنده دو حریف هستند که به سمت یکدیگر شلیک می‌کنند و در این میان تنها اختلاف بین این بازی‌ها در نحوه چیدمان گرافیک پیکسلی آن‌ها بود. بعدها در بازی‌های متأ‌خر این کنسول نیز، شباهت‌ها از میان نرفت و مجموعه بازی‌های حرکت و شلیکی به این کنسول اضافه شدند.

تاریخچه موتورهای بازی

با پیشرفت صنعت بازی‌های کامپیوتری و با ظهور بازی‌های سه‌بعدی نسل نخست، به خصوص بازی‌های سبک شلیکی اول شخص(FPS: First Person Shooter)، شرکت‌های بزرگ به لزوم طراحی موتور بازی پی بردند. در این میان شرکت id Software را می‌توان نخستین شرکت بازی سازی دانست که از موتورهای بازی برای طراحی دو بازی مهم و پرفروش خود استفاده کرد. بازی‌های پرطرفدار Doom و Quake. طراحان id Software به جای این که ساخت این دو بازی را از صفر شروع کنند، نرم‌افزاری تهیه کردند و بر‌اساس نیازهای هر بازی، تغییرات جزئی و کلی در آن ایجاد کردند. طراحی گرافیکی، طراحی کاراکترها، سلاح‌ها و مراحل بازی، همگی به شکلی مجزا روی موتور اولیه پیاده شدند و دو محصول متفاوت به بازار عرضه شد. دو محصولی که در عین تفاوت‌های بسیار، از نظر یک بازیکن حرفه‌ای، شباهت‌های انکار ناپذیری با یکدیگر دارند.

بعدها بازی‌هایی مانند Quake III Arena و Unreal نیز به همین شیوه تولید شدند. این کار باعث صرفه‌جویی بسیار زیاد در هزینه‌ها و مهم‌تر از آن در زمان ساخت بازی و نیروی انسانی مورد نیاز برای تهیه هر عنوان می‌شد.موتورهای بازی امروزی، جزء پیچیده‌ترین نرم‌افزارهای نوشته شده هستند. این موتورها، با امکاناتی مجزا برای رندر‌کردن، اسکریپت‌نویسی، طراحی‌هنری و طراحی مراحل بازی، دست سازندگان بازی‌ها را در اعمال تغییرات دلخواه و استفاده از عنصر خلاقیت، بسیار باز گذاشته‌اند. عملی که به تولید ده‌ها عنوان بازی بزرگ در هر سال منجر می‌شود.

انواع موتورهای بازی

1- موتورهای سطح پایین (Roll – your- own Game Engine)
به‌رغم هزینه بالا، هنوز هم بسیاری از شرکت‌ها و طراحان مستقل بازی‌های کامپیوتری موتورهایی را ترجیح می‌دهند که عملاً بیشتر کارهای برنامه‌نویسی آن را خودشان انجام می‌دهند. موتورهای سطح پایین، با بهره‌گیری از گروه نرم افزارهایی مانند XNA، DirectX، Open GL و SDLهای ویندوز و لینوکس SDL (سرنام Simple Direct media Layer)، این امکان را در اختیار کاربران خود قرار می‌دهند که بتوانند به دلخواه خود نسبت به ویرایش و اعمال تغییرات دلخواه حتی در سطوح کلان اقدام کنند.

2- موتورهای سطح میانی (Mostly – Ready Game Engines)
بیشتر موتورهای بازی معروف به این گروه تعلق دارند. این گروه مجموعه امکاناتی را در اختیار کاربر قرار می‌دهند تا نسبت به ساخت بازی مورد نظر خود اقدام کنند. اعمالی مانند رندر کردن، تعریف خصوصیات فیزیکی محیط بازی ( برخورد‌ها و… ) و امثال آن‌ها کاملاً در این گروه از پیش تعریف شده هستند و نیاز به برنامه نویسی مجزا برای آن‌ها نیست. موتورهای معروفی مانند Unreal و Gamebryo از این گروه هستند. موتورهایی که به مقدار کمی برنامه‌نویسی نیاز دارند و برای ساخت یک بازی کامل، بر‌خلاف گروه نخست (سطح پایین)، به برنامه‌نویسی و کدنویسی فراوان نیاز ندارند و مراحل کار به نسبت ساده‌تر و کمتری دارند. به همین دلیل، به آن‌ها گروه موتورهای بازی «تقریباً آماده» می‌گویند.بسیاری از این موتورها نتیجه کار ده‌ها نفر برای صدها ساعت است و محصول نهایی تولید شده توسط آن‌ها به مراتب از گروه نخست با کیفیت‌تر است. هر چند که شاید این موتورها توانایی انجام تمام آن چیزهایی را که طراح در ذهن دارد، نداشته باشند، اما صرفه‌جویی در زمان و هزینه، در عین حفظ کیفیت محصول نهایی، این گروه را به پرطرفدارترین گروه موتورهای بازی در بین طراحان و شرکت‌های بازی‌سازی تبدیل کرده است.

3 – موتورهای سطح بالا (Point & Click Game Engines)
این گروه از موتورهای بازی که روز به روز بیشتر متداول می‌شوند، مجموعه کاملی از ابزارها و امکانات مورد نیاز را برای خلق یک بازی در اختیار طراحان و سازندگان قرار می‌دهند و طراح فقط با انتخاب ابزار مناسب و جای‌گذاری آن در محل دلخواه، می‌تواند نسبت به طراحی بازی اقدام کند. از جمله این موتورها می‌توان به نرم‌افزارهای Game Maker، Torque Game Builder و Unity3d اشاره کرد. این نرم‌افزارها حداکثر تعامل ممکن را با کاربر دارند و برای کار با آن‌ها به حداقل دانش کد نویسی نیاز است. البته این به آن معنا نیست که دانش برنامه نویسی برای کار با آن‌ها مفید نیست، اما وجود آن چندان ضروری هم نیست. مشکل اصلی موتورهای این گروه، محدودیت بسیار زیاد آن‌ها است. بیشتر این موتورها فقط در ساخت یک یا دو سبک از بازی‌ها کارایی دارند ( عمدتاً بازی‌های اکشن و راهبردی). البته این موضوع را نیز در نظر داشته باشید که همچنان می‌توان با استفاده از همین ابزارهای از پیش تعریف شده و صد البته با مقدار فراوانی خلاقیت، نسبت به ساخت و طراحی بازی‌های جدید و پر از نوآوری اقدام کرد. طی چند سال گذشته، انجام طراحی و ساخت یک موتور بازی توسط شرکت‌های بزرگ نرم‌افزاری، رشد چشم‌گیری داشته است. بسیاری از شرکت‌های بزرگ، صرفاً و به‌صورت کاملاً تخصصی روی این موضوع تمرکز کرده‌اند و در واقع محصول تولیدی این شرکت‌ها، موتورهایی است که به شرکت‌های سازنده بازی فروخته می‌شوند. قیمت مناسب و صرفه‌جویی در زمان طراحی و ارائه محصول، باعث شده بیشتر شرکت‌های صاحب نام در طراحی بازی، این میان افزارها را خریداری کرده و با کمک آن‌ها محصول نهایی خود را تولید کنند.


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

بخش‌های مختلف یک موتور بازی

  • موتور گرافیکی:
    اصلی ترین و مهمترین بخش یک ابزار توسعه بازی ، موتور گرافیکی است  زیرا بازیباز آن چه را به چشم خود می بیند بازی می کند. از این بخش گاهی با نام موتور رندر نیز یاد می شود و شامل ویژگی هایی مربوط به رندر بهینه صحنه است . معمولا موتورهای گرافیکی بر پایه دو کتابخانه گرافیکی directx یا openGL  با سخت افزار گرافیکی ارتباط برقرار می کنند. یکی از ویژگی ای مهم یک موتور گرافیکی رندر بهینه است . اشیای ۳ بعدی در جهان ۳ بعدی در حقیقت نقاطی هستند که به آن ها راس ( vertex ) می گویند . مدل سه بعدی که شما در صحنه می بینید از اتصال این راس ها به هم ایجاد می شود . یکی از مهمترین چالش ها در نمایش مدل این است که رندرگر چگونه می تواند این همه راس و مدل را در حافظه مدیریت کند؟  یکی از راهکارها برای حل این مشکل استفاده از تکنیک  culling است. این تکنیک در حقیقت قسمت هایی از جهان سه بعدی را که در دید جاری (زاویه دوربین) قرار ندارد، نمایش نمی دهد. روش کار به این صورت است که رندرگر جهان ۳ بعدی را به چند بخش تقسیم می کند و با توجه به موقیت دوربین، بخش هایی را که دیده نمی شوند رندر نمی کند . موتور های گرافیکی ویژگی های بسیاری دارند که بحث در مورد تمامی ویژگی ها خود مقاله ای جدا را می طلبد . از جمله موتور ها گرافیکی می توان به ogre  اشاره کرد. این موتور رایگان و منبع باز است.
  • موتور صدا:
    صداها در بازی نقش مهمی دارند و برخی بازی ها بر پایه صدا طراحی شده اند مانند  Guitar hero. موتورهای صدا شامل ویژگی هایی همچون صدای سه بعدی ، امکان مدیریت صدا ، پخش همزمان چند صدا و … را دارند. از این دسته موتور ها می توان openAl را نام برد .
  • موتور فیزیک:
    امروزه کمتر بازی را می توان یافت که از فیزیک  در آن استفاده نشده باشد . در بازی های نسل جدید فیزیک بخشی جدانشدنی از بازی را در بردارد. با وجود فیزیک ، بازی ها بسیار واقع گرایانه  و طبیعی تر به نظر می آیند. با استفاده از این موتورها  دیگر نیازی نیست طراح برای شبیه سازی فیزیکی خود را درگیر روابط و معادلات پیچیده فیزیک نماید زیرا تمامی این ویژگی ها در موتور تعبیه شده است. یکی از مشهور ترین کتابخانه های فیزیک و رایگان  PhysX  است .
  • موتور هوش مصنوعی:
    هوش مصنوعی هم یکی از چالش های بزرگ توسعه دهندگان گیم به ویژه برنامه نویسان مسئله هوش است و هم یکی از عرصه های رقابت بین بازی های ویدیویی مختلف،  می باشد . در واقع بازی های هوشمند تر بهتر می توانند با مخاطب ارتباط برقرار و او را جذب خود کنند . موتور های هوش مصنوعی بسیاری از الگوریتم های هوشمند مانند مسیر یاب ، تعقیب و … را به طور آماده در خود دارند و باعث می شوند کار برنامه نویسان بسیار ساده تر شود .

موتورهای بازی شامل قسمتهای دیگری مانند شبکه، ابزارهای تست، کنترل کد و … هستند.

ادامه مطلب

نظرات ارسال شده

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی