رفتن به محتوای اصلی
کوهستان
توضیح کوهستانمعماری شبکهبازی آنلاین· 7 دقیقه مطالعه· در فناوری

چرا در شوترهای آنلاین پشت سنگر تیر می‌خورید؟ ریاضیات بازگردانی هیت‌باکس

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

به قلم آیدا امینی

به‌طور خلاصه

  1. سرورهای بازی چندنفره تاریخچه‌ای از موقعیت بازیکنان را نگهداری می‌کنند که معمولاً داده‌های یک ثانیه کامل را در بر می‌گیرد.
  2. هنگام شلیک، سرور هیت‌باکس‌ها را دقیقاً به همان میلی‌ثانیه‌ای که ماشه کشیده شده بازمی‌گرداند تا پینگ تیرانداز جبران شود.
  3. این رویکرد که به «اولویت دادن به تیرانداز» معروف است حس شلیک را عالی می‌کند، اما باعث می‌شود قربانی پس از رسیدن به سنگر به دلیل برخورد تیر با مکان گذشته‌اش بمیرد.

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

بازی‌های چندنفره در یک «اکنونِ» مشترک جریان ندارند؛ آن‌ها بده‌بستانی مداوم میان گذشته‌های متعارض هستند. وقتی بازیکنی کلیک می‌کند، فرمان باید از کابل‌های فیبر نوری عبور کند تا به سرور مرکزی برسد، سفری فیزیکی که بین ۲۰ تا ۱۰۰ میلی‌ثانیه زمان می‌برد.

اگر سرور صرفاً مکان هدف را در لحظه دریافت بسته ارزیابی می‌کرد، هر بازیکن ناچار بود برای جبران پینگ خود، جلوتر از هدفِ متحرک شلیک کند. بازی‌های شوتر مدرن برای حل این چالش از سازوکاری به نام «جبران لگ سمت سرور» (Lag Compensation) استفاده می‌کنند.

سرور تاریخچه‌ای موقت از مختصات دقیق تمام بازیکنان را با نرخ ده‌ها بار در ثانیه نگهداری می‌کند. هنگامی که فرمان شلیک به سرور می‌رسد، سرور میزان تأخیر تیرانداز را می‌خواند، به حافظه بافر خود رجوع می‌کند و وضعیت بازی را دقیقاً در همان برچسب زمانی استخراج می‌کند.[1]

توهم یک واقعیت مشترک

این سازوکار ستون فقرات بازی‌های آنلاین امروزی است و بساط سازوکار آزاردهنده اواخر دهه ۱۹۹۰ را برچید؛ دورانی که بازیکنان مجبور بودند شلیک‌هایشان را پیش‌بینی کنند. بدون این فناوری، بازیکنی با پینگ ۱۵ میلی‌ثانیه برتری فیزیکی دست‌نیافتنی بر بازیکنی با پینگ ۸۰ میلی‌ثانیه پیدا می‌کرد.[3]

اسناد توسعه‌دهندگان ولو (Valve) برای شبکه موتور سورس می‌گوید: «سرور مرجع نهایی وضعیت جهان بازی است، اما باید بپذیرد که تک‌تک کلاینت‌ها در گذشته زندگی می‌کنند.» کار سرور تحمیل حال حاضر نیست، بلکه حل تعارض میان گذشته‌های متناقض است.[1]

یک سرور ۱۲۸ تیک وضعیت کامل بازی را در هر ۷.۸ میلی‌ثانیه بازتعریف می‌کند.

یک سرور استاندارد ۱۲۸ تیک را در نظر بگیرید؛ معماری مورد استفاده رایت گیمز در بازی ولورنت (Valorant). سرور وضعیت بازی را ۱۲۸ بار در هر ثانیه بازتعریف می‌کند؛ یعنی هر ۷.۸ میلی‌ثانیه یک فریم جدید از واقعیت ساخته می‌شود.[2]

