شاهکار یک هکر با یک DLL ساده – کاهش ۷۰ درصدی زمان لودینگ GTA Online . تعداد مادهای گیمینگ برای بازیهای مختلف این روزها بسیار زیاد شده که البته نه همه آنها مفید و کاربردی هستند اما بعضا تاثیرات فوق العادهای بر روی بازی میگذارند. این مادها غالبا موجب بهبود کیفیت گرافیکی بازیها میشوند و معمولا برای بازی های پرطرفدار ساخته میشوند. برخی از مادها نیز عملکرد فنی بازی را بهبود میبخشند.
Grand Theft Auto Onilne یکی از عناوینیست که تعداد مادهای ساخته شده برای آن بسیار زیاد است. ایدههایی در این مادها دیده میشود که خود سازنده در بازی یا پچهای منتشر شده برای آن در نظر نگرفته و گاها مشکلات بزرگی توسط همین مادها رفع میشوند. حال یک هکر خلاق کاری در مورد زمان لودینگ GTA Online انجام داده راک استار برای سالها اهمیتی به آن نداده است.
کاهش ۷۰ درصدی زمان لودینگ GTA Online
به واسطه بزرگی بازی Grand Theft Auto Onilne، زمان بارگذاری آن بسیار زیاد است. بارگذاری این بازی خصوصا بر روی کنسولهای بازی (نسلهای پیشین) که فاقد درایوهای پرسرعت هستند یا کامپیوترهای شخصی فاقد درایو SSD عملی زمانبر است و حسابی میتواند کاربر را کلافه کند.
طبق برآورد یکی از کاربران Reddit، بیشترین زمان بارگذاری این بازی بین سه تا شش دقیقه است و بیش از ۳۵ درصد از بازیکنان این عنوان زمان لودینگ بیش از ۶ دقیقه را نیز تجربه کرده اند. در بدترین موارد، کاربران ۱۵ دقیقه زمان لودینگ GTA Online را نیز شاهد بوده اند که تصورش هم سخت و عذاب آور است.
حال یک هکر تحت عنوان مستعار T0st بر روی این موضوع ریز شده تا ببیند چه چیزی باعث میشود زمان لودینگ یک بازی تا این حد باشد. پس از بررسیهای دقیق، وی متوجه می شود که دو گلوگاه باعث میشود یک رشته پردازشی CPU نتواند با تمام توان خود فعالیت کند. همچنین یک کدنویسی ضعیف رایج باعث می شود یک فایل JSON با حجم ۱۰ مگابایت که محتوی بیش از ۶۳۰۰۰ آیتم است به درستی تجزیه و تحلیل نشود.
فایل مذکور آیتمهای قابل خرید در فروشگاه داخل بازی را در خود جای داده که البته مجزا از ریزتراکنش ها است. روال عادی بدین صورت است که هر ورودی فایل پس از خوانده شدن در یک صف نظم دهی میشوند. پس از انجام این مرحله، صف ورودیها پیش از ورود یک آیتم جدید، مجددا برای تکرار چک میشود.
مشکل در نوع کدنویسی بازی است – چرا راک استار دست به کار نمی شود؟
این هکر موفق شده از طریق یک فایل DLL، دو گلوگاه مذکور را از بین ببرد. اولین مورد رفع شده کشهای با دامنه طولانی است. DLL نوشته شده توسط T0st در صورتی یک ورودی با محدوده رشته فراخوانی شود را با کش مقدارگذاری شده مجددا بازمی گرداند. بدین ترتیب این راه تعمیری، تکرار ورودیها را حذف میکند پس عملا مرحله چک کردن برای تکرار ورودیها نیز از بین میرود.
دومین راهکار انجام شده، وارد کردن مقدار به صف است. نتیجه این دو راهکار فوق العاده بوده است. به طوری که زمان لودینگ GTA Online از شش دقیقه به ۴.۵ دقیقه کاهش پیدا کرده است. این فقط با رفع مورد چک کردن ورودیها برای تکرار بوده و با رفع هر دو مشکل و اعمال هر دو پچ، زمان بازی از ۶ دقیقه به ۱ دقیقه و ۵۰ ثانیه رسیده است.
نتایج این پچ به کانفیگ سیستم کاربران بستگی زیادی دارد اما بهینه سازی در کاهش زمان لودینگ بازی در مورد همه کامپیوترهای شخصی محسوس خواهد بود.
T0st ضمن ابراز امیدواری به اینکه راک استار با یک پچ رسمی این مشکل را رفع کند گفته است راهکار کشف شده توسط او ممکن است موجب بن شدن گیمر در بازی آنلاین شود. به گفته وی، برای شرکتی مانند راک استار رفع چنین مشکلی در یک روز توسط فقط یک توسعه دهنده قابل انجام است.