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

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

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

به قلم ویدا فراهانی

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

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

  • تولیدکنندگان سخت‌افزار
  • مهندسان نت‌کد

چرا مهم است

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

برای اینکه یک مسابقه رقابتی عادلانه باشد، سرور و هر دو کلاینت باید دقیقاً در مورد موقعیت یک پرتابه در یک میلی‌ثانیه مشخص توافق داشته باشند، صرف نظر از اینکه مانیتور یکی از بازیکنان ۶۰ فریم در ثانیه رندر می‌کند یا ۳۶۰ فریم. اگر این محدودیت حیاتی شکسته شود، عرصه دیجیتال اساساً به خطر می‌افتد. زیربنای ریاضی تمام عناوین مدرن ورزش‌های الکترونیکی متکی بر این است که تفاوت‌های سخت‌افزاری، فیزیک واقعی دنیای بازی را تغییر ندهند.[5]

در روزهای اولیه بازی‌های سه‌بعدی، توسعه‌دهندگان اغلب شبیه‌سازی فیزیک را مستقیماً به نرخ فریم بصری گره می‌زدند. اگر رایانه‌ای یک فریم را رندر می‌کرد، دنیای بازی یک تیک (گام) جلو می‌رفت. این رویکرد «گام زمانی متغیر» مزایای سخت‌افزاری بدنامی ایجاد می‌کرد. بازیکنی که با ۱۲۵ فریم در ثانیه رندر می‌کرد، می‌توانست کمی بالاتر بپرد یا اندکی سریع‌تر حرکت کند تا بازیکنی که در ۶۰ فریم در ثانیه محدود شده بود؛ این امر به دلیل خطاهای گرد کردن ممیز شناور بود که به طور متفاوتی در تعداد فریم‌های مختلف انباشته می‌شدند.[5]

همانطور که گلن فیدلر (Glenn Fiedler) در مقاله مهندسی بنیادی خود در سال ۲۰۰۴ مطرح کرد، راه‌حل یک دستورالعمل برای صنعت بود: «گام زمانی خود را ثابت کنید!» این معماری مستلزم جداسازی حلقه رندر بصری از حلقه شبیه‌سازی ریاضی است. تحت مدل «گام زمانی ثابت»، موتور فیزیک در افزایش‌های سخت و از پیش تعریف شده پیش می‌رود و کاملاً نادیده می‌گیرد که کارت گرافیک با چه سرعتی در حال ترسیم تصاویر است.[1]

یک گام زمانی ثابت، شبیه‌سازی فیزیک را از حلقه رندر بصری جدا می‌کند.

مجله «گیم دولوپر» (Game Developer) یک استاندارد خاص و قاطع را برای موتورهای مدرن برجسته می‌کند و از «راه آسان با ۴.۱۶ میلی‌ثانیه طلایی» حمایت می‌کند. با ۴.۱۶ میلی‌ثانیه برای هر تیک، موتور فیزیک دقیقاً ۲۴۰ بار در ثانیه به‌روزرسانی می‌شود. این جداسازی، «قطعیت مطلق» را تضمین می‌کند. اگر دو بازیکن دقیقاً یک توالی فرمان را وارد کنند، موتور فیزیک دقیقاً همان نتیجه را خروجی می‌دهد، صرف نظر از اینکه دستگاه‌های مربوطه آنها در طول آن ثانیه چند فریم را مدیریت کرده‌اند.[2]

پیاده‌سازی این معماری در محیط‌های مدرن چالش‌های منحصر به فردی را به همراه دارد. همانطور که WebRTC.ventures در یک تحلیل فنی در ژوئن ۲۰۲۶ اشاره کرد، ساخت این حلقه‌ها در محیط‌های وب نیازمند «جداسازی شبیه‌سازی از نرخ فریم» است، با وجود اینکه توابع بومی مرورگر ذاتاً اجرای عملیات را به چرخه تازه‌سازی نمایشگر گره می‌زنند.

پیاده‌سازی این معماری در محیط‌های مدرن چالش‌های منحصر به فردی را به همراه دارد.

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

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

اگر نرخ فریم بصری از گام فیزیک پیشی بگیرد، موتور باید تصمیم بگیرد که چه چیزی را روی صفحه نمایش دهد. تحلیل فنی یاکوب (Jakub) پیامدهای اجرای «گام زمانی ثابت بدون درون‌یابی» (Interpolation) را بررسی می‌کند. بدون درون‌یابی، یک بازی که با ۱۴۴ هرتز رندر می‌شود اما فیزیک آن با ۶۰ هرتز اجرا می‌شود، فریم‌های تکراری ترسیم خواهد کرد که منجر به لکنت بصری (Visual Stutter) می‌شود، علی‌رغم نرخ فریم بالا.

