کدنویسی در گیم میکر-سطح مبتدی-قسمت نهم

کدنویسی در گیم میکر-سطح مبتدی-قسمت نهم

کدنویسی در گیم میکر

(:اسپرایت، آبجکت، روم، اولین خطوط کد) در درس گذشته آموزش کدنویسی در گیم میکر برای مبتدی، با لیست رخداد های گیم میکر آشنا شدیم. در این درس می خواهیم از این رخدادها استفاده کنیم و اولین و ساده ترین کدها را با GML بنویسیم.

شروع کنیم!

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

اسپرایت بسازیم!

به یک اسپرایت نیاز داریم. یک اسپرایت ایجاد کنید تا پنجره Sprite Properties مطابق شکل زیر باز شود:

کدنویسی در گیم میکر

نام دلخواهی را برای اسپرایت خود درقسمت Name تایپ کنید. برای نامگذاری منابع در گیم میکر قراردادهایی وجود دارد که اکثر کدنویسان آن را رعایت می کنند. به این صورت که دو یا سه حرف اول نوع منبع را بعلاوه علامت زیرخط _ و درآخر یک نام بامعنی را در کنار هم قرار می دهند. به این ترتیب چون تصمیم داریم در این درس یک اسپرایت دایره ای شکل داشته باشیم می توانیم از نام دلخواه spr_ball برای آن استفاده کنیم.

پس از نامگذاری اسپرایت، با دو انتخاب Load Sprite و Edit Sprite روبه رو هستیم. در صورتی که بخواهیم از یک تصویر گرافیکی که قبلا روی رایانه خود ذخیره کرده ایم استفاده کنیم باید از دکمه Load Sprite استفاده کرده و فایل تصویری مورد نظرمان را به عنوان یک اسپرایت وارد گیم میکر نماییم. اما چون در این درس تصمیم داریم خودمان یک تصویر برای اسپرایت مان تولید کنیم روی Edit Sprite کلیک کنید تا پنجره زیر باز شود:

کدنویسی در گیم میکر

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

کدنویسی در گیم میکر

روی دکمه OK کلیک کنید تا مانند تصویر زیر یک فریم خالی دارای پس زمینه شطرنجی با ابعاد 96*96 ایجاد شود.با دابل کلیک کردن روی این فریم وارد محیط نهایی طراحی اسپرایت می شویم.

کدنویسی در گیم میکر

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

کدنویسی در گیم میکر

بعد از اینکه از کیفیت شاهکار هنری که خلق کردید راضی شدید! می توانید با کلیک بر دکمه تیک سبز رنگ گوشه بالای سمت چپ ، پنجره ویرایش اسپرایت خود را ذخیره سازی کرده و ببندید. همانطور که در تصویر زیر می بینید فریم اسپرایت ما دیگر خالی نیست:

کدنویسی در گیم میکر

دوباره روی تیک سبز کلیک کرده و این پنجره را نیز ببندید تا فقط پنجره Sprite Properties در حالت باز باقی مانده باشد. در حال حاضر با سایر تنظیماتی که در این پنجره وجود دارد کاری نداریم. با کلیک روی دکمه OK آن را نیز ببندید تا کار ما با اسپرایت spr_ball تمام شود.

کدنویسی در گیم میکر

 

آبجکت بسازیم!

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

یک آبجکت جدید ایجاد کنید. پنجره Object Properties باز می شود. مانند روشی که برای ایجاد اسپرایت استفاده کردیم، برای آبجکت ها نیزبهتر است ابتدا یک نام مناسب را تایپ نماییم. بنابراین در قسمت Name وطبق توضیحات گفته شده درباره اصول نامگذاری، نام دلخواه obj_ball را تایپ کنید. سپس برای اختصاص دادن یک اسپرایت به آن، در کادر Sprite روی قسمت <no sprite> کلیک کنید. در لیستی که باز می شود روی نام تنها اسپرایت موجود در بازی یعنی spr_ball کلیک کنید، تا آبجکت ما دارای اسپرایت شود. همانطور که می بینید تصویر کوچکی از اسپرایت spr_ball در کادر Sprite ظاهر می شود تا مشخص باشد که کدام اسپرایت به این آبجکت نسبت داده شده است.