در هر یک از این بازه‌های ۷.۸ میلی‌ثانیه‌ای، سرور داده‌های دقیق مختصات هر ده بازیکن را در بافر موقت ذخیره می‌کند. این بافر معمولاً داده‌های یک ثانیه گذشته را نگه می‌دارد، هرچند بازی‌های رقابتی پنجره بازگردانی را به ۲۰۰ میلی‌ثانیه محدود می‌کنند تا از ناهنجاری‌های زمانی شدید جلوگیری شود.[1][3]

اگر بازیکنی با پینگ ۱۰۰ میلی‌ثانیه شلیک کند، سیستم او بلافاصله اثر گلوله را محلی رندر می‌کند. اما سرور تا زمانی که بسته اطلاعاتی سفر فیزیکی خود را در اینترنت به پایان نرساند — یعنی یک‌دهم ثانیه بعد — از این شلیک بی‌خبر است.

چگونه سرور زمان را به عقب می‌برد؟

هنگامی که بسته سرانجام می‌رسد، سرور دست به یک بازگشت زمانی محاسباتی می‌زند. سرور زمان دقیق شلیک را با کسر کردن تأخیر شبکه بازیکن از زمان فعلی سرور محاسبه می‌کند.[1]

سپس هیت‌باکس‌های ذخیره‌شده بازیکنان از همان برچسب زمانی خاص فراخوانی می‌شوند. برای کسری از میلی‌ثانیه، سرور نسخه‌ای شبح‌گون از نقشه را بازسازی می‌کند که در آن همه افراد دقیقاً در همان موقعیت ۱۰۰ میلی‌ثانیه قبل ایستاده‌اند.[3]

سرور پرتویی ریاضی از سلاح تیرانداز به سمت هدف ترسیم می‌کند. اگر این پرتو با هیت‌باکس پیشین برخورد کند، سرور اصابت تیر را ثبت می‌کند، وضعیت شبح را دور می‌اندازد و آسیب را به هدف در زمان حال اعمال می‌نماید.[1]

نرخ‌های تیک بالاتر فاصله زمانی پایه میان فرمان‌های بازیکن و ثبت در سرور را کاهش می‌دهند.

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

اما برای هدف، این مصالحه زمانی یک ناهمخوانی ادراکی زننده ایجاد می‌کند. از آنجا که سرور به گذشتهٔ تیرانداز اصالت می‌دهد، ناگزیر است اکنونِ هدف را بازنویسی کند.[3]

ریاضیات پشت مرگ در سنگر

این همان سازوکاری است که سبب می‌شود بازیکنان پس از سنگرگیری کامل پشت دیوار تیر بخورند. سیستم هدف حرکت به پشت سنگر را ثبت کرده و به سرور می‌فرستد، و سرور نیز وضعیت رسمی را به‌روزرسانی می‌کند.

در مانیتور هدف، او کاملاً پنهان شده است. اما مانیتور تیرانداز که ۸۰ میلی‌ثانیه از سرور عقب‌تر است، هدف را هنوز در فضای باز نشان می‌دهد؛ همین موضوع باعث می‌شود تیرانداز به هدف نمایان شلیک کرده و بسته اصابت را ارسال کند.[3]

وقتی سرور بسته دیرهنگام اصابت را دریافت می‌کند، طبق برنامه هیت‌باکس‌ها را ۸۰ میلی‌ثانیه به عقب برمی‌گرداند. هیت‌باکس گذشته هدف را همچنان در تیررس می‌بیند، تیر را معتبر می‌شمارد و پیام مرگ را برای هدف ارسال می‌کند.[1]

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

سرور برای راستی‌آزمایی نشانه شلیک‌کننده، وضعیت گذشته هدف را بازسازی می‌کند.

