آشنایی با موتور گرافیکی ایرانی SeganX | قسمت دوم
اگر از بازدیدکنندگان ثابت سایت گیمفا باشید ، حتما تا حالا با بازی ایرانی جاده های نبرد آشنا شده اید ، یک بازی متفاوت در سبک تاور دیفنس که قرار است بزودی برای PC منتشر شود. اگر پیش نمایش ها و تصاویر بازی را دیده باشید شاید از خودتان سوال کرده باشید که موتور (انجین) ساخت این بازی چیست ؟ آیا این بازی با موتورهای آماده ی خارجی ساخته شده یا از موتوری داخلی بهر میبرد ؟ با پاسخ دادن به این سوال به معرفی تخصصی موتورSeganX ، موتوری کاملا داخلی که جاده های نبرد با آن ساخته شده است ، میپردازیم.
موتور SeganX موتور بازی سازی ساخته داخل کشور و حاصل تلاش تیم سازنده ی جاده های نبرد است.. SeganX را آنطور که سازندگان آن میگویند، با حداقل امکانات ساخته اند و جالب اینکه هیچ گونه کمکی نیز از موتورهای آماده ی خارجی نگرفته اند. چرا که از نظر آن ها استفاده از ابزارهای آماده برای ساخت بازی های کوچک مناسب است و استفاده از ابزار خارجی را برای تولید بازی های بزرگ تر، مواجه شدن با کاری بی کیفیت و عدم دستیابی به یک تکنولوژی بومی می دانند و باید بهشان آفرین گفت زیرا با این محدودیت هایشان توانستند قدمهای خوبی در این زمینه بردارند.
* در معرفی موتور بازی ممکن است به اصطلاحات تخصصی بر بخورید که ما تا حد امکان برای برگداندنشان به زبان فارسی تلاش کرده ایم اما برخی کلمات ممکن است ناملموس باشد پس پیشاپیش عذرخواهی میکنیم.
برای معرفی موتور میخواهیم از مفاهیم پایه ی یک موتور بازیسازی شروع کنیم ، مدیریت داده ها مسلما از اولین امکاناتی است که یک بازیساز نیاز دارد. ابزارهای اولیه برای مدیریت داده ها مخصوص کار با این موتور نوشته شده است. ابزارهای این بخش (array, list, queue, stack, map, string) دوباره و به صورت کامل بازنویسی شده است. در راستای همین مدیریت داده چهار سیستم مدیریت حافظه نیز برای موتور در نظر گرفته شده است ( standard, fixed size, free list memory pool, hybrid memory pool ) . همچنین برای پایگاه داده ی Map این موتور ازAVLTreeاستفاده شده است. در کنار این ابزارها ، ابزارهای کمکی دیگری مثل کتابخانه ی ریاضی و همچنین کتابخانه ی کار با متون برای نمایش متون و حروف فارسی درSeganX استفاده شده است.
ابزارهای رایج ( Commons) ابزاری هستند که طوری طراحی میشوند تا در بسیاری از بخش های موتور سازنده استفاده شوند. این ابزار در موتورهای اساسی و بزرگ شرکتهای خارجی طیف وسیعی را شامل میشود. در موتورSeganX این ابزارها شامل توابع رایجی برای تولید اعداد تصادفی، تولید اعدادیکه با استفاده از الگوریتم CRC32 ، کتابخانه ریاضی شامل ماتریسها، بردارها، شناسایی برخوردهای اشیا پایه همچون کره و … میباشد.
پس از طراحی ابزارها، برای مدیریت سیستم موتور چیزی شبیه یک رابط کاربری هم باید طراحی شود که تعامل سیستم عامل با موتور صورت بگیرد. برای این کار تیم سازنده ، قبل از همه چیز با در نظر گرفتن ماشین مقصد ( سیستم عامل مقصد) ابزارهای شناسایی سیستم هدف طراحی میکنند. سپس ابزارهای کنترل رفتار ماشین را که کارهای ساده اما مفیدی مانند مدیریت فایل ها، فایهایی که به صورت اشتراکی در چند پروسه باز هستند، پوشه ها، مسیر پوشه های خاص، ایجاد پنجره ی بازی یا ادیتور، میزان مصرف باتری روی لپتاپها ، جلوگیری از خاموش شدن مانیتور ، جلوگیری از اجرای اسکرین سیور یا خواب شدن سیستم را انجام میدهد. ادامه نیز ابزارهای لازم برای مدیریت سرنخ ها ( Threads) طراحی میشود. این فرایند با الحاق سیستم فشرده سازی zLib برای فشرده سازی فایلها و دیتاهای موتور کامل میشود.
در بخش طراحی سیستم گرافیک موتورSeganX ، ابزارهای مربوط به API های گرافیکی شامل کلاسهای wrapper رسم کننده، جئومتریها، بافتها، سایه زن ها و … طراحی میشوند که در حال حاضر API DirectX را شامل می شوند و می توانند برای API های دیگر نظیر OpenGL استفاده شوند. نکته ی مهم سیستم گرافیک، هماهنگ کردن ابزارهای گرافیک با سیستم مدیریت سرنخ ها و مدیریت فایلها برای ذخیره و بازیابی اطلاعات در سرنخ های دیگر است. ابزاری که در این بخش به این هماهنگی رسیده اند شامل ابزار اصلی رسم ، کلاس جئومتری با توانایی مدیریت سه مرحله جزئیات (LOD) و ذخیره و بازیابی اطلاعات به صورت باینری در سرنخ های دیگر و… است. از دیگر بخش های مربوط به سیستم گرفیک، کلاسهای مربوط به سایه زن ها برای مدیریت سایه زن ها با سه مرحله کیفیت و طراحی سیستم اولیه ی انیمیشن ها شامل کنترل کننده های انیمیشن ها و مدیریت محتوای آنها است. البته به گفته تیم سازنده این طراحی ها قدیمی است و باید کاملا تغییر کنند و بروز شوند.
در ادامه ی طراحی های اولیه موتورSeganX ، طراحی سیستم ورودی (input) آن کار شده است. سیستم ورودی ابزارهای مورد نیاز برای کنترل و شناسایی ورودی ها به سیستم مثل کیبورد ، موس و دسته را شامل میشود. یک مدیریت یکپارچه ی مرکزی مدیریت ورودیهای سیستم را برعهده دارد که با توجه به طراحی ابزار تیم سازنده ، به راحتی میتوان ورودیها را به سیستم معرفی کرد. مثلا میتوانید براحتی دسته ی بازی (گیم پد) را تعریف و به سیستم معرفی کنید. در حال حاضر ، صفحه کلید ، موس و موس ادیتور (جهت استفاده در ادیتور) ابزارهای آماده ای هستند که در سیستم ورودی موتور میتوان از آنها استفاده کرد.
رابط کاربری GUI نیز یکی از ملزومات اصلی هر موتور بازی سازی است. بالاخره رابط کاربری همیشه پل اتصالی بین کاربر و محیط کاربری هر رسانه ای ست. موتورSeganX مجهز به یک سیستم یکپارچه و چندزبانه ی رابطه کاربری است که در آن هر جز میتواند زیر مجموعه ی جز دیگری باشد. از قابلیتهای دیگر این بخش میتوان اشاره کرد که این سیستم را میتوان به صورت سه بعدی نیز استفاده کرد و این سیستم است که ابزارهای اولیه ی رابطه ی کاربری را ارائه میدهد. این ابزارهای اولیه شامل ، فرم اولیه ( Base Form ) که دارای چهار گوشه گرد و یک دکمه بستن می باشد ، پنل ( panel ) ، دکمه ( button ) ، جعبه چک ( check box ) ، نوار لغزان ( track bar ) ، نوار پیشرفت خطی و دایره ای ( linear/circular progress bar ) ، برچسب ( label ) که با قابلیت نمایش فونت فارسی، چپ چین، راست چین، وسط چین مجهز شده است ، ویرایشگر متن ( edit box ) هم با قابلیت تایپ ترکیبی فارسی و انگلیسی، انتخاب، تک خط و چند خط و … ، جعبه لیست ( list box ) میباشد.
تیم سازنده علاوه بر ابزارهای اولیه ای که نام بردیم ، به سیستمشان یک پنل گسترش یافته ( Extended Panel ) هم اضافه کرده اند .همچنین پذیرش یک مدل سایه زن ( pixel shader ) برای تولید جلوه های بصری هرچه بهتر ایجاد شده است. این پنل میتواند از سیستم انیمیشنی داخل خود که از قبل برنامه ریزی شده است ، جلوه های حرکتی خوبی را تولید کند. علاوه بر این قابلیت ، این مدل میتواند مدیریت یک رابطه ی کاربری بهتر را به سیستم اضافه کند.
اما نوبتی هم باشد ، نوبت معرفی هوش مصنوعی (AI) موتورSeganX است. هوش مصنوعی موتور بر پایه ( Hierarchical State-Driven Agent Behavior ) برنامه ریزی شده است. این سیستم که به جای استفاده از FSM از یک سیستم طبقه بندی شده برای مدیریت دستورات استفاده میکند ، توسط آقای “مت بوکلند” وبه وسیله ی کتابی بر روی سایتش منتشر شده است. در ادامه به معرفی ابزارهای هوش مصنوعی موتورSeganX میپردازیم :
- ساختار ماموریت ( mission ) : که اطلاعاتی را در مورد نحوه رفتار، مکان و مدت زمان انجام ماموریت است. با این ساختار ، کاراکترهای ایجاد شده در محل درست، کار درست را انجام میدهند !در حال حاضر ماموریت ها شامل رفتن به مکان مشخص، کشتن دشمنان، خودکشی و … است. بعضی ماموریت ها می توانند همزمان باشند. مثلا در این بازی تانک ها ماموریت دارند که به مکان مشخصی رفته و تعداد مشخصی از مردم بازیکن را کم کند. در طول مسیر هم هر تاوری دید به آن شلیک کند.
- ساختار اصلی مغز ( Brain ) : می توان ماموریت های مختلفی را تعریف کرده و به لیست ماموریت ها اضافه کرد. در این بخش تصمیم گیری و اجرای دستورات با توجه به ماموریتهای تعریف شده، انجام می شود.
- سیستم مسیریابی بر اساس الگوریتم A* و گراف نقطه ای ( POV ) ( همان پیدا کردن راهها در بازی توسط هوش مصنوعی)
در بخش های پایانی معرفی موتورSeganX میخواهیم از هسته (Core) آن صحبت کنیم.
تمامی ابزارها و سیستم های کوچکتری که تا اینجا معرفی کردیم در هسته با هم دیدار میکنند. ابزارها و سیستم های کوچک در هسته به هم متصل شده و هسته اصلی موتور Core را تشکیل میدهند. هسته ی اصلیSeganX یک ساختار Component Base است که خود شامل سه بخش اصلی با زیرشاخه های مختلف است :
کلاسهای پیچیده تر شامل عوارض زمین (Terrain)، مش (Mesh)، جنس (Material)، ذرات (Particle) ، صدا ( sound ) ، مسیر ها و چند کلاس جزئی دیگر است. که به صورت کامپوننت به ساختار اصلی نود (Node) متصل میشوند:
- Terrain: قابلیت چند لایه ای با جنس و بافت های مختلف – Node based Geomipmaping
- Material: دارای سه مرحله کیفی – مدیریت چند جنس (multi material)
- Particle: نمایش بافت انیمیشنی برای دود و آتش، اعمال جاذبه، باد و…
سیستم مدیریت صحنه که شامل یک کلاس اصلی مدیریت می باشد. با استفاده از interface استاندارد تعریف شده برای موتور می توان از الگوریتم های مختلف مدیریت صحنه در موتور بهره برد. درحال حاضر مدیریت صحنه از سیستم درختی ( Spherical Bounding Volume Hierarchy ) استفاده می کند.
کلاسهای مربوط به رسم صحنه که از ابزارهای سیستم گرافیک برای تعریف و پیاده سازی متد رسم صحنه استفاده میکنند. سیستم دارای یک کلاس مدیریت رسم می باشد که میتواند از متدهای رسم مختلفی برای کشیدن صحنه استفاده کند. با استفاده از interface استاندارد تعریف شده برای موتور می توان متدهای خط لوله رسم ( rendering pipeline ) مختلفی برای موتور تعریفی کرد. در حال حاضر با توجه به سبک بازی که یک بازی با گرافیک استاندارد ولی ساده است از ( forward rendering pipeline ) استفاده شده است. همچنین بخش های کوچکی از ( deferred rendering pipeline ) نیز آماده است که با توجه به سبک بازی توسعه آن در اولویت کاری قرار ندارد و ممکن است برای بازیهای بعدی که باSeganX ساخته شود پیاده سازی انجام گیرد. درحال حاضر سیستم رسم موتور قابلیتهای زیر را ارایه میدهد:
- per pixel lighting (نور پردازی به ازای پیکسل)
- diffuse/ambient lighting ( انتشار نور در محیط)
- bump mapping
- Specular mapping ( نقشه های سپکیولار)
- alpha blending ( ترکیب آلفا)
- heat effect ( تاثیرات گرما)
- grass / tree rendering ( رندر درخت و چمن)
- (fog ( linear – exponential – exponential ^ 2 (مه )
- PCF x4 sun light hardware shadow mapping (سخت افزار ارائه نور خورشید و سایه در نقشه ها)
- reflection / refraction (انعکاس و انکسار)
- advanced additional shader programming for model 2 & 3 (برنامه سایه زنی پیشرفته برای مدلهای ۲ بعدی و۳ بعدی)
اما نکاتی چند در مورد سیستم فیزیک ،صدا و تصویر ، اسکریپت های موتورSeganX :
اسکریپت Script با توجه به اینکه هنوز انتخاب نشده است ، هنوز در حد یک موضوع پیشنهادی است و پیشنهاد هم Angle Script برای الحاق به این موتور است اما چون با سبک کنونی بازی نمیخواند ، فعلا در اولویت قرار ندارد و ممکن است برای بازیهای آینده که با این موتور ساخته میشوند بکار آید.
مبحث فیزیک Physics موتورSeganX ه م تقریبا وضعیتی مشابه وضع اسکریپتهای آن دارد. هنوز موتور فیزیکی خاصی برای بازی در نظر گرفته نشده است اما تیم سازنده قصد دارند یک سیستم (PAL ( Physics Abstract Layer برای موتور طراحی کنند تا بنا به نیاز سبک بازی ، فیزیک در خور سبک را تحویل دهد.
اما در بحث صدا وتصویر Sound and Video ، این موتور مجهز به بخش صدا است و از سیستم صوتی Bass برای پخش فایلهای صوتی اش بهره میبرد. اما نکته ی خوب این بخش موتور ، استفاده از یک سیستم Sound Calling است که صداهایی با کمترین میزان حجم را غیرفعال میکند تا کانالهای صدا دچار انباشت صدا نشوند و این کانال ها بی خود و بی جهت اشغال نشوند.
اینطور که معلوم است ، ابزارهای زیادی برای موتور بازی در نظر گرفته شده است که به علاوه ی خلاقیت های منحصر بفرد تیم سازنده در ساخت موتورSeganX موتوری قابل قبول را به عنوان محصول نهایی در آورده اند. هرچه باشد این موتور را خود تیم سازنده ی بازی هم برای جاده های نبرد استفاده کرده اند و با زیر و بم آن آشنا هستند پس میتوانند روی کار ساخت بازی تسلط کامل داشته باشند. درست است که این موتور امکانات خیلی زیادی ندارد اما فعلا برای ساخت “جاده های نبرد” بهینه شده است و میتوان انتظار یک محصول نهایی در حد سبک تاور دیفنس از آن داشت .
نکته دیگر آنکه تیم سازنده اعلام کردند که در حال کار روی نسخه دوم موتور هستند که شامل تغییرات زیادی است . از جمله این تغییرات امکان پورت بازی روی پلتفرم های iOS ، پشتیبانی از OpenGL ، اضافه شدن امکانات شبکه، اضافه شدن امکانات فیزیک و .. است که البته هنوز تا گرفتن یک خروجی کامل راه زیادی در پیش دارد.
برای کسب اطلاعات بیشتر در مورد بازی ایرانی جاده های نبرد به بخش پرونده ی اختصاصی این بازی مراجعه کنید
پر بحثترینها
- ادعای مدیر سابق Sweet Baby: استودیوها سراغ ما میآیند تا داستان بازیهایشان را بهبود دهیم
- مشخصات کامل سختافزار پلی استیشن ۵ پرو فاش شد
- مدیرعامل پلی استیشن: طرفداران باید انتظارات خود را کاهش دهند، PS5 Pro یک کنسول نسل بعدی نیست
- سازنده سابق راکستار: مردم سالها از واقعگرایی GTA 6 صحبت خواهند کرد
- ۷ بازی مخفیکاری با پیشرفتهترین هوش مصنوعی دشمنان
- ادعای سازنده Concord: اثری ساختیم که تجربه فوقالعادهای را به گیمرها ارائه میدهد
- شمار بازیکنان همزمان Dragon Age: The Veilguard در روز عرضه به بیش از ۷۰,۰۰۰ نفر رسید
- Horizon Zero Dawn Remastered در زمان عرضه روی استیم تنها ۲.۵ هزار بازیکن فعال داشته است
- تهیهکننده Final Fantasy: اسکوئر انیکس میخواهد بازیهای آینده را همزمان روی Xbox منتشر کند
- شرکت Sweet Baby نقشی در پروسه ساخت Dragon Age: The Veilguard نداشته است
نظرات
:yes: :yes: :yes: :yes:
ممنون قاسم جان … مقالت داره به جاهای تخصصی تری میره …
امیدوارم شرکتشم مثله مقالت راست و درس باشن … بازی هاشونم همین طور
مقاله کاملی بود دستت درد نکنه قاسم جان :yes:
جالبه :yes: :yes:
باز هم حماسه ای از قاسم نجاری!!!
قاسم جان دستت درد نکنه!!!
داداش باهات کاردارم اگه میشه منو ادد کن : amidanialsaedi@ymail.com
:yes: چه شیییییییی بسوفتههه :rotfl: :yes: :yes:
اما نکاتی چند در مورد سیستم فیزیک ،صدا و تصویر ، اسکریپت های موتورSeganX :
من که از اینجا به بعدشو فهمیدم 😀 امیدوارم موفق باشن :-))
خوبه ولی امیدوارم بهتر بشه تا اونجایی که یه موتور تجاری بشه :yes:
صد در صد موتور خوبی هستش از تصاویر موتور مشخصه :yes: 😀
باید پیشرفت کنه امیدوارم… :yes: :sidefrown:
به امید پیشرفت صنعت گیم ایران :yes: :yes:
با تصویر اول خیلی حال کردم
امید وارم همین طوری پیشرفت کنن
و این گونه بود که ما پیشرفت کردیم
آفرین بچه