گلولهها در بازیها چگونه کار میکنند؟
از نظر ظاهری، گلولههایی که در بازیها شلیک میشوند اغلب شبیه هم به نظر میرسند؛ مخصوصا در بازی های شوتر اول شخص. ولی از نظر فیزیکی، چگونه یک جسم پرتاب شونده به هدف برخورد میکند؟ دقیقا چه سیستمی در کار است که نتیجهی آن، یک بازی شوتر را به شما ارائه میدهد؟ آیا جسم پرتاب شوندهی مذکور، واقعا یک جسم مجازی است که با سرعت زیاد به سمت هدف در حال حرکت است یا چیز دیگری است؟ این بار میخواهیم این سوال را مطرح کنیم که گلولهها در بازیها چگونه کار میکنند؟
همه دوست دارند که هیجان زده شوند. بعضی ها چتر بازی میکنند، بعضی ها به کوهنوردی میروند و تعداد زیادی از مردم که آرزوی مرگ ندارند، به انجام بازیهای ویدئویی میپردازند. چیزی که راجع به بازیها بسیار جالب است، این است که میتوانید لحظاتی که هیچ وقت شانس دیدن آنها یا علاقهای به دیدن آنها در دنیای واقعی ندارید را تجربه کنید و ببینید که انجام آن کار چگونه است. البته تمام این لحظات واقعی و دقیق نیستند، چون معلوم است که طوری طراحی شدهاند که نسخهای جذابتر از حالت واقعی را ارائه دهند. مثلا افرادی که در ارتش هستند برای چندین ماه تمرین میکنند و اتفاقات را میسنجند؛ نه این که مستقیما یک اسلحه به دست بگیرند و به میدان جنگ بروند.
بازیها اغلب برای دلایل مختلفی خشن هستند که صحبت دربارهی آن، یک مطلب جداگانه را میطلبد. ولی در مورد یک بازی شوتر، این موضوع برای این است که بازیکن مجبور به حساس بودن شود. برای انجام شدن این امر نیز تعداد بسیار زیادی سیستم در کار است تا چیزهای مختلف را شبیه سازی کنند، چون یک بازی شوتر بدون شبیه سازی گلوله یا هر شیء پرتاب شوندهای، یک بازی شوتر نیست. برای بررسی و درک کامل این موضوع، بیایید تا به زمان بازیهایی مثل Counter Strike اصلی یا Goldeneye 007 برگردیم که بسیار سرگرم کنندهاند ولی نسبت به استانداردهای امروزی، قدیمی و کهنه به نظر میرسند. این بازی ها از هندسه (Geometry) برای تمام اشیا استفاده میکردند. یعنی کارکترها، Power Upها و دیوارها، همه توسط هندسه ساخته شدهاند. در این روش، این امکان وجود داشت که برای تعیین کردن این که چیزی قرار است به چیز دیگری بخورد، از محاسبات ریاضی استفاده کرد. در این بازیهای قدیمی و بسیاری از بازیهای جدیدی که واقعی بودن در اولویت آنها نیست، از پروسهای با نام Hitscan استفاده میشود.
Hitscan نسخهی مورد استفادهی سازندگان بازی از روش پرتو اندازی “Ray Casting” است که یک اصطلاح در رندر کردن است و یک پرتو ایجاد می کند. این پرتو می تواند برای همیشه به پیشروی ادامه دهد، ولی اگر به چیزی برخورد کند، یک مقدار برمیگرداند و آن مقدار جایی است که گلوله به آن اصابت میکند. این روش تقریبا شبیه یک لیزر عمل میکند و چون ما اسلحه های لیزری نداریم، پس به طور کامل واقع گرایانه نیست. با گفتن این موضوع، داشتن انیمیشنی که اینطور به نظرتان میرساند که شما یک گلوله شلیک کردید و این که نقطهای که به آن شلیک کردید همانند یک نقطهی برخورد عمل کند، حالا چه روی یک دیوار باشد یا روی یک کارکتر، کاملا عادی است و درست به نظر میرسد. این دقیقا همان کاری است که شوترهای اول شخص، آن را مخصوصا در دوران به اوج رسیدن محبوبیتشان انجام دادند. ولی اینجاست که به محدودیتهای ذاتی این روش برخورد میکنیم. اولا این غیرممکن است که بتوانید گلولهی شلیک شده را دفع کرده یا به آن جاخالی دهید. اگر حریفتان درست هدفگیری کند و ماشه را بکشد، دیگر کار تمام است. همین و بس! زمانی در میانهی پروسهی کشیدن ماشه و مورد هدف قرار گرفتن وجود ندارد و حتی وضعیتهای آب و هوایی نیز نمی توانند آن را تغییر دهند. این روش شبیه یک کلید دیجیتالی روشن و خاموش کردن است؛ یا گلوله برخورد میکند یا نمیکند و فاکتور دیگری وجود ندارد.
اگر شما در زمان حال، عنوانی با استفاده از این روش شلیک عرضه کنید و نتیجه کارتان خوب از آب در بیاید، چیزی است که اهمیت چندان زیادی برای مخاطب ندارد. ولی آیا این موضوع به این معنی است که زمان خوبی برای متوقف کردن توسعهی آن است؟ مسلما نه! چون برای این که سایر وضعیتها را در یک بازی شوتر مهم کنیم و برای مثال یک عنوان شوتر هاردکور طراحی کنیم، شما باید یک گلوله داشته باشید که همانند یک دکمهی روشن و خاموش عمل نکند و بازهای وجود داشته باشد که گلوله به شما برخورد نکند. حالا چه با معجزهای یک بازیکن دیگر میان شما و گلوله قرار بگیرد، باد شدیدی در حال وزیدن باشد یا این که اسلحه به خاطر استفادهی زیاد، دقت کمتری در هر بار شلیک داشته باشد (دقیقا همان ویژگی Weapon Degradation در FarCry 2). پس در این صورت باید سیستمهای بیشتری نسبت به ایجاد یک پرتوی ساده و تعیین کردن محل برخورد، و این که در هنگام برخورد چه چیزی آنجاست، مورد استفاده قرار گیرد.
برای انجام این کار، بازیها باید یک جسم پرتاب شوندهی واقعی داشته باشند. یعنی سیستمی که در آن، جسم به صورت مجازی طراحی شده و واقعا در جریان بازی وجود دارد. اینجا گلوله از هندسه بهره میبرد، همانند یک جسم در محیط رفتار میکند و درست همانند سایر اجسام، تحت تاثیر تمام سیستمهای بازی قرار میگیرد. روش پرتو اندازی هم ممکن است که به کار گرفته شود؛ چون بعضی اوقات خود گلوله یک پرتو ایجاد میکند که به ازای هر فریم، یک مقدار برگردانده و همچنین یک نقطه برخورد جدید نیز تعریف میکند. روش دیگری که می تواند نقطه برخورد را تعیین کند، از طریق Multi Sampling انجام میشود که در بسیاری از سیستمهای دیگر و یا اگر با برنامههای گرافیکی سروکار داشته باشید، با نام Interpolation هم شناخته میشود. در این روش هنگامی که گلوله از فریم به فریم در حال حرکت است، تعیین میکند که قرار است در فریم بعدی به کجا برود و در بازهی بین دو فریم نیز، تعیین میکند که آیا یک برخورد صورت میگیرد یا نه. اگر برخوردی در کار باشد که همه چیز تمام است. ولی اگر برخوردی صورت نگیرد، مدام تعیین میکند که قرار است در فریم بعدی به کجا برود و این قضیه همین طور ادامه می یابد تا موقعی که زمان توقف فرا رسیده باشد.
این گلوله همچنین میتواند توسط عوامل دیگری نیز تحت تاثیر قرار گیرد. مثلا یک سیستم وزش باد در بازی وجود داشته باشد که بتواند گلوله را حتی به مقدار کمی از مسیرش منحرف کند. اگر این مورد مدنظر قرار گیرد، میزان واقع گرایی را بالاتر میبرد؛ چون شما را مجبور میکند که با دقت بیشتری هدفگیری کنید. این روش به هیچ عنوان در زمانی که پرتو اندازی به عنوان تنها روش محاسبهی محل برخورد محسوب میشد، امکان پذیر نبود ولی در سیسمتی که به شکل مداوم خودش را با پیشروی وضعیت و حتی به اندازه قسمتی از ثانیه بهروزرسانی می کند، سایر محاسبات نیز میتوانند به کار گرفته شوند. مثل وزش باد، یا این که جاذبه در یک سری مکانها و برخلاف شرایط معمولی روی زمین زیادتر است، یا در حال شلیک در یک محیط مغناطیسی هستید، یا این که گلولههایتان اصلا گلوله نیستند! مثلا پرتاب شوندههای مورد استفاده در Splatoon، حالت مایع دارند. برای همین، هیچ چیز در این بازی مانند گلولههای عادی رفتار نمیکند و به همین خاطر است که ساخت Splatoon در چندین دهه قبل امکانپذیر نبود. هرچند که شوترهای اول شخص آن زمان، نامی برای خودشان بدست آورده بودند و فقط یک بازی شوتر اول شخص بودن، سه بعدی بودن و داشتن یک تعامل رقابتی، واقعا شگفت انگیز بود.
ولی حالا که میدانید پروسههای پردازش یک شیء پرتاب شونده از کجا میآیند و تا چه حد پیشرفت کردهاند، احتمالا میتوانید حدسهایی راجع به این که در آینده به چه سمتی میروند، بزنید. مثلا یک سبک خاص از شوترها با محاسبات جدیدی که برای گلولهها و پرتاب شوندهها معرفی میشوند، بسیار واقع گرایانهتر شده و درجه سختی به مراتب بیشتری نسبت به سایر عناوین خواهند داشت. در بازیهای شوتر آینده، ما مجبوریم که فاکتورهای بسیاری را هنگام پیشروی در بازی مدنظر قرار دهیم و در همین زمان احتمالا باز هم شاهد بازیهایی خواهیم بود که از همان روش پرتو اندازی استفاده میکنند. چون که سلایق افراد با هم فرق میکند و همچنین بعضی اوقات، بازیهای قدیمی سرگرم کنندهتر هستند.
نظر شما در این باره چیست؟ آیا این مطلب توانست که اطلاعات مفیدی به شما ارائه کند؟ همچنین شما به عناوین شوتر واقع گرایانه بیشتر علاقه دارید یا عناوین شوتر ساده؟ پس منتظر نظرات شما هستیم و امیدواریم که از مطالعه این مطلب لذت برده باشید.
پرهام آقاخانی