اشتباهات رایج در استفاده از ایونت‌های کانستراکت 2

استفاده‌ی غیر ضروری از ساب‌ایونت

ساب‌ایونت‌ها برای تعریف لوجیک[1] پیشرفته‌تری برای بازی عالی هستند. امّا معمولاً زیاد می‌بینیم که بی‌خودی از آن استفاده می‌شود. ساب ایونت‌ها، از بین اشیائی که ایونت والدشان[2] پیک ‍(Pick) کرده است، تعدادی را پیک می‌کنند، ساب‌ایونت معمولاً می‌تواند به راحتی با ایونت والد خود ترکیب شود. حالا مثالی را می‌بینیم:

استفاده‌ی نابجا از subevent

در ایونت بالا، نیازی نیست که کاندیشن Player.Count = 0 را در یک ساب‌ایونت قرار دهید. اگر هر دو را در یک ایونت قرار دهید نتیجه هیچ فرقی نمی‌کند، مثل زیر:

ترکیب subevent با والد

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

از آن‌جایی‌که ساب‌ایونت‌ها به سازمان‌دهی ایونت‌ها کمک می‌کنند، عدّه‌ای از آن‌ها استفاده می‌کنند.[3] این کار خوبیست، ولی توصیه می‌کنیم ترجیحاً از همین روش آسان خواندن استفاده کنید، و بعداً در صورت لزوم، از ساب‌ایونت‌ها برای سازمان‌دهی مجدّد استفاده کنید. تا آن موقع چرا از حالتی استفاده نکنید که خواندنش راحت‌تر است؟ البته خیلی وقت‌ها استفاده از ساب‌ایونت واقعاً ضروری است، مثل مواقعی که می‌خواهید کاندیشن‌های تکراری را حذف کنید یا موقعی که می‌خواهید از اکشن‌هایی استفاده کنید که در ایونتی دیگر استفاده کرده‌اید. در این صورت استفاده از ساب‌ایونت مشکلی ندارد؛ فقط زمانی استفاده از ساب‌ایونت مشکل دارد که اگر از آن استفاده نکنید بازهم نتیجه فرقی نداشته‌باشد، در این حالت است که ما توصیه می‌کنیم از آن استفاده نکنید.

یکی از رایج‌ترین مثال‌های استفاده‌ی بی‌جا از ساب‌ایونت، در حلقه‌های تودرتو است، مثل زیر:

استفاده‌ی اشتباه از subevent در حلقه‌ها

این اشتباه از مقایسه‌ی حلقه‌های کانستراکت با زبان‌های برنامه‌نویسی سنّتی ناشی می‌شود، که معمولاً در آن‌ها برای نوشتن حلقه‌های تودرتو، حلقه‌ی داخلی را درون حلقه‌ی خارجی می‌نویسند. ولی در کانستراکت 2 این کار لازم نیست، می‌توان حلقه‌های تودرتو را فقط در یک ایونت قرار داد، نتیجه هم فرقی نمی‌کند.

ترکیب حلقه‌های تودرتو

نکته‌ی کوچک دیگری نیز که باید مد نظر قرار داد این است که کانستراکت 2 گاهی اوقات نمی‌تواند طوری با ساب‌ایونت‌ها رفتار کند که با ایونت‌های معمولی رفتار می‌کند. در مواردی نادر، عدم استفاده از ساب‌ایونت‌های اضافی می‌تواند عملکرد بازی را بهبود بخشد، مخصوصاً وقتی از حلقه‌هایی استفاده می‌کنید که بسیار هم تکرار می‌شوند. با این حال، باز هم نگرانی اصلی ما خوانایی ایونت‌شیت است.

[1] لوجیک (Logic): منطق، شرط‌ها و عمل‌هایی که در بازی برنامه‌ریزی می‌شوند.

[2] ایونت والد (Parent event): به ایونتی گفته می‌شود که ساب ایونت مورد نظر زیرمجموعه‌ای از آن ایونت است.

[3] زیرا در کنار ایونت‌های والد یک علامت «-» وجود دارد که با کلیک روی آن می‌توان ساب‌ایونت را موقّتاً پنهان کرد.

سؤالات فنی خود را فقط در انجمن بپرسید. در غیر این صورت پاسخ داده نخواهد شد.
۴ نظر

افزودن دیدگاه

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

تمامی حقوق برای مرجع تخصصی کانستراکت محفوظ است.