Все новости
Это интересно
Сейчас читают
Grand Theft Auto 5
Аватар Evernews Evernews

Фанатский патч для GTA Online ускорил загрузку в 3 раза

10
0
Поделиться
Телеграфировать

Будет неплохо, если разработчики его изучат и реализуют аналогичные улучшения сами

Фанатский патч для GTA Online ускорил загрузку в 3 раза

Онлайн-режим Grand Theft Auto 5 грузится очень долго: в некоторых случаях его полная загрузка может занимать больше десяти минут, это гораздо дольше, чем загрузка одиночного режима. Латвийский инженер под ником t0st, играющий в GTA Online, решил разобраться, в чем тут дело.

Проведя несколько экспериментов, t0st выяснил, что на его PC (AMD FX-8350, SSD-накопитель Kingston и 16 гигабайт DDR3) одиночная кампания грузится 70 секунд, а мультиплеер — в среднем 360 секунд. Опросы среди фанатов показывали, что может быть и хуже.

Инженер заметил, что увеличение производительности PC по-разному влияет на скорость загрузки мультиплеера и одиночного режима. У игроков с мощным железом GTA Online могла грузиться за пару минут, но загрузка сюжета не ускорялась. Значит, есть простор для оптимизации.

Затем t0st решил посмотреть, как вообще происходит загрузка онлайн-режима. Оказалось, что большую часть времени GTA Online грузит на 100% одно из ядер процессора, не создавая нагрузку ни на сеть, ни на диск, ни на память. Это было странно.

Чтобы найти суть проблемы, инженер запустил GTA Online под профайлером и обнаружил пару мест, где во время загрузки игра проводила больше всего времени. Затем нужные места были изучены с помощью дизассемблера и x64dbg.

Оказалось, что большую часть времени при загрузке игра тратит на парсинг гигантского JSON-объекта весом примерно в 10 мегабайт. Внутри у него порядка 63 тысяч записей; скорее всего, полагает t0st, это каталог всех предметов, которые можно купить в игре.

Изучив парсер JSON и обработку файла, t0st пришел к выводу, что код работает крайне неоптимально. Например, при добавлении нового элемента из JSON в игровые данные происходит поиск по всему массиву уже добавленных уникальных ключей вместо использования hashmap или похожих быстрых решений.

Кроме того, оказалось, что все идентификаторы и элементы в JSON и так уникальны — проверять их еще раз нет никакого смысла. Так или иначе, t0st понял, что проблему можно устранить: нужно лишь сделать неофициальный патч.

Инженер переопределил пару функций, использовавшихся при обработке JSON, убрав из них ресурсоемкие, но бессмысленные проверки. К сожалению, код привязан к адресному пространству игры, после выхода официального патча оно может изменить.

После патча загрузка GTA Online ускорилась с приблизительно 360 секунд до примерно 110 секунд — то есть более чем в три раза. Инженер надеется, что разработчики из Rockstar Games обратят внимание на его эксперимент и сделают разбор JSON более эффективным.

Читать далее
За сколько вы готовы купить GTA VI?
До 8000 рублей
503 голоса, 6.2%
До 7000 рублей
159 голосов, 2.0%
До 6000 рублей
197 голосов, 2.4%
До 5000 рублей
798 голосов, 9.8%
До 4000 рублей
236 голосов, 2.9%
До 3000 рублей
383 голоса, 4.7%
До 2000 рублей
932 голоса, 11.4%
За любые деньги
449 голосов, 5.5%
Ни за сколько, я пират
4486 голосов, 55.1%
Теги: Grand Theft Auto 5, Игры
Аватар Evernews
Evernews
8074 подписчика