آموزش ذخیره سازی و بارگذاری در گیم میکر-سطح متوسط

آموزش ذخیره سازی و بارگذاری در گیم میکر-سطح متوسط

در این درس با آموزش ذخیره سازی و بارگذاری در گیم میکر در خدمت شما هستیم. همان طور که می دانید در بسیاری ازبازی ها لازم است که میزان پیشرفت بازیکن ذخیره سازی شود تا درصورتی که بازیکن از بازی خارج شد و در زمان بعد به بازی برگشت بتواند کار خود را از همان جا ادامه دهد. مثلا فرض کنید بازی 100 مرحله دارد. اگر بازیکن بتواند مثلا 15 مرحله ابتدایی را با موفقیت انجام دهد باید امکانی وجود داشته باشد که دفعه بعد که بازیکن به بازی برگشت بتواند از مرحله 16 کار خود را آغاز کند و مقدار پیشرفت های گذشته برایش ذخیره سازی شده باشد.

یکی از پرکاربردترین راه های ذخیره سازی بازی استفاده از فایل های ini است. فایل ini در واقع یک فایل متنی است که در جایی روی هارد رایانه شما و خارج از پوشه بازی ایجاد و به روز رسانی می شود. اطلاعات راجع به پیشرفت شما در بازی در این فایل ذخیره می شود و زمانی که شما از بازی خارج می شوید و دوباره وارد آن می شوید، اطلاعات ذخیره شده در آن خوانده شده و از این طریق، بازی شما به صورتی که قبلا ذخیره شده بود، بازیابی می شود.

بنابراین بر طبق توضیحات بالا، وظیفه ی بازی ساز این است که در ابتدای اجرای بازی یک فایل ini تولید کند، مشخصات لازم را بر روی آن تعریف کند و مثلا هنگام خروج از بازی آخرین تغییرات را روی آن ذخیره سازی کند تا دفعه بعد، اطلاعات ازروی فایل ini ، خوانده شود. بیایید این چند مرحله ساده را در قالب یک مثال عملی با هم انجام دهیم. برای این کار ابتدا فایل gmz زیر را دانلود کنید و درون یک پروژه خالی گیم میکر import کنید.

save&load.gmz

پروژه فعلی را تست کنید. همان طور که می بینید این پروژه گیم میکر در حال حاضر تنها از یک کاراکتر ساده تشکیل شده که با استفاده از کلیدهای جهت دار کیبورد درمیان دیوار ها حرکت می کند.  در حال حاضر اگر کاراکتر را به نقطه دلخواهی از صحنه بازی ببرید و از بازی خارج شوید، با اجرای مجدد بازی همه چیز ریستارت می شود و درنتیجه بازیکن همیشه از نقطه پیش فرض ظاهر می شود. هدف ما در این آموزش است که  کاری کنیم که هر بار پس از خارج شدن از بازی، آخرین مکانی که بازیکن در آن قرار گرفته بود را ذخیره کنیم تا بازیکن در شروع مجدد بازی از آن نقطه کار خود را آغاز کند.برای این کار به سراغ آبجکت بازیکن یعنی obj_player رفته و یک رخداد Create در آن ایجاد کنید و یک قطعه کد خالی در مقابل آن قرار دهید.در آن تایپ کنید:

ini_open(“save.ini”);

هربار که تصمیم دارید با فایل های ini شروع به کار کنید حتما باید اولین خط کدتان همین خط باشد. نامی را که درون پرانتز و در میان علامت “” نوشته ایم نام دلخواهی است که تصمیم داریم بر روی فایل ini خود بگذاریم.همانطور که می بینید .ini نوع فرمت است که باید بعد از نام فایل بنویسیم.حالا خط زیر را اضافه کنید:

x = ini_read_real(“position” , “my_x” , xstart);

همانطور که می بیند در این خط تصمیم داریم، مقدار x آبجکت مان را در ابتدای بازی از محتویات فایل read کنیم یا بخوانیم. تابع استفاده شده در این خط از 3 پارامتر تشکیل شده است؛ پارامتر اول که دارای نام دلخواه و درون علامت “” قرار داده شده است، به معنای دسته بندی مشخصات مورد نظر ماست. زیرا فایل های ini می توانند از چندین دسته بندی تشکیل شده باشند. مثلا یک دسته بندی مربوط به مکان آبجکت، دسته بندی دیگر مربوط به رنگ اسپرایت آن و…. باشد. از آنجا که ما فعلا تصمیم داریم اطلاعات مربوط به مکان آبجکت را دخیره و بارگذاری کنیم از دسته بندی دلخواه  “position” استفاده کرده ایم.

