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

قفل‌گام قطعی؛ ترفندی هوشمندانه که پهنای باند بازی‌های چندنفره را با ارسال کلیک‌ها نجات می‌دهد

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

به قلم تارا نوری

این خبر را به اشتراک بگذارید

به‌طور خلاصه

  1. قفل‌گام قطعی صرفاً فشرده شدن کلیدها و کلیک‌های ماوس را می‌فرستد و بار حل معادلات فیزیک را بر دوش پردازنده هر رایانه می‌اندازد.
  2. قطع وابستگی پهنای باند به تعداد مهره‌های صفحه، بازی‌های دهه ۹۰ را قادر ساخت تا هزاران سرباز را روی خطوط کند ۲۸.۸ کیلوبیتی به نمایش بگذارند.
  3. این رویکرد مستلزم تطابق ریاضی تا آخرین بیت داده‌هاست، امری که برنامه‌نویسان را ناچار کرد محاسبات اعشاری معمول را کنار بگذارند.

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

این رویکرد را در مهندسی نرم‌افزار «قفل‌گام قطعی» (Deterministic Lockstep) می‌نامند؛ چرخ‌دنده نامرئی و بی‌صدایی که به بازی‌های استراتژی هم‌زمان امکان می‌دهد لشکری با هزاران سرباز درگیر را بدون سکته زدن پهنای باند روی صفحه نشان دهند. اگر سرور مجبور می‌شد موقعیت، سرعت حرکت و جانِ تک‌تک این جنگجوها را پخش کند، همان حجم بسته داده، مودم خانگی معمولی را در چشم‌به‌هم‌زدنی از کار می‌انداخت.[1]

در این روش، شبکه فقط قاصد نیت بازیکن است، نه نقاش جزئیات صحنه. وقتی بازیکنی به گردانی فرمان حمله می‌دهد، بازی هزاران داده مختلف برای جهت‌یابی تک‌تک نفرات نمی‌فرستد؛ بلکه یک خط پیام مختصر مخابره می‌کند: «بازیکن اول، در فریم شماره ۴۰۰، روی این نقطه از نقشه راست‌کلیک کرد».[2][4]

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

واقعیت بامزه این است که تک‌تک بازیکنان در چنین مسابقه‌ای، دارند نسخه‌ای کاملاً مجزا و بومی از جهان بازی را روی سیستم خودشان اجرا می‌کنند. هیچ سرور بالادستی وجود ندارد که جای درختان یا سرعت تاختن اسب‌ها را دیکته کند. سیستم‌ها صرفاً در آغاز بازی روی یک وضعیت اولیه کاملاً یکسان توافق می‌کنند و سپس دقیقاً همان زنجیره از دکمه‌های فشرده‌شده را با همان نظم و ترتیب به اجرا درمی‌آورند.[1][2]

از آنجا که فرمول‌ها و محاسبات زیربنایی در همه رایانه‌ها عینا برابر است، این شبیه‌سازی‌های انفرادی در نهایت به نتیجه‌ای یکدست و واحد می‌رسند. ورودی یکسان، لاجرم خروجی یکسان می‌سازد. این بخش «قطعی» ماجراست؛ قولی محکم مبنی بر اینکه یک دستور معین، روی تک‌تک پردازنده‌ها، تا سطح بیت‌ها پاسخی صددرصد کپی‌شده تولید خواهد کرد.[2]

مصرف پهنای باند در مدل قفل‌گام، فارغ از تعداد نیروهایی که در بازی جولان می‌دهند، روی خطی کاملاً صاف و پایدار باقی می‌ماند.

گلن فیدلر، مهندس کهنه‌کار شبکه، قضیه را این‌طور خلاصه می‌کند: «قطعیت یعنی اگر با همان شرایط آغازین و همان ورودی‌ها پیش بروید، شبیه‌سازی شما خروجی کاملاً برابری می‌دهد. نه نزدیک به آن و نه شبیه به آن، بلکه دقیقاً تا آخرین بیتِ داده مشابه خواهد بود».[2]

اما تکه دوم پازل، یعنی «قفل‌گام»، نبض زمان را تنظیم می‌کند. رایانه شما نمی‌تواند محاسبات فریم ۴۰۱ را شروع کند، مگر آنکه دکمه‌های فشرده‌شده تمام بازیکنان دیگر در فریم ۴۰۰ را تحویل گرفته باشد. به این ترتیب کل جهان بازی شانه به شانه جلو می‌رود و اگر بسته داده یک هم‌تیمی یا حریفِ لنگ‌در‌هوا در راه معطل شود، بازی همه بازیکنان مکث می‌کند تا او برسد.[2][4]

پیروزی بر ترافیک خطوط دیال‌آپ

