اگر از بازدیدکنندگان ثابت سایت گیمفا باشید، حتما تا حالا با بازی ایرانی جاده های نبرد آشنا شده اید، یک بازی متفاوت در سبک تاور دیفنس که قرار است بزودی برای PC منتشر شود. اگر پیش نمایش ها و تصاویر بازی را دیده باشید شاید از خودتان سوال کرده باشید که موتور (انجین) ساخت این بازی چیست؟ آیا این بازی با موتورهای آماده ی خارجی ساخته شده یا از موتوری داخلی بهر میبرد؟ با پاسخ دادن به این سوال به معرفی تخصصی موتور SeganX ، موتوری کاملا داخلی که جاده های نبرد با آن ساخته شده است، میپردازیم. موتور SeganX موتور بازی سازی ساخته داخل کشور و حاصل تلاش تیم سازنده ی جاده های نبرد است. SeganX را آنطور که سازندگان آن میگویند، با حداقل امکانات ساخته اند و جالب اینکه هیچ گونه کمکی نیز از موتورهای آماده ی خارجی نگرفته اند. چرا که از نظر آن ها استفاده از ابزارهای آماده برای ساخت بازی های کوچک مناسب است و استفاده از ابزار خارجی را برای تولید بازی های بزرگ تر، مواجه شدن با کاری بی کیفیت و عدم دستیابی به یک تکنولوژی بومی می دانند و باید بهشان آفرین گفت زیرا با این محدودیت هایشان توانستند قدمهای خوبی در این زمینه بردارند. در معرفی موتور بازی ممکن است به اصطلاحات تخصصی بر بخورید که ما تا حد امکان برای برگداندنشان به زبان فارسی تلاش کرده ایم اما برخی کلمات ممکن است ناملموس باشد پس پیشاپیش عذرخواهی میکنیم. برای معرفی موتور میخواهیم از مفاهیم پایه ی یک موتور بازیسازی شروع کنیم، ها مسلما از اولین امکاناتی است که یک بازیساز نیاز دارد. ابزارهای اولیه برای مدیریت داده ها مخصوص کار با این موتور نوشته شده است. ابزارهای این بخش ( array , list , queue , stack , map , string ) دوباره و به صورت کامل بازنویسی شده است. در راستای همین مدیریت داده چهار سیستم مدیریت حافظه نیز برای موتور در نظر گرفته شده است ( standard , fixed size , free list memory pool , hybrid memory pool ) همچنین برای پایگاه داده ی Map این موتور از AVLTree استفاده شده است. در کنار این ابزارها، ابزارهای کمکی دیگری مثل کتابخانه ی ریاضی و همچنین کتابخانه ی کار با متون برای نمایش متون و حروف فارسی در SeganX استفاده شده است. ابزاری هستند که طوری طراحی میشوند تا در بسیاری از بخش های موتور سازنده استفاده شوند. این ابزار در موتورهای اساسی و بزرگ شرکتهای خارجی طیف وسیعی را شامل میشود. در موتور SeganX این ابزارها شامل توابع رایجی برای تولید اعداد تصادفی، تولید اعدادیکه با استفاده از الگوریتم CRC ، کتابخانه ریاضی شامل ماتریسها، بردارها، شناسایی برخوردهای اشیا پایه همچون کره و . میباشد. پس از طراحی ابزارها، برای مدیریت سیستم موتور چیزی شبیه یک رابط کاربری هم باید طراحی شود که تعامل سیستم عامل با موتور صورت بگیرد. برای این کار تیم سازنده، قبل از همه چیز با در نظر گرفتن ماشین مقصد (سیستم عامل مقصد) ابزارهای شناسایی سیستم هدف طراحی میکنند. سپس را که کارهای ساده اما مفیدی مانند مدیریت فایل ها، فایهایی که به صورت اشتراکی در چند پروسه باز هستند، پوشه ها، مسیر پوشه های خاص، ایجاد پنجره ی بازی یا ادیتور، میزان مصرف باتری روی لپتاپها، جلوگیری از خاموش شدن مانیتور، جلوگیری از اجرای اسکرین سیور یا خواب شدن سیستم را انجام میدهد. ادامه نیز ابزارهای لازم برای مدیریت سرنخ ها ( Threads ) طراحی میشود. این فرایند با الحاق سیستم فشرده سازی zLib برای فشرده سازی فایلها و دیتاهای موتور کامل میشود. در بخش طراحی موتور SeganX ، ابزارهای مربوط به API های گرافیکی شامل کلاسهای wrapper رسم کننده، جیومتریها، بافتها، سایه زن ها و . طراحی میشوند که در حال حاضر API DirectX را شامل می شوند و می توانند برای API های دیگر نظیر OpenGL استفاده شوند. نکته ی مهم سیستم گرافیک، هماهنگ کردن ابزارهای گرافیک با سیستم مدیریت سرنخ ها و مدیریت فایلها برای ذخیره و بازیابی اطلاعات در سرنخ های دیگر است. ابزاری که در این بخش به این هماهنگی رسیده اند شامل ابزار اصلی رسم، کلاس جیومتری با توانایی مدیریت سه مرحله جزییات ( LOD ) و ذخیره و بازیابی اطلاعات به صورت باینری در سرنخ های دیگر و. است. از دیگر بخش های مربوط به سیستم گرفیک، کلاسهای مربوط به سایه زن ها برای مدیریت سایه زن ها با سه مرحله کیفیت و طراحی سیستم اولیه ی انیمیشن ها شامل کنترل کننده های انیمیشن ها و مدیریت محتوای آنها است. البته به گفته تیم سازنده این طراحی ها قدیمی است و باید کاملا تغییر کنند و بروز شوند. در ادامه ی طراحی های اولیه موتور SeganX ، آن کار شده است. سیستم ورودی ابزارهای مورد نیاز برای کنترل و شناسایی ورودی ها به سیستم مثل کیبورد، موس و دسته را شامل میشود. یک مدیریت یکپارچه ی مرکزی مدیریت ورودیهای سیستم را برعهده دارد که با توجه به طراحی ابزار تیم سازنده، به راحتی میتوان ورودیها را به سیستم معرفی کرد. مثلا میتوانید براحتی دسته ی بازی (گیم پد) را تعریف و به سیستم معرفی کنید. در حال حاضر، صفحه کلید، موس و موس ادیتور (جهت استفاده در ادیتور) ابزارهای آماده ای هستند که در سیستم ورودی موتور میتوان از آنها استفاده کرد. رابط کاربری GUI نیز یکی از ملزومات اصلی هر موتور بازی سازی است. بالاخره رابط کاربری همیشه پل اتصالی بین کاربر و محیط کاربری هر رسانه ای ست. موتور SeganX مجهز به یک سیستم یکپارچه و چندزبانه ی رابطه کاربری است که در آن هر جز میتواند زیر مجموعه ی جز دیگری باشد. از قابلیتهای دیگر این بخش میتوان اشاره کرد که این سیستم را میتوان به صورت سه بعدی نیز استفاده کرد و این سیستم است که ابزارهای اولیه ی رابطه ی کاربری را ارایه میدهد. این ابزارهای اولیه شامل، فرم اولیه ( Base Form ) که دارای چهار گوشه گرد و یک دکمه بستن می باشد، پنل ( panel ) ، دکمه ( button ) ، جعبه چک ( check box ) ، نوار لغزان ( track bar ) ، نوار پیشرفت خطی و دایره ای ( linear / circular progress bar ) ، برچسب ( label ) که با قابلیت نمایش فونت فارسی، چپ چین، راست چین، وسط چین مجهز شده است، ویرایشگر متن ( edit box ) هم با قابلیت تایپ ترکیبی فارسی و انگلیسی، انتخاب، تک خط و چند خط و . جعبه لیست ( list box ) میباشد. تیم سازنده علاوه بر ابزارهای اولیه ای که نام بردیم، به سیستمشان یک پنل گسترش یافته ( Extended Panel ) هم اضافه کرده اند. همچنین پذیرش یک مدل سایه زن ( pixel shader ) برای تولید جلوه های بصری هرچه بهتر ایجاد شده است. این پنل میتواند از سیستم انیمیشنی داخل خود که از قبل برنامه ریزی شده است، جلوه های حرکتی خوبی را تولید کند. علاوه بر این قابلیت، این مدل میتواند مدیریت یک رابطه ی کاربری بهتر را به سیستم اضافه کند. اما نوبتی هم باشد، نوبت معرفی ) موتور SeganX است. هوش مصنوعی موتور بر پایه ( Hierarchical State - Driven Agent Behavior ) برنامه ریزی شده است. این سیستم که به جای استفاده از FSM از یک سیستم طبقه بندی شده برای مدیریت دستورات استفاده میکند، توسط آقای "مت بوکلند" وبه وسیله ی کتابی بر روی سایتش منتشر شده است. در ادامه به معرفی ابزارهای هوش مصنوعی موتور SeganX میپردازیم: در بخش های پایانی معرفی موتور SeganX میخواهیم از آن صحبت کنیم. تمامی ابزارها و سیستم های کوچکتری که تا اینجا معرفی کردیم در هسته با هم دیدار میکنند. ابزارها و سیستم های کوچک در هسته به هم متصل شده و هسته اصلی موتور Core را تشکیل میدهند. هسته ی اصلی SeganX یک ساختار Component Base است که خود شامل سه بخش اصلی با زیرشاخه های مختلف است: کلاسهای پیچیده تر شامل عوارض زمین ( Terrain ) ، مش ( Mesh ) ، جنس ( Material ) ، ذرات ( Particle ) ، صدا ( sound ) ، مسیر ها و چند کلاس جزیی دیگر است. که به صورت کامپوننت به ساختار اصلی نود ( Node ) متصل میشوند: سیستم مدیریت صحنه که شامل یک کلاس اصلی مدیریت می باشد. با استفاده از interface استاندارد تعریف شده برای موتور می توان از الگوریتم های مختلف مدیریت صحنه در موتور بهره برد. درحال حاضر مدیریت صحنه از سیستم درختی ( Spherical Bounding Volume Hierarchy ) استفاده می کند. کلاسهای مربوط به رسم صحنه که از ابزارهای سیستم گرافیک برای تعریف و پیاده سازی متد رسم صحنه استفاده میکنند. سیستم دارای یک کلاس مدیریت رسم می باشد که میتواند از متدهای رسم مختلفی برای کشیدن صحنه استفاده کند. با استفاده از interface استاندارد تعریف شده برای موتور می توان متدهای خط لوله رسم ( rendering pipeline ) مختلفی برای موتور تعریفی کرد. در حال حاضر با توجه به سبک بازی که یک بازی با گرافیک استاندارد ولی ساده است از ( forward rendering pipeline ) استفاده شده است. همچنین بخش های کوچکی از ( deferred rendering pipeline ) نیز آماده است که با توجه به سبک بازی توسعه آن در اولویت کاری قرار ندارد و ممکن است برای بازیهای بعدی که با SeganX ساخته شود پیاده سازی انجام گیرد. درحال حاضر سیستم رسم موتور قابلیتهای زیر را ارایه میدهد: اما نکاتی چند در مورد سیستم فیزیک، صدا و تصویر، اسکریپت های موتور SeganX : اسکریپت Script با توجه به اینکه هنوز انتخاب نشده است، هنوز در حد یک موضوع پیشنهادی است و پیشنهاد هم Angle Script برای الحاق به این موتور است اما چون با سبک کنونی بازی نمیخواند، فعلا در اولویت قرار ندارد و ممکن است برای بازیهای آینده که با این موتور ساخته میشوند بکار آید. مبحث فیزیک Physics موتور SeganX ه م تقریبا وضعیتی مشابه وضع اسکریپتهای آن دارد. هنوز موتور فیزیکی خاصی برای بازی در نظر گرفته نشده است اما تیم سازنده قصد دارند یک سیستم ( PAL ( Physics Abstract Layer برای موتور طراحی کنند تا بنا به نیاز سبک بازی، فیزیک در خور سبک را تحویل دهد. اما در بحث صدا وتصویر Sound and Video ، این موتور مجهز به بخش صدا است و از سیستم صوتی Bass برای پخش فایلهای صوتی اش بهره میبرد. اما نکته ی خوب این بخش موتور، استفاده از یک سیستم Sound Calling است که صداهایی با کمترین میزان حجم را غیرفعال میکند تا کانالهای صدا دچار انباشت صدا نشوند و این کانال ها بی خود و بی جهت اشغال نشوند. اینطور که معلوم است، ابزارهای زیادی برای موتور بازی در نظر گرفته شده است که به علاوه ی خلاقیت های منحصر بفرد تیم سازنده در ساخت موتور SeganX موتوری قابل قبول را به عنوان محصول نهایی در آورده اند. هرچه باشد این موتور را خود تیم سازنده ی بازی هم برای جاده های نبرد استفاده کرده اند و با زیر و بم آن آشنا هستند پس میتوانند روی کار ساخت بازی تسلط کامل داشته باشند. درست است که این موتور امکانات خیلی زیادی ندارد اما فعلا برای ساخت "جاده های نبرد" بهینه شده است و میتوان انتظار یک محصول نهایی در حد سبک تاور دیفنس از آن داشت. نکته دیگر آنکه تیم سازنده اعلام کردند که در حال کار روی نسخه دوم موتور هستند که شامل تغییرات زیادی است. از جمله این تغییرات امکان پورت بازی روی پلتفرم های iOS ، پشتیبانی از OpenGL ، اضافه شدن امکانات شبکه، اضافه شدن امکانات فیزیک و. است که البته هنوز تا گرفتن یک خروجی کامل راه زیادی در پیش دارد.