مهندسان رایت گیمز در تحلیل فنی نت‌کد ولورنت در سال ۲۰۲۰ نوشتند: «اگر این کار را نمی‌کردیم، باید به فاصله‌ای متناسب با پینگ خود، جلوتر از اهداف متحرک نشانه می‌گرفتید.» حس ناخوشایند مردن پشت سنگر، بهای ریاضیاتی است که برای تضمین نشستن تیرهای شلیک مستقیم (Hitscan) پرداخت می‌شود.[2]

چرا سازندگان حق را به شلیک‌کننده می‌دهند؟

مهندسان شبکه این فلسفه طراحی را «اولویت دادن به تیرانداز» (Favor the Shooter) می‌نامند. هرگاه دو کلاینت دو نسخه متناقض از واقعیت را گزارش کنند، سرور تقریباً همیشه حق را به بازیکنی می‌دهد که کنش تهاجمی را آغاز کرده است.[1][2]

این تصمیم ناشی از محدودیت فنی نیست، بلکه انتخابی مبتنی بر روان‌شناسی است. انسان‌ها نسبت به ثبت نشدن فرمان‌های خود به‌شدت حساسند، اما در کوران نبردهای پرسرعت در تشخیص موقعیت دقیق فضایی حریف چندان دقیق نیستند.[3]

اگر سازندگان حق را به هدف می‌دادند، بازیکن می‌توانست نشانه‌گیری بی‌نقصی انجام دهد، دقیقاً روی سر حریف کلیک کند و ببیند گلوله بی‌اثر رد می‌شود چون هدف در سرور حرکت کرده است. این پدیده «تیر شبح» به چشم شلیک‌کننده یک نقص ساختاری غیرقابل‌تحمل به نظر می‌رسد.[2]

در مقابل، مردن پشت سنگر هرچند ناعادلانه حس می‌شود، اما یک پیامد با تأخیر است نه خطای ورودی. هدف در واقع در گذشته در موقعیت اشتباه گیر افتاده و صرفاً خبر مرگ خود را با کمی تأخیر دریافت می‌کند.[3]

برای تعدیل افراطی‌ترین حالت‌های این رخداد، توسعه‌دهندگان سقف بازگردانی زمانی سرور را محدود می‌کنند. در بازی کانتراسترایک ۲ که در سال ۲۰۲۳ با معماری ساب‌تیک عرضه شد، ولو سقف جبران لگ را روی ۲۰۰ میلی‌ثانیه بسته است.[1]

اغلب شوترهای رقابتی سقف بازگردانی هیت‌باکس را روی ۲۰۰ میلی‌ثانیه مهار می‌کنند تا مانع ناهماهنگی شدید شوند.

مرزهای نهایی جبران لگ

اگر پینگ بازیکنی از مرز ۲۰۰ میلی‌ثانیه فراتر رود، سرور زمان را بیش از آن بازنمی‌گرداند. در این حالت بازیکن با پینگ بالا مجبور می‌شود تیرهایش را پیش‌بینی کند؛ تنبیهی برای اتصال ضعیف خودش به‌جای جریمه کردن دیگران.[1][3]

بازی‌های دیگر روی سرورهای ۲۰ تیک اجرا می‌شوند که وضعیت را هر ۵۰ میلی‌ثانیه به‌روزرسانی می‌کنند. این بازی‌ها برای هضم فیزیک سنگین و نقشه‌های بزرگ، پنجره بازگردانی طولانی‌تری دارند که دفعات مرگ پشت سنگر را ناخواسته افزایش می‌دهد.[3]

فراگیر شدن فیبر نوری خانگی و مسیریابی سرورها، میانگین تأخیر در بازی‌های رقابتی را از ۸۰ میلی‌ثانیه در یک دهه قبل به حدود ۳۰ میلی‌ثانیه امروز رسانده است. با کاهش پینگ، شکاف زمانی بین گذشتهٔ تیرانداز و اکنونِ هدف کوچک‌تر می‌شود.[3]

