شاتل‌لند - گیم‌سنتر
فروشگاه گیفت کارت
 
فروشگاه اورجینال کی فروش محصولات MSI
صندلی های گیمینگ dxracer فروش کنسول‌‌های بازی و لوازم جانبی
گلوله‌ها در بازی‌ها چگونه کار می‌کنند؟

گلوله‌ها در بازی‌ها چگونه کار می‌کنند؟

"ترجمه شده از وبسایت GameRanx"

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

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

بازی‌ها اغلب برای دلایل مختلفی خشن هستند که صحبت درباره‌ی آن، یک مطلب جداگانه را می‌طلبد. ولی در مورد یک بازی شوتر، این موضوع برای این است که بازیکن مجبور به حساس بودن شود. برای انجام شدن این امر نیز تعداد بسیار زیادی سیستم در کار است تا چیز‌های مختلف را شبیه سازی کنند، چون یک بازی شوتر بدون شبیه سازی گلوله یا هر شیء پرتاب شونده‌ای، یک بازی شوتر نیست. برای بررسی و درک کامل این موضوع، بیایید تا به زمان بازی‌هایی مثل Counter Strike اصلی یا Goldeneye 007 برگردیم که بسیار سرگرم کننده‌اند ولی نسبت به استاندارد‌های امروزی، قدیمی و کهنه به نظر می‌رسند. این بازی ها از هندسه (Geometry) برای تمام اشیا استفاده می‌کردند. یعنی کارکتر‌ها، Power Up‌ها و دیوار‌ها، همه توسط هندسه ساخته شده‌اند. در این روش، این امکان وجود داشت که برای تعیین کردن این که چیزی قرار است به چیز دیگری بخورد، از محاسبات ریاضی استفاده کرد. در این بازی‌های قدیمی و بسیاری از بازی‌های جدیدی که واقعی بودن در اولویت آنها نیست، از پروسه‌ای با نام Hitscan استفاده می‌شود.

Hitscan نسخه‌ی مورد استفاده‌ی سازندگان بازی از روش پرتو اندازی "Ray Casting" است که یک اصطلاح در رندر کردن است و یک پرتو ایجاد می کند. این پرتو می تواند برای همیشه به پیشروی ادامه دهد، ولی اگر به چیزی برخورد کند، یک مقدار برمی‌گرداند و آن مقدار جایی است که گلوله به آن اصابت می‌کند. این روش تقریبا شبیه یک لیزر عمل می‌کند و چون ما اسلحه های لیزری نداریم، پس به طور کامل واقع گرایانه نیست. با گفتن این موضوع، داشتن انیمیشنی که اینطور به نظرتان می‌رساند که شما یک گلوله شلیک کردید و این که نقطه‌ای که به آن شلیک کردید همانند یک نقطه‌ی برخورد عمل کند، حالا چه روی یک دیوار باشد یا روی یک کارکتر، کاملا عادی است و درست به نظر می‌رسد. این دقیقا همان کاری است که شوترهای اول شخص، آن را مخصوصا در دوران به اوج رسیدن محبوبیتشان انجام دادند. ولی اینجاست که به محدودیت‌های ذاتی این روش برخورد می‌کنیم. اولا این غیرممکن است که بتوانید گلوله‌ی شلیک شده را دفع کرده یا به آن جاخالی دهید. اگر حریفتان درست هدفگیری کند و ماشه را بکشد، دیگر کار تمام است. همین و بس! زمانی در میانه‌ی پروسه‌ی کشیدن ماشه و مورد هدف قرار گرفتن وجود ندارد و حتی وضعیت‌های آب و هوایی نیز نمی توانند آن را تغییر دهند. این روش شبیه یک کلید دیجیتالی روشن و خاموش کردن است؛ یا گلوله برخورد می‌کند یا نمی‌کند و فاکتور دیگری وجود ندارد.

