آموزش مسیریابی حرکت – قسمت اول

آموزش مسیریابی حرکت – قسمت اول

در بسیاری از بازی ها شما می خواهید دشمنان یا سایر کاراکتر ها در محیط  بازی حرکت هوشمندانه داشته باشند. یعنی نه تنها در حین حرکت مدام به موانع اطراف برخورد نکنند، بلکه از موانع پرهیز کنند، و مسیردرست به سمت مقصد را شناسایی کنند؛ به پیاده سازی این نوع حرکت در بازیسازی  Motion Planning یا طراحی حرکت گفته می شود.
یکی از بهترین نمونه ها برای این حرکت بازی Clash of Clans است. همانطور که حتما توجه کرده اید نیروها در زمان حمله به یک Clan برای رسیدن به هدف مورد نظر خود مسیرهای خاص و درست را از میان دیوارها  بر می گزینند.

انجین Game Maker Studio چندین سری تابع در این زمینه دارد که هرکدام دارای نقاط مثبت و منفی خاص خود هستند. اما در اینجا ما تصمیم داریم شما را با  یکی از بهترین آنها که از یک تکنیک خاص بهره می برد آشنا کنیم. به این تکنیک Grid به معنای شبکه بندی گفته می شود. این روش در مسیریابی بسیار موفق عمل می کند و کوتاهترین راه را با کمترین میزان خطا برای رسیدن به مقصد پیدا می کند.

ایده کلی تکنیک Grid :
اولین مرحله این است که یک شبکه بندی برای روم بازی ایجاد می کنیم. اندازه سلول های  این شبکه بندی بایستی براساس ابعاد روم  باشد.این موضوع باعث دقت بیشتر و خطای کمتر در مسیریابی می شود. مثلا اگر اندازه روم بازی شما 400 در 200 است، اندازه شبکه بندی 40 ، 20 و یا 10 و… برای شما مناسب است. البته همه چیز به این بستگی دارد که شما به چه مقدار دقت نیاز دارید و چه مقدار فشار به CPU برای بازی شما قابل قبول است.

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

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

 

پاسخ دهید

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