صنعت ساخت بازيهاي کامپيوتري را شايد بتوان يکي از مهجورترين رشتههاي مرتبط با فناوري اطلاعات در ايران دانست. صنعتي که بهتازگي در حال برداشتن گامهاي نه چندان مطمئن نخستين است و به طور مسلم راهي بسيار طولاني و پرفراز و نشيب پيشرو دارد. در ميان شاخههاي مرتبط با ساختبازي، آشنايي با موتورهاي بازي (Game Engines)، جزء ناشناختهترين يا با کمي اغماض، کم شناخته شدهترين زير مجموعههاي اين صنعت در کشورمان است. در ميان علل مختلف اين موضوع، به طور مسلم کمبود منابع به زبان فارسي، يکي از مهمترين آنها است. در اين مقاله سعي شده تا علاقهمندان به ساخت بازيهاي کامپيوتري با مفاهيم، تعريفها و اصول اوليه انتخاب و شناخت موتورهاي بازي آشنا شوند تا شايد اندكي از خلاء موجود در اين زمينه كاسته شود.
موتور بازي چيست؟
موتور بازي را به طورمختصر ميتوان قلب هر بازي کامپيوتري دانست. وقتي مشغول بازيکردن يک بازي پرزد و خورد اکشن مانند Medal Of Honor هستيد و به سمت دشمني شليک ميکنيد که در حال شليک کردن به شما است، اين موتور بازي است که مشخص ميکند تير شما به حريف اصابت کند يا برعکس. وقتي در يک بازي ماجرايي مانند Monkey Island، مشغول حل کردن يک معماي فکري هستيد، اين موتور بازي است که تشخيص ميدهد چيدمان انتخابي شما به باز شدن قفل روي در منجر ميشود يا خير. در واقع شايد موتور بازي را به زبان ساده بتوان رابط بين بازيکن و کنش و واکنشهاي بازي در نظر گرفت. يک ميانافزار (Middleware) که توسط برنامهنويسان حرفهاي تهيه شده و ابزار اوليه مورد نياز را براي طراحي و ساخت بازي در اختيار طراحان قرار ميدهد. موتورهاي بازي قابليتها و خصوصيات گوناگوني دارند که در ادامه به آن اشاره ميكنيم.
براي شروع بهتر است بدانيم مهمترين وظايف يک موتور بازي چيست:
1 – انجام عمليات مربوط به رندر کردن تصوير در بازي يا Rendering
2 – تعيين برخوردهاي فيزيکي در محيط بازي يا Collision
3 – تخصيص صداي مناسب به کاراکترها و محيطهاي گوناگون
4 – ايجاد انيميشنهاي مورد نياز در بازي
5 – تعيين وظايف و کارکردهاي هوش مصنوعي
6 – مديريت حافظه سيستم هنگام اجراي بازي
7 – تعيين تنظيمات شبکه در بازيهاي چند نفره
همانگونه که مشاهده ميکنيد، وظايف مذکور باعث ميشوند، عملاً نحوه تعامل بازيکن با محيط بازي، توسط موتور بازي تعريف شود.
قبل از ورود موتورهاي بازي به اين عرصه، ساخت بازيها، توسط کد نويسي انجام ميشد که اين کار، باعث ايجاد محدوديتهاي فراواني در اين زمينه شده بود. از جمله مهمترين اين محدوديتها ميتوان به موارد زير اشاره کرد:
1 – نياز به زمان زياد براي تکميل يک پروژه
2 – امکان بالاي بروز خطا و مشکلات برطرف كردن خطاها
3 – نياز به برنامه مجزا و جديد براي هر عنوان جديد بازي
4 – شباهت فراوان بازيهايي که از يک منبع برنامه استفاده ميکردند
به عنوان مثال، بازيهاي کنسول محبوب 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 اشاره کرد. اين نرمافزارها حداکثر تعامل ممکن را با کاربر دارند و براي کار با آنها به حداقل دانش کد نويسي نياز است. البته اين به آن معنا نيست که دانش برنامه نويسي براي کار با آنها مفيد نيست، اما وجود آن چندان ضروري هم نيست. مشکل اصلي موتورهاي اين گروه، محدوديت بسيار زياد آنها است. بيشتر اين موتورها فقط در ساخت يک يا دو سبک از بازيها کارايي دارند ( عمدتاً بازيهاي اکشن و راهبردي). البته اين موضوع را نيز در نظر داشته باشيد که همچنان ميتوان با استفاده از همين ابزارهاي از پيش تعريف شده و صد البته با مقدار فراواني خلاقيت، نسبت به ساخت و طراحي بازيهاي جديد و پر از نوآوري اقدام کرد. طي چند سال گذشته، انجام طراحي و ساخت يک موتور بازي توسط شرکتهاي بزرگ نرمافزاري، رشد چشمگيري داشته است. بسياري از شرکتهاي بزرگ، صرفاً و بهصورت کاملاً تخصصي روي اين موضوع تمرکز کردهاند و در واقع محصول توليدي اين شرکتها، موتورهايي است که به شرکتهاي سازنده بازي فروخته ميشوند. قيمت مناسب و صرفهجويي در زمان طراحي و ارائه محصول، باعث شده بيشتر شرکتهاي صاحب نام در طراحي بازي، اين ميان افزارها را خريداري كرده و با کمک آنها محصول نهايي خود را توليد کنند.
![موتورهاي بازي، از صفر تا صد (قسمت اول)](/userfiles/Article/1390/09/01/56981.JPG)
شكل 1- نمونه اي از موتورهاي بازي سطح مياني
چند نمونه از موتورهاي بازي
در ادامه با توجه به اين شناخت نسبي که از موتورهاي بازي پيدا کرديم، بد نيست نگاهي داشته باشيم به برخي از مهمترين موتورها و بازيهاي معروفي که به کمک آنها ساخته شده است. در جدول 1 برخي از عناوين اين بازيها را مشاهده ميكنيد. در اين جدول، با مقايسه بازيهايي که موتور آنها مشترک است ميتوانيد به شباهتها و خصوصيات يکسان اين بازيها پي ببريد. عناويني که بهرغم تفاوتهاي بصري و گرافيکي فراوان، همچنان در لايههاي زيرين طراحي خود، شباهتهاي انکارناپذيري به يکديگر دارند. به عنوان مثال، مشاهده ميکنيد که بازيهاي Oblivion و FallOut ( هر دو در سبک نقش آفريني RPG )، با بهرهگيري از موتوري يکسان ساختهشدهاند. کساني که اين دو بازي را امتحانکرده باشند، به خوبي متوجه شباهتهاي نوع بازي (Game Play) آنها ميشوند. در هر دو بازي عناصر مهم نقش آفريني، مرحله به مرحله باعث تکميل تواناييهاي کاراکتر اصلي ميشوند. در هر دو بازي انتخابهاي فراواني پيش روي بازيکن قرار ميگيرد که نوع شکل گيري کاراکتر و تعامل با محيط بازي، وابستگي شديدي به اين انتخابها دارد. شباهت امکان خريد و فروش تجهيزات، ساخت تسليحات جديد با ترکيب عناصر موجود، امکان استفاده از روشهاي پرزدو خورد (Action) يا مخفيانه (Stealth) براي انجام مأموريتها و دهها شباهت ديگر، همگي از يک موتور بازي يکسان سرچشمهميگيرند. هرچند که شايد از ديد يک کاربر مبتدي، اين دو بازي جز شباهت در سبک، هيچ ربط ديگري به هم نداشته باشند. به هر حال دنياي شواليهاي و اهريمنهاي Oblivion کجا و دنياي پساآخرالزماني FallOut کجا؟! و همين موضوع دقيقاً بيانگر خلاقيت تيم سازنده است که با استفاده از ابزاري مشترک و با اعمال تغييرات دلخواه، دو بازي کاملاً متفاوت توليد کردهاند که هر دو جزء عناوين بسيار محبوب و پرفروش محسوب ميشوند.
بررسي سير تکاملي يک موتور بازي نمونه (Unreal Game Engine)
در بخش انتهايي اين نوشته، بد نيست به سير تکاملي يک موتور بازي بسيار محبوب و پرطرفدار بين سازندگان بازيها نگاهي داشته باشيم. اين بررسي ميتواند منجر به اين شود که درک کنيد چه عواملي باعث ميشوند يک شرکت نسبت به تغيير يک موتور بازي اقدام کند. کاري که بسيار سخت و زمانبر و پرهزينه، اما از طرفي اجتناب ناپذير است.
![موتورهاي بازي، از صفر تا صد (قسمت اول)](/userfiles/Article/1390/09/01/56982.JPG)
موتور بازي Unreal توسط شرکت Epic Games ساخته شد. اين موتور براي نخستينبار در سال 1985 براي ساخت بازي Unreal مورد استفاده قرار گرفت. يک بازي FPS که در زمان خود جزء بازيهاي بسيار پرطرفدار بود. از آن پس بازيهايي مانند Unreal Tournament، Deus EX، Turok، Rainbow Six، Gears of War، BioShock، Red Steel و Borderlands بر پايه نسخههاي گوناگون اين موتور توليد شدهاند. هسته اصلي اين موتور با استفاده از برنامه ++C نوشته شده و توسط پلتفرمهاي MS Windows، Linux، iOS، Mac OS و Mac OSX قابل استفاده است. از طرفي بازيهاي ساخته شده توسط اين موتور، توسط کنسولهاي PC، DreamCast، Xbox، Xbox 360، PS2 و PS3 قابل اجرا هستند.
منبع:ماهنامه شبکه ارسال توسط کاربر محترم سايت : alirezamazrooei