Grand Theft Auto Online отличается чудовищно долгими загрузками — на них жаловались ещё семь лет назад, когда игра только стартовала, и продолжают жаловаться сейчас. Некто T0ST утверждает, что разобрался в проблеме, нашёл один из основных источников бед и сумел сократить загрузки почти на 69 %.
Для начала — замеры автора и конфигурация его PC.
- Сюжетный режим загружается примерно за 1 минуту 10 секунд.
- Онлайн-режим загружается примерно за 6 минут.
- Стартовое меню отключено, вход в Social Club не учитывается, время считается от логотипа Rockstar Games до геймплея.
- Компьютер:
- процессор — AMD FX-8350,
- SSD — Kingston SA400S37120G,
- оперативная память — две Kingston 8 192 Мб (DDR3-1337) 99U5471,
- видеокарта — GeForce GTX 1070.
Как подчёркивает T0ST, он прекрасно знает — PC у него староват. Но вряд ли сборка настолько дряхлая, что онлайн загружается аж в шесть раз медленнее сюжетного режима. Кроме того, он нашёл свежий опрос на Reddit, по результатам которого 80 % из 271 участника пережидают в GTA Online загрузки от трёх минут или больше.
Комментарии красным — от T0ST.
В общем, T0ST надел плащ хакермена и начал раскопки. Сперва он обнаружил, что во время загрузки GTA Online есть период длиной больше 4 минут, когда одно из ядер процессора нагружается как следует, а накопитель, поток сетевых данных, ОЗУ и видеокарта практически простаивают. По наблюдениям T0ST, это начинается, когда GTAV загрузила всё, что касается одновременно сюжетного и сетевого режимов, и приступает к обработке данных, необходимых только для сетевого режима.
T0ST сделал вывод, что дело в очень плохом коде. Применив программистскую магию, он разобрал процессы GTAV на составляющие и выяснил, что в период нагрузки на одно ядро происходит синтаксический анализ файла JSON размером 10 мегабайт, куда входит около 63 000 записей. По мнению T0ST, в этом JSON хранятся данные товаров во внутриигровых магазинах (но напрямую с микротранзакциями они не связаны).
Как рассказывает T0ST, 10 мегабайт записей — это не беда, но программная логика не оптимизирована и читает эти данные слишком дотошно. С этим связана и вторая существенная проблема — программисты Rockstar не сделали толковое хеширование, из-за чего происходит чересчур много перепроверок данных.
Подозрительная нагрузка на одно ядро процессора.
Чтобы проверить свои догадки, T0ST собрал самопальную DLL-библиотеку и всунул её в GTAV. Она добавляет кеширование для анализа JSON и убирает ненужные проверки дублирования записей.
Результат загрузок GTA Online:
- Без патчей — около 6 минут.
- С патчем на устранение проверок дублирования — 4 минуты 30 секунд.
- С патчем парсинга JSON — 2 минуты 50 секунд.
- С обоими патчами одновременно — 1 минута 50 секунд, то есть на 69.4 % быстрее, чем в оригинальной версии.
T0ST пишет, что это не устранит вообще все проблемы с загрузками GTA Online на всех системах, но такая дыра в коде, мол, обнаруживается элементарным образом. «Если Rockstar каким-то образом это увидит — решение проблемы не должно занять больше одного дня и одного разработчика. Пожалуйста, сделайте с этим что-нибудь :<» — заканчивает своё расследование T0ST.
Подробнее изучить методику поиска можно в оригинальном посте. Осторожно: для понимания всего происходящего необходимы навыки программиста.
GTA 5 RP сервер — это специализированный сервер для GTA V (Grand Theft Auto V), на котором реализован режим RolePlay (RP). В этом режиме игроки принимают на себя роли различных персонажей и взаимодействуют с другими игроками в рамках созданных ролевых сценариев и ситуаций. RP-серверы предлагают уникальный и проработанный опыт, отличающийся от стандартной игры в GTA V.
GTA 5 RP сервер представляет собой ролевую платформу, где игроки могут создавать и развивать персонажей, взаимодействовать в рамках сложных сценариев и использовать модификации для улучшения игрового опыта. Эти серверы предлагают уникальный и проработанный опыт по сравнению с обычной игрой, предоставляя игрокам возможность погружаться в мир ролевых игр в GTA V.