برای حل این لکنت بصری، موتورهای مدرن بین آخرین وضعیت شناخته شده فیزیک و وضعیت فعلی درون‌یابی می‌کنند و خروجی بصری را روان می‌سازند بدون اینکه ریاضیات قطعی زیربنایی را تغییر دهند. آندره لایت (André Leite) این تعادل ظریف را «رام کردن زمان در موتورهای بازی» توصیف می‌کند. نرم‌افزار باید دائماً بین خواسته‌های سخت و سازش‌ناپذیر شبیه‌سازی فیزیک و انتظارات روان چشم انسان مذاکره کند.

در اکوسیستم توسعه‌دهندگان Babylon.js، بحث‌های معماری سال ۲۰۲۲ نشان می‌دهد که چگونه «حلقه بازی گام زمانی ثابت» تنها مسیر عملی برای چندنفره همگام‌سازی شده باقی می‌ماند. بدون آن، «نت‌کد بازگشتی» (Rollback Netcode) مدرن—که وضعیت‌های فیزیک را به عقب برمی‌گرداند و دوباره پخش می‌کند تا تأخیر شبکه را پنهان کند—بلافاصله از حالت همگام خارج می‌شود، زیرا سرور و کلاینت نتایج کاملاً متفاوتی را برای دقیقاً همان ورودی‌های بازیکن محاسبه می‌کنند.[4]

تلاش برای قطعیت کامل همچنان طراحی بازی‌های رقابتی را شکل می‌دهد. معماران موتور اکنون به سمت معماری‌های «زیر-تیک» (sub-tick) حرکت می‌کنند که ورودی‌های فردی را بین گام‌های ثابت زمان‌بندی می‌کنند و تضمین می‌کنند که میلی‌ثانیه دقیق کلیک ماوس توسط شبیه‌سازی محترم شمرده شود. موتور فیزیک داور بی‌طرفی باقی می‌ماند که از نظر ریاضی نسبت به سخت‌افزاری که آن را رندر می‌کند، کور است.

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

معماران موتور

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

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

توسعه‌دهندگان بازی‌های مرورگری

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

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

بهینه‌سازان عملکرد

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

بهینه‌سازان در فضای بین ریاضیات و مانیتور زندگی می‌کنند. در حالی که آنها به نیاز به گام زمانی ثابت احترام می‌گذارند، وظیفه دارند اطمینان حاصل کنند که بازی در نمایشگرهای ۲۴۰ هرتز و ۳۶۰ هرتز بی‌عیب و نقص به نظر برسد. از آنجا که موتور فیزیک ممکن است فقط ۶۰ یا ۱۲۸ بار در ثانیه به‌روزرسانی شود، بهینه‌سازان سیستم‌های درون‌یابی می‌سازند که موقعیت اشیاء را بین تیک‌ها حدس می‌زنند. چالش آنها رندر کردن این فریم‌های میانی بدون ایجاد تأخیر ورودی یا نمایش اطلاعات نادرست به بازیکن است.

نکات کلیدی

  1. بازی‌های سه‌بعدی اولیه فیزیک را به نرخ فریم گره می‌زدند و به بازیکنان با رایانه‌های سریع‌تر مزایای حرکتی ناخواسته می‌دادند.
  2. عناوین مدرن ورزش‌های الکترونیکی از گام‌های زمانی ثابت برای جدا کردن شبیه‌سازی ریاضی از حلقه رندر بصری استفاده می‌کنند.
  3. یک گام ثابت، قطعیت را تضمین می‌کند، به این معنی که ورودی‌های یکسان همیشه نتایج یکسان تولید می‌کنند، صرف نظر از سخت‌افزار.
  4. توسعه‌دهندگان از یک انباشتگر برای ذخیره زمان واقعی استفاده می‌کنند و به‌روزرسانی‌های فیزیک را فقط در فواصل زمانی دقیق فعال می‌کنند.
  5. از درون‌یابی برای روان‌سازی خروجی بصری استفاده می‌شود، زمانی که نرخ تازه‌سازی نمایشگر از شبیه‌سازی فیزیک پیشی می‌گیرد.

منابع

پوشش منابع

5 منبع

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

معماران موتور 40%توسعه‌دهندگان بازی‌های مرورگری 35%بهینه‌سازان عملکرد 25%
  1. [1]Gaffer On Gamesمعماران موتور

    Fix Your Timestep!

    مطالعه در Gaffer On Games
  2. [2]Game Developerمعماران موتور

    Fixing your time step, the easy way with the golden 4⅙ ms.

    مطالعه در Game Developer
  3. [3]zeroberry's Blogتوسعه‌دهندگان بازی‌های مرورگری

    JavaScript Fixed Timestep Game Loop

    مطالعه در zeroberry's Blog
  4. [4]Babylon.js Forumتوسعه‌دهندگان بازی‌های مرورگری

    Fixed Time step game loop

    مطالعه در Babylon.js Forum
  5. [5]تیم سردبیری کوهستانبهینه‌سازان عملکرد

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

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

نظرات

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

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

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