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

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

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

هدف ما این است که یک راه حل کلی برای مشکلات بازی‌های رایانه‌ای ارائه دهیم، اما به دلیل وجود فهرستی بسیار بزرگ از مشکلات، این امکان وجود ندارد. با این حال، یک جنبه وجود دارد که می‌تواند به شدت در حل مشکلات کمک کند، و آن هم این است که کنسول‌ها هنوز هم نسبت به رایانه‌های شخصی برتری دارند.

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

اما چه چیزی مسیر را مسدود می‌کند؟ در بسیاری از موارد در رایانه‌های شخصی، ما با shader compilation stutter مواجه هستیم. این جایی است که واحد پردازش مرکزی نیاز دارد دستورالعمل‌ها (شیدرها) را به واحد پردازش گرافیکی ارسال کند و آنها را از کد نرم افزاری به کد سخت افزاری ترجمه کند. در بسیاری از موارد در بازی‌هایی مانند Gotham Knights ، این مورد منبع لگ است.

در حال حاضر، یک راه‌ حل مناسب برای مشکل تأخیر در کامپایل شیدرها وجود دارد. راه‌حل اول، پیش از زمان اجرا کردن شیدرها (pre-compiling)  است، به طور مشابهی که در بازی Uncharted: Legacy of Thieves بر روی کامپیوتر انجام می‌شود. در این راه‌حل، دستورالعمل‌ها از قبل، در حافظه ذخیره می‌شوند تا در هنگام اجرا نیازی به کامپایل مجدد نباشد. راه‌حل دیگر، کامپایل ناهمزمان (asynchronous compilation) است. پردازنده‌های جدیدی مانند Core i5-13600K به بسیاری از رشته‌ها دسترسی دارند، بنابراین رشته‌هایی که به طور فعال و مداوم فعالیت نمی‌کنند، می‌توانند در هنگام اجرا، کامپایل بخش‌های بعدی را انجام دهند.

ما یک راه حل مؤثر برای کاهش اختلال در ترجمه شیدرها داریم. اولین روش، پیش جمع آوری (pre-compiling) شیدرهاست، که به عنوان مثال در بازی Uncharted: Legacy of Thieves برای نسخه PC استفاده می‌شود. در این روش، دستورالعمل‌های مورد نیاز به صورت پیش فرض در حافظه ذخیره می‌شوند تا در هنگام بازی، نیازی به ترجمه مجدد آن‌ها نباشد.

روش دیگری که می‌توانیم بهره ببریم، کامپایل نامتقارن (asynchronous compilation) است. CPUهای جدید مانند Core i5-13600K دارای قابلیت دسترسی به برخی از رشته‌ها هستند، بنابراین رشته‌هایی که کار کمتری انجام می‌دهند، می‌توانند در هنگام بازی، به طور همزمان بازهم بخش‌هایی را ترجمه کنند که برای ادامه‌ بازی لازم است.

این افزایش زمان فریم به صورت لکنت شدید در بازی شوالیه های گاتهام ظاهر می شود.

این راه‌حل‌ها ساده نیستند، اما از کارایی کافی برخوردار هستند. یکی از مشکلات عملکردی اصلی که به آن برخورد می‌کنیم، لگ پیمایش یا لودینگ (traversal or loading stutter) است. این مشکل در بازی Star Wars Jedi: Survivor که با مشکلات عملکردی بسیاری مواجه شده است، برای ما مشکل ساز می‌شود. در این بازی، افزایش ناگهانی در زمان رندرینگ به دلیل بارگیری داده‌های جدید بازی در حین حرکت در دنیای بازی رخ می‌دهد.

