تقریباً از 3 روز پیش در تلاش حل همه مشکلات نسخه آزمایشی 1.2 موتور طراحی بازی بودیم که خوشبختانه حدود 2 ساعت پیش با موفقیت انجام شد و نسخه آزمایشی 1.2 موتور طراحی بازی Main Core با موفقیت به ساختار هسته و سیستمهای نسخه 1.1.4.00 متصل شد . البته این نسخه آزمایشی هست و نسخه اصلی در September سال 2011 منتشر میشه. توی این دوره دو سه روزه من هم هسته موتور رو مطابق همون چیزی که خودم لازم داشتم تا باهاش یک بازی با مشخصات ذکر شده بسازم تغییر دادم. و از یکی دو روز آینده شروع به طراحی سیستم Terrain generator و Texture placement برای صفحه و فضای بازی میکنم. اگه این دو مورد که الان گفتم خوب از آب در بیاد در نسخه 1.2 هم به صورت رسمی قرار خواهد گرفت. حالا چطوره یکم از موتور خودم تعریف کنم ؟ :spam:
عکسی که میبینید در طی یک هفته گذشته مدام به صورت کد در command console سرور موتور Main Core وارد شد. یک سیستم کد خوانی ساده که توسط یکی از دوستان به صورت یک پنل کنترل سرور از طریق کد نویسی طراحی شده و همون اوایل که سرور خوریداری شد روی سرور پیاده شد. این کنترل پنل کلید دسترسی به کلیه فایلها و عناصری هست که روی سیستم عامل سرور (ویندوز) قرار داره. شامل کلیه فایلهای کامپایل شده و سورسهای موتور Main Core و سیستم مدیریت کاربری موتور که خودش شامل اطلاعات کاربرای فعلی و فایلهای log سرور و کاربرا هست. این سیستم تماماً توسط خودمون طراحی شده و بر پایه برنامه نویسی های Sharp Coding ( من نمیدونم چیه ) و زبان C++ نوشته شده. سیستم امنیتی اون هم از یکی از قوی ترین کامپوننتهای متن باز امنیت نرم افزاری استفاده شده که نمیتونم اسمشو بگم چون نمیدونم اسمش چیه فقط میدونم توی سورس فورج برای دانلود هست و اگه پیداش کردین دانلود کنید و در پروژه های خودتون استفاده کنید. ( قسمت سرور و برنامه نویسی این سیستم توسط امیر تهرانی صورت گرفته و من زیاد در مورد ساختار برنامه نویسیش اطلاع ندارم ) .
میخوام با چندتا از کدهای ساختار سیستم مدیریت سرور Main Core آشناتون کنم. البته مهمها رو نمیتونم بگم چون از نظر امنیتی ممکنه تعدادی باگ داشته باشه هنوز که از طریق برخی کدها قابل نفوذ هست.
پنل مدیریت Main Core بر روی سرور دارای سه سری دستور ساده هست که ساختار برنامه نویسی دارن. به جز سه سری دستور 1 سری دستور اجرایی هم داره که زیاد مهم نیست.
سری اول و دوم دستورات متصل شدن به بخش مدیریت سرور و مدیریت پنل و محتوای پایگاه داده سرور هست که نمتونم در موردش صحبت کنم.
سری سوم شامل کلیه دستورات مدیریت محتوای سرور هست که یک سری از اونها رو در بالا مشاهده میکنید. مثل دستور load که با جستجوی فایلی که فراخوانی کردیم اون رو به یک لیست اضافه میکنه که ما اسمش رو لیست دستور جاری یا Current Program list گذاشتیم. این لیست بعد از هر دستور اجرا کننده و اجرای صحیح اون خالی میشه ( از نظر امنیتی مهم میباشد ) . با دستور load یک فایل در لیست قرار میگیره که دارای تگها مختلف هست که هر تگ مجموعه دستورات برنامه نویسی شده رو داره. این تگ ها هم با load شدن فایل آماده استفاده میشن. بعد از Load دستور run رو میبینید که اون تگها رو فراخوانی میکنه و در صورت نیاز اجرا و یا به زیر شاخه های برنامه نویسی متصل میشه . به صورت کلی در برنامه نویسی های موتور main core تگها به این صورت طبقه بندی میشن.
پیشوند mc : از اصلیترین پیشوندهای برنامه نویسی در سیستم موتور طراحی بازی ما هست و فرمت اصلی فایلهای موتور هم mc یا مخفف Main Core نامگذاری شده.
پیشوند i و s : در برنامه نویسی های ما مخصوصاً در بخش سرور S موتاه شده System یا set هست و I بسته به محل قرار گیریش به برای Input و Interface نقش ایفا میکنه. اگر از I به تنهایی استفاده بشه به یعنی inject یا install کردن یک دستور در جاهای مختلف ولی اگر i قبل از s قرار بگیریه input خونده میشه و از یک تابع میخواد تا input مورد نظر در System مورد نظر رو شناسایی و فراخوانی کنه. شبیه core_i_s_update_link_12 که میگه از تابع core که اینجا تگ مجموعه برنامه نویسی core موتور طراحی بازی هست input دستور link رو دریافت کن و دستور update رو با مقدار 12 روی اون اعمال کن. 12 یا 1.2 یک فایل هست که برای نسخه 1.2 روی سرور آپلود شده و دارای همه دستورات و زیر مجموعه های مورد نیاز به روز رسانی هسته و ساختار موتور هست. این دستور از مجموعه ی Core داده ی link رو میگیره و با گرفتن دستور update همون داده های رو از مجموعه دستورات فایل 12 پیدا میکنه و مقادیر دستورات قبلی رو مطابق فایل 12 تغییر میده . یا دستور core_i_s_emulate_core_12 هم میگه که از مجموعه سیستم core برو و input به اسم core رو پیدا کن از از طریق emulate یا همسان سازی مقادیر رو با فایل 12 مقایسه و تصحیح کن. در ساختار موتور وقتی input همون مجموعه دستورات بشه تابع update عمل نمیکنه چون باید یک بخش عظیمی از دستورات به روز بشن و این کار از طریق همسان سازی انجام میشه تا فقط بخشهایی که تغییر کردن به روز رسانی بشن. اگر i بعد از s مورد استفاده قرار بگیره interface خونده میشه و کل رابط یک دستور با کاربر رو به داخل حافظه فراخوانی میکنه. رابط استفاده از دستور شامل قواعد تغییر دادن مقادیر و اجرای زیر مجوعه های دستوری به صورت جداگانه هست. در دستور run mc_s_i_core_develop_kit از دستورات اصلی که با پیوند mc مشخص شدن خواسته میشه تا با مراجعه به سیستم core همه ی inteface های kit زیر مجموعه develop رو فراخوانی و آماده کنه. اگر هم s به صورت تنها به معنای set هست که تغییر دو مقدار به هم یا تغییر داده ها در مجموعه دستورات هست.
پیشوند m : پیشوند m در بعضی جاها به معنای master یا اصلی هست که جاکننده نوع دستور یا مجموعه دستور در یک فایل load شده میباشد. وقتی نوشته شده compiler_m منظور اصلی ترین کامپایلری هست که بقیه کامپایلرها زیر مجموعه اون هستن. این دستور در زبان C# به صورت _all نوشته میشه.
دستور get : این دستور هم که معرف حضور برنامه نویسهای هست. دستوری رو دریافت میکنه و مطابق خواسته برنامه تغییر میده. در دستور core_get_i_s_dll_s_12 از سیستم خواسته شده تا input تابع dll رو از سیستم core در فایل 12 بگیره. اینجا چون قصد ما گرفتن یک دستور از یک فایل هست از get استفاده کردیم . s اینجا مخفف یکی از دستورات امنیتی هست که از ذکرش صرفه نظر میکنم.
متصل کننده to : دستور to دو تا تابع رو به هم متصل میکنه یا ارتباط بین اونها رو با توجه به یک دستور قبلی برقرار میکنه. البته توی عکس دستوراتی بود که نمیشد نشون داد ولی خوب دو دستور امنیتی یا بعضی مواقع دستورات اجرایی رو به هم تبدیل یا نسبت به دستورات داده شده تغییر میده.
در آخر هم سری دستورات اجرایی هست که شامل دستورات execute و launch و دستورات دیگه ای هست که در اکثر زبانهای برنامه نویسی وجود داره. این دستورات به دو دسته تقسیم میشن که یک دسته شبیه execute زیر مجموعه های دستوری و برنامه های داخلی رو اجرا یا آماده اجرا میکنن و بعضی دستورات هم شبیه launch در آخر نوشته میشه تا کل برنامه ی نوشته شده اجرا بشه.
میدونم اطلاعات به درد نخوری بود ولی خوب گفتم گفتش ضرر نداره