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

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

(:آشنایی با رخدادها)

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

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

 

رخدادها

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

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

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

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

رخداد Create:

این رخداد یکی از پرکاربردترین رخدادهای مورد استفاده برای تمامی آبجکت های یک بازی است. رخداد Create دقیقا در لحظه تولید شدن یک آبجکت در صحنه بازی اتفاق می افتد. مثلا فرض کنید در یکی بازی در سبک shooter دشمنانی در صحنه بازی ایجاد می شوند که به محض تولید، شروع به شلیک کردن می کنند. واضح است که کد مربوط به شلیک کردن این آبجکت ها باید در رخداد Create آنها نوشته شود.

رخداد Destroy:

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

رخداد Alarm

یکی از روش های مدیریت زمان در بازی های ساخته شده با گیم میکر استفاده از تایمرها یا اصطلاحا آلارم ها است. به این صورت که کدنویس یک آلارم را تعریف و آن را برای تایم خاصی در آینده تنظیم می کند. برای فراخوانی این آلارم و اجرای کدهای مورد نظر، باید از رخداد Alarm استفاده شود. با انتخاب این رخداد می بینید که گیم میکر 12 آلارم را به صورت پیش فرض در اختیار کدنویس قرار داده است که با اعداد 0 تا 11 مشخص شده اند.

رخداد Step:

مانند آنچه که درباره رخداد Create گفته شد، رخداد Step نیز یکی از پرکاربردترین رخدادهای حاضر در گیم میکر است و می توان به راحتی ادعا کرد که، در تمام بازی های ساخته شده با گیم میکر، بیشترین استفاده را در مقایسه با سایر رخدادها داراست.

همان طور که در درس ششم گفته شد ، واحد  سنجش زمان در گیم میکر  step (استپ) است و می توان آن را معادل با مفهوم فریم در انیمیشن دانست. یعنی زمانی که گفته می شود، سرعت اجرای یک بازی 30 استپ است، به این معنی است که در هر ثانیه از بازی 30 استپ از آن اجرا می شود. در هنگام کدنویسی در گیم میکر، عمل هایی که قرار است به طور دائمی و همیشگی اجرا شوند( یعنی در تمام استپ های بازی) باید در مقابل رخداد Step نوشته شوند. مثلا تصور کنید در بازی فرضی که در بالا به آن اشاره کردیم، آبجکتی مانند یک سفینه فضایی وجود دارد که به عنوان یکی از نیروهای دشمن دائما در حال چرخیدن است. برای پیاده سازی رفتار چرخشی این آبجکت، باید کد مربوط به چرخیدن آن را  درمقابل رخداد Step بنویسیم.

با انتخاب این رخداد مشاهده می کنید که سه نوع رخداد step وجود دارد که درمورد تفاوت آنها با هم در درس های آینده صحبت خواهیم کرد.

رخداد Collision

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

رخدادهای Keyboard ، Key Press و Key Release

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

کارکرد این دسته رخدادها از سایر رخدادهای موجود در گیم میکر واضح تر است. همانطور که می دانید بخش عمده کنترل های موجود در بازی های مخصوص سیستم عامل ویندوز از طریق کلیدهای کیبورد است که بازیکن در لحظات مختلف بازی می فشارد. با استفاده از این رخدادها، عملی را که باید با فشار دادن هریک از کلیدهای کیبورد در بازی اتفاق بیافتد را تعریف می کنیم. مثلا در بازی فرضی ما زمانی که بازیکن کلید space رامی فشارد، کاراکتر اصلی بازی گلوله شلیک می کند.

این سه دسته رخداد تفاوت مهم وکاربردی با یکدیگر دارند که در درس های آینده به آن می پردازیم.

رخداد Mouse

همانند رخدادهای دسته کیبورد، این رخدادها نیز وظیفه دریافت ورودی از سوی بازیکن را عهده دار هستند. با این تفاوت که به جای کلیدهای متنوع کیبورد، کنترل های مربوط به کلیدهای راست و چپ و میانه ماوس را به عهده دارند.

رخداد Other

مجموعه ای از رخدادهای بسیار مهم و مفید گیم میکر در قالب رخداد Other قرار داده شده است. مثلا:

زمانی که بازی شروع می شود و یا پایان می یابد،

زمانی که آبجکت از صحنه بازی یا کادر دوربین خارج می شود،

زمانی که انیمیشن آبجکت به آخرین فریم می رسد،

زمانی که آبجکت تمام جان های خود را در بازی از دست می دهد و

……

در درس های آینده هر کدام از این رخدادها را استفاده کرده ودرباره آن توضیح بیشتری می دهیم.

رخداد Draw

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

رخداد Asynchronous

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

 

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

 

 

 

2 دیدگاه ها

  1. امیررضا گفت:

    سلام
    خیلی ممنون از آموزش و راهنمایی های خوبتون.
    منتظر آموزش های بعدی شما در زمینه کد نویسی هستیم.

  2. تشکر بابت نظر خوب تون. حتما مطالب بهتر و بیشتری رو تهیه می کنیم.

پاسخ دهید

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