مهم است که بین این دو مورد تفاوت قائل شویم زیرا راه‌حل‌های آنها بسیار متفاوت است. لگ ایجاد شده توسط shader compilation stuttering در زمانی رخ می‌دهد که یک افکت شیدر جدید به صفحه نمایش اضافه می‌شود. افکت‌های شیدر می‌توانند چندین لایه اثر را داشته باشند، بنابراین معمولاً در مناطقی مانند انفجار یا اثری که از برداشتن یک آیتم به وجود می‌آید، شاهد لگ ناشی از shader compilation stuttering هستیم.
از سوی دیگر،traversal stutter  در زمانی رخ می‌دهد که شخصیت بازی از یک منطقه بارگذاری مختلف عبور می‌کند. اگر در صفحه نمایش هیچ اتفاق قابل توجهی رخ ندهد، احتمالاً با لگ traversal stutter روبرو خواهیم شد و نه لگ shader compilation stuttering.

بازی Star Wars Jedi: Survivor یک مثال خوب از این داینامیک است. در شروع بازی در Coruscant، یک کشتی بزرگ به یک سکو برخورد می‌کند و یک shader compilation stutter کوچک و کوتاه اتفاق می‌افتد. در جایی دیگر، هنگام ورود یا خروج از Pyloon’s Saloon در Koboh، حدود ۱۰ ثانیه لگ شدید اتفاق می‌افتد. این لگ، traversal stutter نامیده می‌شود.

توسعه دهندگان راه حل‌هایی برای shader compilation stutter دارند، حتی در موتورهایی مانند Unreal Engine 4. ما دیده‌ایم که بسیاری از لگ های مربوط به شیدر در بازی‌هایی مانند Hogwarts Legacy رفع شده اند و بازی‌هایی مانند Atomic Heart بدون لگ به دنیا رونمایی شده‌اند. اما وضعیت برای traversal stutter پیچیده‌تر است.

کراکن نسل بعدی

هر دو کنسول PS5 و Xbox Series X دارای پردازنده‌های decompression  سخت افزاری مخصوص خود هستند. به گفته مارک سرنی از سونی، پردازنده مخصوصی که از مجموعهOodle Kraken  در PS5 استفاده می‌کند، می‌تواند کار decompression  9 هسته AMD Zen 2 را انجام دهد. Xbox نیز سیستم DirectStorage مایکروسافت را دارد که شامل یک پردازنده مخصوص برای decompression جهت افزایش سرعت زمان بارگذاری و به طور حیاتی، جریان asset است.

جریان داده‌ها از SSD، جایی است که traversal stutter رخ می‌دهد و حل این مسئله در PC چالش بیشتری را به دنبال دارد. این مسئله نه تنها به دلیل عدم وجود سخت‌افزار decompression مخصوص در PC، بلکه به دلیل تنوع در مشخصات SSDها، سخت است که عملکرد جریان داده را در چندین سیستم به صورت قابل اطمینان ارتقا داد.

برای این مشکل در PC راه حل‌هایی وجود دارد، اما هنوز به خوبی کار نمی‌کنند

در PC، decompression یک وظیفه برای CPU است. داده‌ها از SSD حرکت می‌کنند، اما در حین عبور نیاز به decompression دارند که اغلب باعث traversal stutter می‌شود. سخت‌افزار decompression مخصوص در PS5 و Xbox Series X با وجود آنکه CPU آن‌ها در مقایسه با PCهای مدرن و پر قدرت، قدرت کمتری دارند، باعث کاهش چشمگیری در traversal stutters شده‌اند.

برای این مشکل راه حل‌هایی در PC وجود دارد، اما هنوز به خوبی کار نمی‌کنند. DirectStorage برای کاربران PC در دسترس است و بهبود زمان بارگذاری و جریان داده‌ها را از طریق decompression کارت گرافیک بهبود می‌بخشد. مشکل این است که فقط بازی Forspoken با DirectStorage وجود دارد،  که از decompression کارت گرافیک استفاده نمی‌کند. این تنها زمان بارگذاری را بهبود می‌بخشد و به اندازه کمی سرعت پردازش PS5 را بیشتر می‌کند.

در بازی های رایانه ای دیگر، فرآیند مشابه است. Asset ها از حافظه ذخیره‌سازی به حافظه سیستمی منتقل شده، CPU آن‌ها را decompression کرده و بعد به حافظه GPU منتقل می‌شوند. این فرآیند زمان‌بر احتمالاً یکی از دلایل افزایش استفاده از VRAM در بازی‌های اخیر است، زیرا بازی‌ها برای کنسول‌هایی ساخته شده‌اند که گلوگاه حافظه ندارند که در حال حاضر در رایانه های شخصی وجود دارد.