کدنویسی در گیم میکر

با سایر تنظیمات پنجره Object Properties فعلا کاری نداریم. بنابراین می توانیم با کلیک بر دکمه OK در پایین پنجره، آن را ذخیره سازی کرده و ببندیم.

روم بسازیم!

حالا که اسپرایت و آبجکت مورد نیاز برای پروژه ساده مان آماده شد، وقت آن رسیده که تنها روم بازی را بسازیم. همانطور که در درس های قبل گفته شد یک بازی گیم میکر برای آن که قابل اجرا باشد، لااقل به یک روم احتیاج دارد. همچنین گفته شد که روم، صحنه یا محیطی است که اجزای بازی در آن قرار داده می شوند.

یک روم جدید ایجاد کنید تا با پنجره Room Properties مطابق تصویر زیر روبه رو شویم. طبق معمول در هنگام شروع کار با یک منبع جدید، به عنوان اولین مرحله، یک نام مناسب را برای آن در نظرمی گیریم. همانطور که در تصویر می بینید روم ایجاد شده در حالت پیش فرض روی سربرگ settings باز می شود و شما می توانید متن دلخواه rm_level یا هر نام درست دیگر را در فیلد Name تایپ کنید. به سایر گزینه های موجود در این سربرگ فعلا نیازی نداریم.

کدنویسی در گیم میکر

تصمیم داریم آبجکت توپ را به صحنه بازی اضافه کنیم. بنابراین روی سربرگ objects کلیک کنید. از آنجا که در حال حاضر تنها آبجکت پروژه ما obj_ball است، تصویر آن به صورت پیش فرض در سربرگ objects دیده می شود. این موضوع به این معنی است که obj_ball در حالت انتخاب قرار دارد و اگر بر روی هر نقطه دلخواه از روم کلیک کنید، یک نمونه از این آبجکت در آن نقطه ساخته می شود. سعی کنید مانند تصویر زیر یک نمونه از آبجکت توپ را درحوالی مرکز روم قرار دهید.

کدنویسی در گیم میکر

در هنگام کار با روم و چیدمان آبجکت ها توجه به نکات زیر مفید و لازم است:

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

 

با کلیک بر علامت تیک سبز رنگ گوشه بالای سمت چپ پنجره Room Properties آن را ذخیره سازی کرده و ببندید.کار ما با روم در اینجا تمام می شود و بالاخره به قسمت هیجان انگیز کار می رسیم. شروع کدنویسی در گیم میکر !

شروع کدنویسی در گیم میکر

به بخش سمت چپ محیط گیم میکر توجه کنید. همانطور که قبلا گفتیم به لیستی که در این قسمت قرار گرفته، Resource Tree یا لیست منابع گفته می شود و تمام منابعی که در روند توسعه پروژه ایجاد می کنیم، بر اساس نوع آن در فولدر مخصوصی در این لیست قرار می گیرند. همانطور که در تصویر زیر می بینید پروژه ساده ما در حال حاضر شامل یک اسپرایت، یک آبجکت و یک روم است.

کدنویسی در گیم میکر

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

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

در بخش میانی پنجره Object Properties که مخصوص رخدادهای بازی است، روی دکمه Add Event کلیک کنید. لیست رخدادها ظاهر می شود؛ همانطور که قبلا گفته شد رخداد Create به محض ایجاد شدن یک آبجکت در فضای بازی، به وقوع می پیوندد. این رخداد را انتخاب کنید تا نام آن به لیست Events وارد شود:

کدنویسی در گیم میکر

