Энтузиасту удалось на 70% сократить время загрузки в ПК-версии GTA Online
По его словам, проблема скрывалась в неоптимальной обработке нескольких файлов.
О своём небольшом проекте рассказал пользователь под ником t0st, который в свободное время занимается реверс-инжинрингом. По словам программиста, его не устраивали загрузки в GTA Online, которые могли занимать около шести минут, в то время как для одиночного режима требуется чуть больше минуты.
t0st показал результаты одного из опросов на Reddit, которые подтверждают, что проблема долгих загрузок в Online довольно распространённая среди игроков.
Чтобы найти проблемный участок, t0st использовал профилировщик Luke Stackwalker, а затем запустил дизассемблер с целью углубиться в файлы игры.
Разработчик выяснил, что игра обращается к файлу JSON с 63 тысячами записей и размером около 10 МБ, что не так много, но неоптимальная обработка такого количества данных всё равно замедляет загрузки в GTA Online. Однако это лишь одна из причин, которую выявил t0st.
Судя по всему, сам файл содержит список всех возможных предметов и улучшений, которые можно купить в игре. Как уточняет автор, это предметы, покупаемые за игровые деньги, которые напрямую не связаны с микротранзакциями Shark Cards.
Вторая проблема заключалась в том, что после завершения разбора JSON игра проверяет уникальность каждого из 63 тысяч его элементов, сравнивая со всеми остальными, что в сумме даёт почти два миллиарда операций сравнения.
После выявления проблем автор изменил исходный код файлов и опубликовал их на GitHub. Он отметил, что это лишь концепт и использование исходников может привести к бану в GTA Online.
В конечном счёте разработчику удалось сократить время загрузок с шести минут до 1 минуты и 50 секунд.
Автор выразил надежду на то, что его работу заметит Rockstar — для программистов студии он кратко описал свой способ решения проблемы, который считает самым лёгким. По словам t0st, исправление недочётов должно занять не больше одного дня и для этого требуется только один программист.