اگر شما در زمان حال، عنوانی با استفاده از این روش شلیک عرضه کنید و نتیجه کارتان خوب از آب در بیاید، چیزی است که اهمیت چندان زیادی برای مخاطب ندارد. ولی آیا این موضوع به این معنی است که زمان خوبی برای متوقف کردن توسعه‌ی آن است؟ مسلما نه! چون برای این که سایر وضعیت‌ها را در یک بازی شوتر مهم کنیم و برای مثال یک عنوان شوتر هاردکور طراحی کنیم، شما باید یک گلوله داشته باشید که همانند یک دکمه‌ی روشن و خاموش عمل نکند و بازه‌ای وجود داشته باشد که گلوله به شما برخورد نکند. حالا چه با معجزه‌ای یک بازیکن دیگر میان شما و گلوله قرار بگیرد، باد شدیدی در حال وزیدن باشد یا این که اسلحه به خاطر استفاده‌ی زیاد، دقت کمتری در هر بار شلیک داشته باشد (دقیقا همان ویژگی Weapon Degradation در FarCry 2). پس در این صورت باید سیستم‌های بیشتری نسبت به ایجاد یک پرتوی ساده و تعیین کردن محل برخورد، و این که در هنگام برخورد چه چیزی آنجاست، مورد استفاده قرار گیرد.

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

این گلوله همچنین می‌تواند توسط عوامل دیگری نیز تحت تاثیر قرار گیرد. مثلا یک سیستم وزش باد در بازی وجود داشته باشد که بتواند گلوله را حتی به مقدار کمی از مسیرش منحرف کند. اگر این مورد مدنظر قرار گیرد، میزان واقع گرایی را بالاتر می‌برد؛ چون شما را مجبور می‌کند که با دقت بیشتری هدف‌گیری کنید. این روش به هیچ عنوان در زمانی که پرتو اندازی به عنوان تنها روش محاسبه‌ی محل برخورد محسوب می‌شد، امکان پذیر نبود ولی در سیسمتی که به شکل مداوم خودش را با پیشروی وضعیت و حتی به اندازه قسمتی از ثانیه به‌روزرسانی می کند، سایر محاسبات نیز می‌توانند به کار گرفته شوند. مثل وزش باد، یا این که جاذبه در یک سری مکان‌ها و برخلاف شرایط معمولی روی زمین زیادتر است، یا در حال شلیک در یک محیط مغناطیسی هستید، یا این که گلوله‌هایتان اصلا گلوله نیستند! مثلا پرتاب شونده‌های مورد استفاده در Splatoon، حالت مایع دارند. برای همین، هیچ چیز در این بازی مانند گلوله‌های عادی رفتار نمی‌کند و به همین خاطر است که ساخت Splatoon در چندین دهه قبل امکان‌پذیر نبود. هرچند که شوتر‌های اول شخص آن زمان، نامی برای خودشان بدست آورده بودند و فقط یک بازی شوتر اول شخص بودن، سه بعدی بودن و داشتن یک تعامل رقابتی، واقعا شگفت انگیز بود.

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

نظر شما در این باره چیست؟ آیا این مطلب توانست که اطلاعات مفیدی به شما ارائه کند؟ همچنین شما به عناوین شوتر واقع گرایانه بیشتر علاقه دارید یا عناوین شوتر ساده؟ پس منتظر نظرات شما هستیم و امیدواریم که از مطالعه این مطلب لذت برده باشید.

مترجم: پرهام آقاخانی

نوشته شده در: 27 آبان 1396
دسته: مطلب متفرقه، Cyberpunk 2077
این ویدئوها رو دیده‌اید؟
  • Cyberpunk 2077
 

آموزش آنریل انجین 4آموزش آنریل انجین 4

آموزش یونیتی سه بعدیآموزش یونیتی سه بعدی

آموزش یونیتی دو بعدیآموزش یونیتی دو بعدی

آموزش سی شارپ در یونیتیآموزش سی شارپ در یونیتی

آموزش واقعیت مجازی در یونیتیآموزش واقعیت مجازی در یونیتی

آموزش گیم میکر استودیو آموزش گیم میکر استودیو GameMaker
 
 
ثبت دیدگاه
 
جهت ثبت دیدگاه باید سه روز از ثبت نام شما گذشته باشد.
 