DirectStorage یکی از راه‌حل‌هاست، اما تنها راه برای بهبود مسائل اصلی traversal stutter  در PC نیست. مقیاس‌پذیری مناسب CPU راه‌حلی است که به ویژه برای بازی‌های Unreal Engine 4، کمتر به کار گرفته شده است. این موتور بیشتر به منظور اجرا بر روی دو رشته CPU طراحی شده است و همانطور که در بازی Star Wars Jedi: Survivor مشاهده می‌کنید، رشته‌های باقیمانده، اگر کاری را انجام ندهند، حداقل به طور محسوسی کار کمتری می‌کنند.

علیرغم اینکه کنسول‌ها دارای قدرت محاسباتی کمتری از PCهای مدرن هستند، توسعه‌دهندگان بازی‌ها را برای پلتفرم‌هایی طراحی می‌کنند که گلوگاه اصلی جریان asset ندارند. شما می‌توانید بر روی یک PC پر قدرت همچنان عملکرد و کیفیت تصویر بالاتری را داشته باشید، اما به قیمت stuttering، کاهش وضوح تکسچر و محدودیت VRAM که در کنسول وجود ندارد یا حداقل شدت آن بسیار کمتر است.

پاسخ Nvidia به محدودیت حافظه

در اوایل ماه می، شرکت Nvidia مقاله‌ای با عنوان Random-Access Neural Compression of Material Textures در کنفرانس سیگراف ۲۰۲۳ (کنفرانس سالانه‌ای در حوزه پیشرفت‌های گرافیک کامپیوتری) ارائه کرد. این مقاله یک سیستم را معرفی می‌کند که از یک شبکه عصبی برای فشرده‌سازی و decompression تکسچرها استفاده می‌کند و با استفاده از آن، سیستم می‌تواند ۱۶ برابر اطلاعات را در همان فضا نسبت به فشرده‌سازی بلوک محور سنتی ذخیره کند.

این سیستم Neural Texture Compression (NTC) نامیده می‌شود. بیشتر جزئیات در مورد فشرده‌سازی تکسچرها برای همان فضای ذخیره‌سازی، بدون شک، یک گزینه جذاب است. همانطور که در بازی‌های Forspoken و Resident Evil 4 Remake دیده‌ایم، کیفیت تکسچر در شرایطی که منابع حافظه VRAM در PC محدود هستند، ممکن است واقعاً پایین‌تر از کنسول‌ها باشد. اما مهمترین بخش آن این است که NTC به منظور decompression در زمان اجرا طراحی شده است.

DirectStorage نتوانسته در بازی‌های PC قابل قبول ظاهر شود

به گفته شرکت انویدیا، در مقایسه با پردازنده‌های decompression اختصاصی، سربار کمی وجود دارد. اما پژوهشگران بیان می‌کنند که انتظار دارند در هنگام رندرینگ به صورت لحظه‌ای، این سربار کمتر شود. نکته‌ مهم این است که decompression می‌تواند مستقیماً در GPU انجام شود و برای آن نیازی به CPU و سخت‌افزارهای اختصاصی نیست.

ما نمی دانیم که این روش می‌تواند مشکلات stuttering و افزایش حافظه‌ی ویدیویی (VRAM) را برای گیمرهای PC حل کند یا خیر.  در حال حاضر، این فقط یک مقاله پژوهشی است و اگر شرکت Nvidia در کارت‌های گرافیکی خود از این تکنولوژی استفاده کند، احتمالاً برای دستیابی به نتایج بهتر، نیاز به چند نسل دیگر وجود دارد. همچنین، احتمالاً این روش به عنوان یک ویژگی قابل بازاریابی مانند DLSS از انویدیا در نظر گرفته نخواهد شد.

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

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

اخبار جدید تک‌ناک را از دست ندهید.