این شیوه اصلاً حاصل انتخاب نبود، بلکه پاسخی خلاقانه به فقر شدید سخت‌افزار در اواخر دهه ۱۹۹۰ میلادی بود. سازندگان نسخه اول بازی مشهور Age of Empires می‌خواستند هشت بازیکن بتوانند لشکرهای پرجمعیت خود را از پشت مودم‌های زوزه کش ۲۸.۸ کیلوبیتی هدایت کنند؛ سرعتی که با آن به زور می‌شد یک متن خام جابه‌جا کرد، چه رسد به صحنه نبرد پر از تیر و آتش.[1]

اگر موتور بازی می‌خواست مختصات، جهت و حال‌وروز هر سرباز را بی‌وقفه ارسال کند، سقف توان شبکه به حدود ۲۵۰ موجود متحرک محدود می‌شد. چنین دیواری ژانر استراتژی را از بیخ تغییر می‌داد و محاصره‌های حماسی تاریخ را به چند زد‌وخورد کم‌رمق تبدیل می‌کرد.[1]

سازندگان با سوئیچ روی مدل قفل‌گام قطعی، محدودیت تعداد مهره‌ها را یک‌شبه جا گذاشتند. از آنجا که بار شبکه فقط به دکمه‌هایی گره خورده بود که کاربر می‌فشرد، هزینه اینترنتی جابه‌جایی یک نیزه‌دار، با فرمان دادن به ۱۵۰۰ سواره‌نظام فرقی نداشت؛ زحمت حل این معادله بزرگ را خود کامپیوترها در خانه می‌کشیدند.[1][4]

مخابره ورودی‌ها به جای مختصات به بازی‌های استراتژیک دهه ۱۹۹۰ امکان داد سقف حضور واحدهای جنگی را تا ۶۰۰ درصد ارتقا دهند.

در مرور خاطرات توسعه این بازی به نکته ظریفی اشاره شده است: «به جای همگام‌سازی جهان بازی، طراحان تصمیماتی را همگام کردند که آن جهان را تغییر می‌دادند». البته باج این هوشمندی را پردازنده‌ها می‌دادند؛ هر رایانه باید منطق کل نقشه را به‌تنهایی از نو حساب می‌کرد، نه اینکه صرفاً تصاویر آماده را ترسیم کند.[1]

اثر پروانه‌ای اعداد اعشاری

قفل‌گام گرچه غول پهنای باند را مهار می‌کند، اما بند و قید مهندسی بی‌رحمانه‌ای به بار می‌آورد: شبیه‌سازی باید مثل یک اتاق خلاء در برابر هر نوسان خارجی عایق باشد. اگر در یک سیستم، کمانداری تنها کسری از میلی‌متر چپ‌تر از سیستم دیگر بایستد، بازی در سراشیبی مرگ می‌افتد.[1][2]

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

دستیابی به چنین انسجام بی‌نقصی کاری فوق‌العاده دشوار است، چرا که تراشه‌های رایانه‌ای امروزی اعداد ممیز‌شناور (اعشاری) را کمی متفاوت از هم پردازش می‌کنند. خطای گرد کردن یک موج سینوسی در پردازنده اینتل ممکن است تفاوتی میکروسکوپی با پردازشگر AMD داشته باشد.[2][4]

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

دگردیسی به کد شبکه بازگشتی

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

در عناوینی که واکنش‌های آنی در صدم ثانیه تعیین‌کننده است—مانند بازی‌های مبارزه‌ای—این لکنت‌ها غیرقابل‌تحمل است. برای درمان این درد، معماران قفل‌گام را به سازوکار «بازگشتی» (Rollback) ارتقا دادند. هسته قطعیت پابرجاست، اما سیستم دیگر لنگ بسته‌های گمشده یا دیررس نمی‌ماند.[3]

کد شبکه بازگشتی تأخیر اینترنت را با حدس زدن زودهنگام پنهان می‌کند و در صورت نادرست بودن حدس، شبیه‌سازی را آنی به عقب بازمی‌گرداند.

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

اگر بسته تأخیری بالاخره از راه برسد و پیش‌بینی اشتباه از آب درآید، موتور بازی یک دستکاری خشن ولی نامحسوس انجام می‌دهد: وضعیت را به لحظه خطا برمی‌گرداند، حرکت واقعی را اعمال می‌کند و فریم‌ها را با دور تند تا زمان حال ورق می‌زند. این شعبده‌بازی در کسری از یک فریم ۱۶ میلی‌ثانیه‌ای اتفاق می‌افتد و چشم انسان متوجه آن نمی‌شود.[3][4]

چرا شوترهای مدرن این روش را رد می‌کنند؟

با تمام این اوصاف، در شوترهای اول‌شخص مدرن یا دنیاهای وسیع و آزاد امروزی، به ندرت ردپایی از قفل‌گام قطعی پیدا می‌کنید. این فضاها چنان درگیر فیزیک‌های پیچیده و پرشمارند که یکسان نگه‌داشتن همه‌چیز ناممکن است؛ کافی است پرتاب ناشیانه یک نارنجک و کمانه کردن آن روی تپه‌ای ناهموار، ذره‌ای خطا به جا بگذارد تا شیرازه کار از هم بپاشد.[2][4]

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

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