این اختلاف زمانی عامل پدیده‌ای به نام «برتری زاویه‌گیر» (Peeker's Advantage) نیز هست؛ جایی که بازیکن مهاجم هنگام چرخش دور گوشه دیوار، مدافع ساکن را قبل از دیده شدن می‌بیند. چون انتقال حرکت مهاجم به سرور و سپس به مدافع زمان می‌برد، مهاجم چند میلی‌ثانیه جلوتر در آینده سیر می‌کند.[2]

توسعه‌دهندگان می‌کوشند با بهینه‌سازی مسیرها و بالا بردن نرخ تیک این مزیت را مهار کنند، اما فرمول پایه جبران لگ دست‌نخورده می‌ماند. سرور ناچار است به برچسب زمانی بازیکنی که زاویه را باز کرده اعتماد کند.[2][3]

توسعه‌دهندگان می‌کوشند با بهینه‌سازی مسیرها و بالا بردن نرخ تیک این مزیت را مهار کنند، اما فرمول پایه جبران لگ دست‌نخورده می‌ماند.

نت‌کد بازی‌های چندنفره تلاشی است برای پنهان کردن مرزهای فیزیکی زیرساخت‌های مخابراتی. سرور در حقیقت داوری است که بازی را با قضاوت روی پخش‌های تصویری متفاوتی از هر بازیکن سوت می‌زند.[3]

تا زمانی که تأخیر شبکه به صفر مطلق نرسد، سرورها برای وفاداری به گذشته، زمان حال را بازنویسی خواهند کرد. بازیکنان همچنان پشت دیوارهای صلب جان خواهند باخت، نه به این دلیل که کدنویسی خراب است، بلکه چون ریاضیات چنین اقتضا می‌کند.[3]

این تحلیل چگونه انجام شد

روش
عادی‌سازی و مقایسه حداکثر بافرهای بازگردانی سرور و نرخ‌های تیک در شاخص‌ترین شوترهای رقابتی برای محاسبه سقف تئوریک گسست زمانی میان بازیکنان.
یافته
برداشت گیمرها از «نت‌کد خراب» در عمل یک مصالحه ریاضی حساب‌شده است که در آن سازندگان سقف بازگردانی را معمولاً روی ۲۰۰ میلی‌ثانیه تنظیم می‌کنند تا نشانه‌گیری شلیک‌کننده معتبر بماند؛ این تصمیم از نظر ریاضی هدف را مجبور می‌کند لگ شلیک‌کننده را به‌صورت تأخیر در ثبت وضعیت امن خود تجربه کند.
داده‌هایی که بر پایهٔ آن‌ها کار کردیم
محدودیت‌های این تحلیل
این تحلیل فرض را بر ثبات نوسان پینگ (Jitter) و نبود کامل اتلاف بسته (Packet Loss) گذاشته است؛ عواملی که در عمل می‌توانند تأخیر ادراک‌شده را از سقف‌های نرم‌افزاری سرور فراتر ببرند.

اصطلاحات کلیدی

نرخ تیک (Tick Rate)
بسامد یا تعداد دفعاتی که سرور وضعیت جهان بازی را در هر ثانیه بازتعریف می‌کند و بر حسب هرتز (Hz) سنجیده می‌شود.
جبران لگ (Lag Compensation)
الگوریتمی در سمت سرور که هنگام ارزیابی شلیک‌ها، هیت‌باکس بازیکنان را متناسب با تأخیر شبکه به گذشته برمی‌گرداند.
هیت‌باکس (Hitbox)
حجم هندسی نامرئی در اطراف مدل سه‌بعدی کاراکتر که برخورد پرتابه‌ها به آن ثبت می‌شود.
پیش‌بینی سمت کلاینت (Client-Side Prediction)
سازوکاری که در آن دستگاه بازیکن نتیجه کنش را پیش از تأیید سرور حدس می‌زند تا تأخیر حسی کاهش یابد.

پرسش‌های متداول

چرا سازندگان صرفاً سرورها را ارتقا نمی‌دهند تا این مشکل برطرف شود؟

ارتقای سرورها نمی‌تواند زمان فیزیکی عبور داده‌ها از میان فیبرهای نوری را از بین ببرد. تا زمانی که تأخیر شبکه وجود دارد، سرور باید برای آشتی دادن برچسب‌های زمانی مختلف از فرمول‌های ریاضی استفاده کند.

آیا داشتن پینگ پایین‌تر مزیت ایجاد می‌کند؟

بله. اگرچه جبران لگ تجربه نشانه‌گیری را همسان‌سازی می‌کند، اما پینگ کمتر باعث می‌شود تغییر موقعیت شما سریع‌تر به سرور برسد و پنجره زمانی که در آن هیت‌باکس گذشته‌تان آسیب‌پذیر است کوتاه شود.

چرا شدت این حس در برخی بازی‌ها بدتر از بقیه است؟

بازی‌هایی با نرخ تیک پایین‌تر یا سقف بازگردانی زمانی بالاتر نسبت به شوترهای تاکتیکیِ به‌دقت تنظیم‌شده، گسست‌های زمانی بسیار عمیق‌تری ایجاد می‌کنند.

بررسی عمیق دیدگاه‌ها

مهندسان شبکه

تجربه شلیک‌کننده را اولویت می‌دهند تا سلاح‌ها واکنشی و دقیق احساس شوند.

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

بازیکنان رقابتی

خواهان نرخ تیک بالاتر و محدودیت‌های سخت‌گیرانه‌تر پینگ برای حذف ناهماهنگی زمانی هستند.

بازیکنان حرفه‌ای معتقدند جبران لگِ سخاوتمندانه، افرادی را که اینترنت پایدار و پرسرعت دارند تنبیه می‌کند. آن‌ها خواستار کاهش سقف بازگردانی از ۲۰۰ میلی‌ثانیه به ۵۰ یا ۱۰۰ میلی‌ثانیه هستند تا افراد با پینگ بالا ناچار به پیش‌بینی مسیر حرکت شوند نه شلیک به اشباح در گذشته.

طراحان بازی

میان واقعیت‌های فنی سخت‌افزار، روان‌شناسی مخاطب و دسترسی‌پذیری تعادل برقرار می‌کنند.

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

مهندسان شبکه 40%بازیکنان رقابتی 35%طراحان بازی 25%
مهندسان شبکه
تجربه شلیک‌کننده را اولویت می‌دهند تا سلاح‌ها واکنشی و دقیق احساس شوند.
بازیکنان رقابتی
خواهان نرخ تیک بالاتر و محدودیت‌های سخت‌گیرانه‌تر پینگ برای حذف ناهماهنگی زمانی هستند.
طراحان بازی
میان واقعیت‌های فنی سخت‌افزار، روان‌شناسی مخاطب و دسترسی‌پذیری تعادل برقرار می‌کنند.

دیدگاه‌هایی که این گزارش پوشش نداده

  • بازیکنان مناطق روستایی و دورافتاده با تأخیر شبکه بالا به صورت ذاتی
  • شرکت‌های ارائه‌دهنده اینترنت که ترافیک بازی‌ها را مسیریابی می‌کنند

منابع

پوشش منابع

3 منبع

3 دیدگاه شناسایی‌شده

مهندسان شبکه 40%بازیکنان رقابتی 35%طراحان بازی 25%
  1. [1]Valve Developer Communityمهندسان شبکه

    Source Multiplayer Networking

    مطالعه در Valve Developer Community →
  2. [2]Riot Games Technologyمهندسان شبکه

    Peeking into VALORANT's Netcode

    مطالعه در Riot Games Technology →
  3. [3]تیم سردبیری کوهستانطراحان بازی

    تحلیل تیم سردبیری کوهستان

    مطالعه در تیم سردبیری کوهستان →

نظرات

همیشه در جریان باشید

هر زاویه. هر روز.

اخبار فناوری با پوشش کامل منابع و تحلیل دیدگاه‌ها، هر روز و رایگان.