مقالبه جالب و عالیی بود
دست شما درد نکنه
مقاله جالب و جذابی بود ممنون از این دست مقالات لطفا بیشتر قرار بدید مقاله تولد وان ایکس ام عالی بود
مقاله جالبی بود ممنون اقای اقاخانی
خيلى مقاله جالب و مفيدى بود . ممنون بابت ترجمه .
از اينجور مقاله ها بيشتر منتشر كنيد .
با تشكر
تشکر بابت این مقاله مفید. سوالات زیادی در ذهن پریشانم بود در این مورد که الان به پاسخ همشون رسیدم. و همش رو مدیون یه نفرم. آقای آقاخانی گل گلاب. دمت گرم بابت این مقاله عالی
خیلی جالب بود، ممنون بابت ترجمه و انتخاب متفاوت و مفیدتون.
فقط یک سوالی برای من بوجود اومد.
مثلا همون CS 1.6 که به عنوان یک بازی شوتر که از سیستم RayCasting استفاده می‌کنه نام برده شد، بجز گلوله آبجکت‌های پرتاب شونده‌ی دیگه‌ای مثل نارنجک داره. طبیعتا نارنجک‌های کانتر از سیستم RayCasting استفاده نمی‌کنن. چون جدای از انیمیشن طی کردن مسیر پرتابی که براشون تعریف شده و کمانه کردنشون حین برخورد به آبجکت‌های دیگه، امکان جاخالی دادن یا اصابت با یک متحرک رندوم و... براشون وجود داره. حتی همونطور که همتون در جریان باگ معروف دیوار هستید، با پرتاب نارنجک (به عنوان یک شی پرتاب‌شونده) به سمت نقاط و محدوده‌های مشخصی از مپ‌های بازی، نارنجک مسیری طولانی تر از چیزی که براش تعریف شده طی می‌کنه! طبیعیه که اگه استفاده‌ای از سیستم RayCasting در کار بود به محض رسیدن نارنجک به نقطه‌ی هدف گیری شده (طبیعتا با در نظر گرفتن Range و زمان قبل از انفجاری که براش تعریف شده) نارنجک باید منفجر می‌شد. (اصلا اگه محاسبات ریاضی پرتوی مورد نظر امانی برای وجود فاصله زمانی پرتاب تا هدف رو بده :دی نارنجک باید تو دست گیمر منفجر بشه!)
تکلیف این چیه این وسط اگه تنها تکنولوژی در دسترس اون زمان سیستم پرتواندازی بوده؟ :دی
مقاله در مورد کانتر استرایک 1.6 صحبت نمی کنه، بلکه منظور کانتر استرایک 1.0 هست. در مورد موضوعی هم که مطرح کردین، تمرکز مقاله روی گلوله ها بوده و نه نارنجک ها. برای همین چیزی در مورد نارنجک ها گفته نشده چون طرز کار این دو کاملا با هم فرق می کنه.
نارنجک ها یه سری شیء سنگین و تایمردار هستن که به میزان زیاد در جریان بازی استفاده نمیشن. بنابراین خیلی راحت می شد که از محاسبات ریاضی برای تعیین محل برخورد و انفجارشون استفاده کرد. ولی نمی شد که از همین روش برای گلوله هایی که کاربر مداوما در حال شلیکشون هست استفاده کرد، چون اینطوری نه تنها هر گلوله باید به صورت فیزیکی در جریان بازی شبیه سازی می شد، بلکه تک تک اونا هم باید با برخورد به عوامل محیطی واکنش نشون می دادن. حالا جدا از این که این کار برای سازنده واقعا سخت، وقت گیر و هزینه بر بوده، مقدار فشار بیشتری رو هم بر روی سیستم و مخصوصا پردازنده وارد می کرده (کانتر 1.0 زمانی عرضه شده که پردازنده پنتیوم 3 داشته عرضه می شده و رم اکثر مردم 64 تا 128 مگابایت بوده!). بنابر این، باید از روشی استفاده می شد که راحت تر بشه اون رو به کار برد و حس شلیک کردن رو به خوبی منتقل کنه. برای همین روش پرتواندازی به کار گرفته شد.
CrytrOn@
سلام. مدت زیادی تشریف نداشتید اقا علی. بیشتر سر بزنید بهمون
مشاهده 1 پاسخ دیگر