حالا آماده ایم که کد مورد نظرمان را در مقابل این رخداد وارد کنیم. به خاطر داشته باشید که هر کدی را که در مقابل رخداد Create می نویسیم، تنها یک بار و آن هم به محض ظاهرشدن آبجکت در روم اجرا می شود .همانطور که در بخش سمت راست پنجره می بینید، این بخش با عنوان Actions مشخص شده و قرار است عمل های مخصوص هریک از رخدادها در آن قرار بگیرند. در سمت راست این بخش چندین سربرگ قرار گرفته که تعداد زیادی آیکان های مختلف در هر کدام قرار داده شده است. هر کدام از این آیکان ها دربرگیرنده یک اکشن هستند که برای راحتی بازی سازان مبتدی تهیه شده است. به این صورت که بازی ساز بدون نیاز به دانش برنامه نویسی و فقط با شناخت عملکرد هر کدام از این آیکان ها، کافی است آن را انتخاب کرده و با استفاده از کلیک چپ ماوس به داخل کادر Actions بکشاند و در مقابل رخداد مورد نظرش رها کند. به همین دلیل، این قابلیت گیم میکر را Drag & Drop (به معنای کشاندن و رها کردن) می گویند. اگرچه این قابلیت بسیار عالی کمک زیادی به بازی سازان مبتدی می کند، اما به دلایلی که در زیر گفته می شود، ماتصمیم داریم از آن استفاده نکنیم:

  • عنوان این مجموعه دروس را آموزش کدنویسی گذاشته ایم. چطور توقع دارید به آموزش Drag & Drop بپردازیم!؟ (:
  • استفاده از Drag & Drop با محدودیت هایی همراه است که تنها برای ساخت پروژه های کوچک مفید است. در صورتی که بازی ساز بخواهد فراتر برود و پروژه های بزرگ تری بسازد، استفاده از Drag &Drop  بسیار پیچیده و و مدیریت آن دشوار می شود.
  • قابلیت های پیشرفته زیادی در گیم میکر وجود دارد که هیچ آیکانی برای آن در قسمت Drag & Drop در نظر نگرفته اند و بنابراین اگر بخواهید صرفا از Drag & Drop استفاده کنید از این قابلیت ها محروم خواهید شد.
  • استفاده از کدنویسی قابلیت ها و انعطاف بسیار زیادی را در مقایسه با Drag & Drop در اختیار بازی ساز قرار می دهد.

بنابراین و به علتهای دیگر، به هیچ وجه استفاده از سیستم Drag & Drop  را به علاقه مندان بازی سازی توصیه نمی کنیم و مثل همیشه، یگانه راه بازیساز شدن را فراگیری اصول وروش های کدنویسی می دانیم.بنابراین در تمام طول دوره آموزش کدنویسی در گیم میکر، از میان تمامی آیکان هایی که در لیست Drag & Drop قرار داده شده تنها به یکی از آنها نیازمندیم:

کدنویسی در گیم میکر

از لیست سربرگ های Drag & Drop به سربرگ Control بروید. سپس روی اولین آیکان زیر مجموعه Code کلیک کرده و آن را به محیط Actions کشانده و در آنجا رها کنید. این اکشن، محیطی را برای تایپ کردن کد در اختیار ما قرار می دهد.

همانطور که می بینید، با اضافه کردن اکشن اجرای کد، عنوان این اکشن(Execute a piece ofcode به معنای اجرای یک قطعه کد) به صورت تصویر پایین به لیست Actions اضافه شده و همچنین محیط خالی تایپ کد نیز به طورخودکار باز می شود.

کدنویسی در گیم میکر

فرض کنید تصمیم داریم کدی بنویسیم که با اجرای آن، آبجکت توپ به مختصات مبدا مختصات روم منتقل شود. همان طور که در درس 7 گفته شد، سیستم جدول مختصات در گیم میکر تفاوت هایی با سیستم های مختصات معمول دارد و یکی از این تفاوت ها این است که مبدا آن در گوشه بالا و سمت چپ روم قرار می گیرد. بنابراین و بر طبق مطالب آموزشی گفته شده در همان درس، گوشه بالای سمت چپ روم دارای طول و عرض 0 خواهد بود.(x=0 و y=0) در نتیجه در محیط کدنویسی تایپ می کنیم:

x = 0;

y = 0;

این موضوع به این معناست که در رخداد Create این آبجکت ( یعنی به محض ایجاد آن در فضای روم بازی) مختصات طولی یا x آن و همچنین مختصات عرضی آن یا y، برابر با 0 قرار بگیرد. در نتیجه زمانی که شما بازی را اجرا می کنید، چون آبجکت obj_ball در روم بازی حضوردارد، رخداد و کدهای آن نیز نیز اجرا شده و در نتیجه،آبجکت به نقطه مبدا مختصات روم یعنی نقطه (0,0 ) منتقل می شود.

کدنویسی در گیم میکر

کار ما با این بخش هم در حال حاضر تمام است و می توانیم با کلیک بر علامت تیک سبز رنگ، محیط کدنویسی را ذخیره سازی کرده و ببندید.

پروژه خود را تست کنیم!

یکی از مهمترین قابلیت های گیم میکر ویژگی cross_platform آن است. یعنی بازی ساخته شده با این نرم افزار قابلیت تبدیل شدن به نسخه های قابل اجرا روی تعداد متنوعی از سیستم عامل ها را دارد. به این معنا که شما می توانید با ساختن بازی خود در محیط این نرم افزار ، نسخه های مختلفی مخصوص سیستم عامل Windows، Mac،HTML و حتی سیستم عامل های مخصوص تلفن های همراه Android و iOS و دیگر سیستم عامل ها را تولید کنید. بنابراین، برای تست پروژه ای که تا کنون ساخته ایم لازم است از قرار داشتن گیم میکر روی حالت مخصوص ویندوز اطمینان کنیم، تا بتوانیم آن را بر روی رایانه شخصی مان تست کنیم. برای این منظور در بخش میانی قسمت بالای محیط نرم افزار دقت کنید که مانند تصویر زیر درمقابل عنوان Target گزینه windows در حالت انتخاب قرار داشته باشید:

کدنویسی در گیم میکر

حالا بر روی آیکان فلش سبز رنگ موجود در نوار ابزار بازی کلیک کنید تا بازی شما اجرا شود.

کدنویسی در گیم میکر

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

کدنویسی در گیم میکر

کمی توضیح بیشتر

اگر به یاد بیاورید در درس اول گفتیم که در هنگام کدنویسی در گیم میکر سه ابزار بسیار مهم در اختیار برنامه نویس قرار دارد: ثابت، متغیر وتابع؛ در تعریف متغیر ها گفتیم که: متغیرها عبارت هایی هستند که بر خلاف ثابت ها می توانند مقادیر متفاوتی داشته باشند. عبارت های x و y  به عنوان مختصات مکانی آبجکت  نیز از نوع متغیر هستند؛ یعنی مفاهیمی که می توانند مقادیر متفاوتی داشته باشند. به عبارت دیگر، آبجکت obj_ball در این درس، می تواند در مکان های مختلفی حضور داشته باشد و همان طورکه می دانید مقدار x و y در هر نقطه از روم با سایر نقاط آن متفاوت است. درنتیجه کدنویس می تواند این متغیرها را برابر با مقادیر مختلقی قرار بدهد ودرنتیجه مکان آبجکت را تغییر بدهد. به همین ترتیب سایر متغیرها ها نیز به همین صورت قابل استفاده اند. مثلا می توان از متغیر فرضی رنگ نیز استفاده کرد و آن را برابر با مقادیر مختلفی مثل: آبی، سبز، زرد، قرمز و. … قرار داد. در درس های آینده با متغیرها و همچنین سایر ابزارهای کدنویسی در گیم میکر بیشتر آشنا می شویم.

امیدواریم مطالب این درس طولانی برای شما مفید بوده باشد. .در صورتی که سوال یا اشکالی درباره آن دارید مثل همیشه می توانید از بخش نظرات در پایین صفحه مطرح کنید. همچنین می توانید برای بحث با دیگر کاربران کلاس بازی سازی درباره این موضوع و سایر موضوعات از بخش Forum استفاده کنید.

6 دیدگاه ها

  1. () گفت:

    مثل همیشه اموزش عالی بود.ممنون

  2. علی گفت:

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

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

پاسخ دهید

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