طبیعتاً این همگام‌سازی پیوسته، تشنه پهنای باند هنگفتی است و اینترنت‌های پرسرعت امروزی را می‌طلبد. حسن آن این است که به سازندگان اجازه می‌دهد از موتورهای فیزیک سنگین استفاده کنند و راه دستکاری و تقلب‌های محلی بازیکنان را سد نمایند.[2][4]

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

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

روش
مقایسه مدل‌های مصرف پهنای باند میان روش همگام‌سازی وضعیت (مخابره موقعیت و بردار سرعت) و قفل‌گام قطعی (صرفاً مخابره ورودی‌های بازیکن) با افزایش تصاعدی تعداد مهره‌ها.
یافته
ارسال ورودی‌های کاربر به‌جای مختصات جغرافیایی، نیاز به پهنای باند را از تعداد کاراکترهای روی صفحه مستقل می‌کند و ظرفیت نمایش مهره‌های متحرک را با همان سرعت ۲۸.۸ کیلوبیتی خطوط تلفن تا ۶۰۰ درصد ارتقا می‌دهد.
داده‌هایی که بر پایهٔ آن‌ها کار کردیم
  • محدودیت پهنای باند در همگام‌سازی وضعیت برای اجسام متحرک: 250 units — Game Developer
  • محدودیت پهنای باند در قفل‌گام برای اجسام متحرک: 1,500 units — Game Developer
محدودیت‌های این تحلیل
این تحلیل مبتنی بر سقف سرعت مودم‌های دهه ۹۰ میلادی است که در معماری‌های شبکه بازی‌های مدرن دیگر چالش اصلی به شمار نمی‌آید.

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

Deterministic Lockstep (قفل‌گام قطعی)
معماری شبکه‌ای که در آن سامانه‌ها تنها ورودی‌های دست بازیکنان را ردوبدل می‌کنند و پیش از محاسبه فریم بعدی، چشم‌به‌راه دستورات تمامی شرکت‌کنندگان می‌مانند.
State Synchronization (همگام‌سازی وضعیت)
روشی در شبکه که در آن یک سرور متمرکز منطق دنیای بازی را اجرا می‌کند و بی‌وقفه جایگاه و مختصات دقیق تمام عناصر را برای سایرین می‌فرستد.
Desynchronization (ناهماهنگی یا افتادن از همگامی)
بروز خطای مهلکی که طی آن شبیه‌سازی‌های محلی نتایج متفاوتی محاسبه کرده و با گسستن تجربه بازی، موجب توقف یا خروج ناگهانی برنامه می‌شود.
Rollback Netcode (کد شبکه بازگشتی)
نسخه توسعه‌یافته قفل‌گام که با حدس زدن ورودی‌های با تأخیر، مانع افت سرعت بازی می‌شود و در صورت حدس نادرست، بازی را در یک پلک‌زدن به عقب برگردانده و درستش می‌کند.
Fixed-Point Math (ریاضیات ممیز ثابت)
شیوه‌ای از محاسبات اعشاری که گرد کردن اعداد را در انواع پردازنده‌ها کاملاً یکنواخت تضمین می‌کند و مانع به هم ریختن همگامی سیستم‌ها می‌شود.

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

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

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

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

دنیاهای باز این بازی‌ها به فیزیک‌های نامعین و پر هرج‌ومرجی وابسته‌اند که همگام‌سازی بی‌نقص آن‌ها روی سخت‌افزارهای مختلف عملاً غیرممکن است؛ بنابراین به سرورهای مرجع تکیه می‌کنند.

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

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

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

سنت‌گرایان قفل‌گام

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

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

طرفداران کد شبکه بازگشتی

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

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

حامیان سرورهای مرجع

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

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

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

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

  • تأمین‌کنندگان سرورهای ابری
  • گیمرهای تفننی

منابع

پوشش منابع

4 منبع

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

سنت‌گرایان قفل‌گام 40%طرفداران کد شبکه بازگشتی 35%حامیان سرورهای مرجع 25%
  1. [1]Game Developerسنت‌گرایان قفل‌گام

    1500 Archers on a 28.8: Network Programming in Age of Empires and Beyond

    مطالعه در Game Developer →
  2. [2]Gaffer On Gamesحامیان سرورهای مرجع

    Deterministic Lockstep

    مطالعه در Gaffer On Games →
  3. [3]Wikipediaطرفداران کد شبکه بازگشتی

    GGPO

    مطالعه در Wikipedia →
  4. [4]تیم سردبیری کوهستان

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

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

نظرات

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

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

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