پارامتر دوم نام مشخصات مورد نظر در فایل ini است. همانطور که می بینید ما از نام دلخواه “my_x” استفاده کرده ایم که به مختصات x آبجکت اشاره دارد.

و درنهایت پارامتر سوم به این معنی است که در اولین بار اجرای بازی که هنوز فایل ini وجود ندارد(چون تا کنون ذخیره سازی صورت نگرفته است) مشخصه مورد نظر ما باید چه مقداری داشته باشد. برای روشن تر شدن موضوع فرض کنید اولین باری که تصمیم داریم یک بازی را اجرا کنیم حتما باید بازی از مرحله اول آغاز شود، چون هنوز بازیکن هیچ پیشرفتی در آن نداشته است. بنابراین پارامتر سوم به مقدار اولیه و آغازین مشخصات مورد نظر ما اشاره می کند که در اولین اجرای بازی باید وجود داشته باشد. بنابراین در تابع بالا ما این مقدار را برابر با xstart قرار دادیم تا اولین  x بازیکن نقطه ای باشد که به طور پیش فرض  آبجکت در آن نقطه روم قرار گرفته است.

بنابراین  در این قطعه کد :

تصمیم داریم با شروع بازی کاراکتر را در x مناسب قرار دهیم ؛ برای این کار به سراغ فایل ini می رویم و سعی می کنیم این اطلاعات را از روی آن بخوانیم. این اطلاعات در دسته بندی “position” و برابر با مشخصه “my_x” قرار داده شده و در صورتی که این اولین اجرای بازی باشد مقدار x برابر با x اولیه پیش فرض یا xstart قرار داده می شود.

حالا به سراغ تعیین تکلیف y آبجکت می رویم و دقیقا به همین روش مقدار y آبجکت بازیکن را نیز تعیین می کنیم:

y = ini_read_real(“position” , “my_y” , ystart);

و در انتها تنها خطی که باید اضافه کنید:

ini_close();

این خط کد به معنای این است که کار ما با فایل ini تمام شده است و همانطور که می بینید هیچ پارامتری نیاز ندارد.بنابراین همیشه به یاد داشته باشید که قبل از شروع کار با ini دستور ini_open و پس از اتمام کار دستور ini_close ضروری است.دستور شما در حال حاضر باید به شکل زیر باشد:

تنها کاری که باقی می ماند این است که کاری کنیم که زمانی که بازیکن از بازی خارج می شود، آخرین مکان قرار گیری آن در فایل ini نوشته یا به اصطلاح write شود. برای این کار از رخداد Other گزینه Room End (که به معنای خارج شدن از روم است) را اضافه کنید ودر مقابل آن کد زیر را تایپ کنید:

ini_open(“save.ini”);

ini_write_real(“position”,”my_x”,x);

ini_write_real(“position”,”my_y”,y);

ini_close();

همانطور که میبیند دوباره برای شروع و پایان کار، از دستورات قبلی در ابتدا و انتهای کد استفاده کردیم و فقط در خط دوم و سوم به جای read کردن اطلاعات از write به معنی نوشتن یا ذخیره سازی استفاده کرده ایم.در این خطوط پارامتر اول و دوم مجددا به معنای دسته بندی و مشخصه مورد نظر ماست که باید دقیقا شبیه مرحله اول باشند. اما پارامتر های سوم در هر دو خط به مکان فعلی آبجکت در صحنه بازی اشاره می کنند که باید در فایل ini ذخیره سازی شوند. کار ما در این مرحله تمام است و شما می توانید کار خود را تست کنید. با اجرای بازی کاراکتر را به نقطه به خصوصی ببرید و سپس بازی را ببندید مجددا آن را اجرا کنید. خواهید دید که بازیکن از آخرین مکان در اجرای قبلی، کار خود را شروع می کند.

شما می توانید فایل ini ایجاد شده بر روی هارد را ببینید. برای این کار از منوی Help گزینه Open Project Data in Explorer را انتخاب کنید.

امیدواریم این مطلب هم مورد پسندتان قرار گرفته باشد. لطفا سوالات و نظرات تان رو از انتهای همین صفحه با ما در میان بگذارید.

2 دیدگاه ها

  1. Hamid گفت:

    سلام لطفا اگه میتوانید اموزش ها را ویدیویی و با کلام بزارید که درک ان نیز ساده تر باشد با تشکر

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

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *