Progen T20: скандальная правда о самой дорогой машине GTA Online
Этому городу нужно было расслабиться. К моменту выхода первой части «Грязных денег» по Лос-Сантосу колесили денежные мешки с миллионами долларов на счету, добытыми в кровавых, но тщательно спланированных, ограблениях.
Все эти деньги. К чему они, если их так много, но их не на что потратить?
И вот им дали Pegassi Osiris. Быстрый, дорогой, роскошный. За 1 950 000 долларов. Этой штукой можно было похвастаться перед остальными неудачниками.
Но счастье длилось недолго. «Грязные деньги. Часть 2» принесли в GTA Online смятение в виде Progen T20, самого дорогого суперкара за 2 200 000$.
Черт, да за эти деньги можно купить целых три Pegassi Zentorno (725 000$), и при этом различие будет лишь в том, что у T20 другой дизайн, есть адаптивный спойлер и он чуть быстрее. Всё.
Так кому же предназначена эта божественная повозка?
Данную покупку легко представить, если вы сидите на чемодане с 10 миллионами долларов после идеально пройденных ограблений. Но что делать с людьми, которые заработали свой первый миллион с большим трудом, а покупка T20 просто сведет их личный счет к печальному нулю? Они не коллекционеры дорогих суперкаров и, в первую очередь, думают холодной головой.
Тут всё в принципе понятно.
— T20: 2 200 000$
— Osiris: 1 950 000$
— Zentorno: 725 000$
Если отталкиваться чисто от денег, то при ограниченном бюджете вы можете позволить себе только Zentorno, и то, надо сказать, что это чертовски дорого для данного автомобиля!
Если бюджет у вас не ограничен, то между T20 и Osiris не слишком большая разница (всего-то «половина» Zentorno), поэтому выбрать в данном случае лучше T20, так как это топовый вариант. Ну и спойлер. Спойлер!
Скрытые мелочи
Важной особенностью каждого автомобиля в GTA Online является цена его обслуживания в LSC. Так как мы сейчас говорим о дорогих, элитных суперкарах, то при покупке такого рода роскоши вы должны еще дополнительно отложить 300-500 тысяч долларов на тюнинг в Los Santos Customs.
Ибо смысла в том, чтобы купить супекар и ездить на нем в стоке — нет никакого.
Также, не забывайте о страховке, вещь тоже не из дешевых. Каждый раз, когда вы (или не вы) уничтожите свой T20, вам придется заплатить за его восстановление 27 500$. За Осирис платить нужно меньше — всего лишь 24 000$. А так как в Лос-Сантосе, порой, творится беспредел и завистников тоже не мало. Короче, вы поняли.
Лучшие из лучших?
Так как суперкары очень быстрые и все такие спортивные, то их берут также и для того, чтобы выигрывать гонки в GTA Online. Однако, вот в чем дело — многие люди любят брать для этого Adder (1 000 000$), а некоторые извращенцы даже знают толк в Turismo R (500 000$).
Adder весьма хорош в поворотах и это преимущество, на на прямых ему немного не хватает того ускорения, что есть у Zentorno.
Turismo R же весьма бюджетный (в нашем списке) автомобиль с плохой управляемостью, однако, если вы приспособитесь к его капризному характеру, возможно, что он станет вашей любимой игрушкой-победителем в гонках.
Тест-драйв
Перед тем, как отдавать миллионы за суперкары, сделайте тест-драйв этих автомобилей в одиночном режиме игры. Это снимет большинство вопросов с повестки дня.
Различия
Каждый из наших трех героев обладает какими-то своими способностями и недостатками, прямо как супергерои из вселенной Marvel.
У Osiris недостаточная поворачиваемость. T20 быстрый и управляемый, но ему нелегко приходится на извилистых трассах или поворотах под острым углом. Zentorno скоростной, но какой-то расхлябанный и его постоянно заносит на поворотах. И если не считать Adder, который действительно хорош в поворотах, то на максимальных скоростях первое место здесь занимает T20, за ним Osiris с Zentorno.
Но все это чистая физика. Не забудем и о том, какой водитель будет управлять любым из этих автомобилей.
В итоге
Если у вас на счету есть примерно 5 миллионов GTA$, вы можете позволить себе купить Progen T20. И тут дело не столько в коллекционировании, сколько в том, чтобы у вас еще остались средства на будущие DLC, в которых Rockstar введут новый контент. Например, квартиры или гаражи. И будет несправедливо оставить себя без средств существования в GTA Online ради какой-то. тачки.
Если же вы никуда не торопитесь и не хотите понтоваться, то есть много других направлений, куда можно потратить 2 с лишним миллиона долларов. Вы можете купить Pegassi Zentorno для красоты, и брутальный Insurgent для практичности.
И даже если вы не удержались от покупки Zentorno в первой части «Грязных денег», а душа требует чего-то красивого и быстрого, то присмотритесь к Coquette BlackFin или Stirling GT.
Если вы не ходите в туалета долларами и центами, то для вас Progen T20 не стоит своих денег. Это очень завышенная цена за небольшой плюс в скорости и адаптивный спойлер.
И да, купив T20 вы не получите идеально управляемый, сбалансированный автомобиль для гонок, вам еще придется полировать мастерство в этом деле. Какой там расслабиться!
T20 gta 5 в реальной жизни
Для начала порассуждаем, почему же все названия автомобилей в GTA выдуманные? Тому две основные причины, которые можно свести к одной — лицензия.
Во-первых, лицензия на настоящие бренды стоит очень-очень дорого и накладывает ограничения. Нельзя по своему усмотрению менять облик машины, участие автомобиля в сюжетной линии тоже нужно согласовывать с правообладателем, который вообще может потребовать, чтобы в виртуальном мире не было продукции конкурирующих брендов.
Во-вторых, автопроизводители не любят, когда их детища смотрятся неприглядно. Отсюда сложности с системой повреждения машин — в редких играх лицензированные тачки можно реалистично и сильно покорежить, чаще всего дело ограничивается царапинами и болтающимся капотом. И уж точно никакой бренд не захочет, чтобы его машины ассоциировались с орудием убийства. Ferrari давит на виртуальных улицах пешеходов — такая себе реклама!
В общем, никаких лицензий в GTA быть не может. Но совсем уж noname-машины без узнаваемых силуэтов резали бы игрокам глаза, поэтому Rockstar взяла за основу настоящие автомобили и немного переработала их облик. Чтобы понять, насколько творчески создатели игры подошли к созданию автомобилей, приведем несколько (на самом деле много!) примеров. Сразу оговоримся, что невозможно показать все внутриигровые машины, поэтому ограничимся десятком-другим образцов. Почему именно на примере Grand Theft Auto 5? Потому что она наиболее актуальная и масштабная на сегодня!
Вот, например, сочетание реального автомобиля и концепт-кара — в реальной жизни такой союз прототипа Cadilla Elmiraj и продающегося вовсю Rolls-Royce Wraith просто невозможен, а в GTA — легко!
А вот вполне себе серийный Cadillac Escalade в игровом мире появился сразу в нескольких поколениях — все как в жизни.
Культовый Nissan Skyline в представлении не нуждается, но в GTA он может быть только в необычном сочетании двух поколений — R33 и R34.
Виртуальный аналог Mercedes-AMG GT даже сделан в том же цвете!
Другой пример «2 в 1», когда характерные черты двух Mercedes-Benz — купе CL и седана E-Class — объединились в одной машине.
В реальной жизни пикап Dodge Ram уже сменил поколение, а в GTA актуальным остается его предок из недавнего прошлого.
У настоящих Dodge Challenger и Chevrolet Camaro смена поколений не за горами, но вот рестайлинг вряд ли коснется их «тандема» внутри игры.
О TVR Sagaris помнят сейчас разве что самые преданные фанаты марки, а в GTA машину видят (и водят) миллионы.
А вот о Jeep Grand Cherokee у нас знают многие, и даже «переделка» для игры не смогла исказить узнаваемый облик.
Что касается Rimac Concept One, то для кого-то он известен как чуть не убивший Ричарда Хаммонда электромобиль, а для кого-то — как яркая машина из GTA.
В реальном мире машины еще нет, а вот в внутри игры модификацию Devel Sixteen уже можно обкатать.
В год 30-летия культового спорткара Honda NSX нельзя обойти вниманием и его воплощение во вселенной GTA.
Toyota наконец-то возродила Supra, а в GTA давно можно прокатиться на сочетании двух концепт-каров, которые и легли в основу нового купе.
Bentley Bentayga позволить себе в реальности может далеко не каждый, зато в игре можно сколько угодно кататься на роскошном кроссовере!
То же самое справедливо и для эксклюзивного седана Rolls-Royce Phantom, который, правда, уже сменил поколение.
Не обойтись без итальянских спорткаров. Например, универсала Ferrari FF.
А вот Ferrari 488 GTB и Pagani Huayra отдельных игровых машин не заслужили — их объединили в одной модели.
Аналогичная история приключилась с двумя гиперкарами Koenigsegg, но здесь хотя бы породнились машины одного бренда.
Своего упоминания в GTA заслуживают и машины Porsche. Например, гибридный суперкар 918 Spyder…
…или концепт-кар Porsche Taycan, который совсем скоро станет реальным серийным электромобилем.
Что до Bugatti Chiron, то он уже реально существует, и покупатели выстроились за ним в очереди, а в GTA машина — вот она, садись и гоняй!
А это необычный пикап Hennessey Velociraptor 6×6, который делают ограниченным тиражом в реальности. В игре — никаких лимитов не существует.
К чести создателей GTA V, они не ограничились одними лишь современными автомобилями и добавили в игру много культовых машин прошлого и даже гоночных спорткаров. Еще больше машин можно посмотреть в оригинальном треде в Steam.
Progen T20: скандальная правда о самой дорогой машине GTA Online
Этому городу нужно было расслабиться. К моменту выхода первой части «Грязных денег» по Лос-Сантосу колесили денежные мешки с миллионами долларов на счету, добытыми в кровавых, но тщательно спланированных, ограблениях.
Все эти деньги. К чему они, если их так много, но их не на что потратить?
И вот им дали Pegassi Osiris. Быстрый, дорогой, роскошный. За 1 950 000 долларов. Этой штукой можно было похвастаться перед остальными неудачниками.
Но счастье длилось недолго. «Грязные деньги. Часть 2» принесли в GTA Online смятение в виде Progen T20, самого дорогого суперкара за 2 200 000$.
Черт, да за эти деньги можно купить целых три Pegassi Zentorno (725 000$), и при этом различие будет лишь в том, что у T20 другой дизайн, есть адаптивный спойлер и он чуть быстрее. Всё.
Так кому же предназначена эта божественная повозка?
Данную покупку легко представить, если вы сидите на чемодане с 10 миллионами долларов после идеально пройденных ограблений. Но что делать с людьми, которые заработали свой первый миллион с большим трудом, а покупка T20 просто сведет их личный счет к печальному нулю? Они не коллекционеры дорогих суперкаров и, в первую очередь, думают холодной головой.
Тут всё в принципе понятно.
— T20: 2 200 000$
— Osiris: 1 950 000$
— Zentorno: 725 000$
Если отталкиваться чисто от денег, то при ограниченном бюджете вы можете позволить себе толькоZentorno, и то, надо сказать, что это чертовски дорого для данного автомобиля!
Если бюджет у вас не ограничен, то между T20 и Osiris не слишком большая разница (всего-то «половина» Zentorno), поэтому выбрать в данном случае лучше T20, так как это топовый вариант. Ну и спойлер. Спойлер!
Скрытые мелочи
Важной особенностью каждого автомобиля в GTA Online является цена его обслуживания в LSC. Так как мы сейчас говорим о дорогих, элитных суперкарах, то при покупке такого рода роскоши вы должны еще дополнительно отложить 300-500 тысяч долларов на тюнинг в Los Santos Customs.
Ибо смысла в том, чтобы купить супекар и ездить на нем в стоке — нет никакого.
Также, не забывайте о страховке, вещь тоже не из дешевых. Каждый раз, когда вы (или не вы) уничтожите свой T20, вам придется заплатить за его восстановление 27 500$. За Осирис платить нужно меньше — всего лишь 24 000$. А так как в Лос-Сантосе, порой, творится беспредел и завистников тоже не мало. Короче, вы поняли.
Лучшие из лучших?
Так как суперкары очень быстрые и все такие спортивные, то их берут также и для того, чтобы выигрывать гонки в GTA Online. Однако, вот в чем дело — многие люди любят брать для этого Adder (1 000 000$), а некоторые извращенцы даже знают толк в Turismo R (500 000$).
Adder весьма хорош в поворотах и это преимущество, на на прямых ему немного не хватает того ускорения, что есть у Zentorno.
Turismo R же весьма бюджетный (в нашем списке) автомобиль с плохой управляемостью, однако, если вы приспособитесь к его капризному характеру, возможно, что он станет вашей любимой игрушкой-победителем в гонках.
Тест-драйв
Перед тем, как отдавать миллионы за суперкары, сделайте тест-драйв этих автомобилей в одиночном режиме игры. Это снимет большинство вопросов с повестки дня.
Различия
Каждый из наших трех героев обладает какими-то своими способностями и недостатками, прямо как супергерои из вселенной Marvel.
У Osiris недостаточная поворачиваемость. T20 быстрый и управляемый, но ему нелегко приходится на извилистых трассах или поворотах под острым углом. Zentorno скоростной, но какой-то расхлябанный и его постоянно заносит на поворотах. И если не считать Adder, который действительно хорош в поворотах, то на максимальных скоростях первое место здесь занимает T20, за ним Osiris с Zentorno.
Но все это чистая физика. Не забудем и о том, какой водитель будет управлять любым из этих автомобилей.
В итоге
Если у вас на счету есть примерно 5 миллионов GTA$, вы можете позволить себе купить Progen T20. И тут дело не столько в коллекционировании, сколько в том, чтобы у вас еще остались средства на будущие DLC, в которых Rockstar введут новый контент. Например, квартиры или гаражи. И будет несправедливо оставить себя без средств существования в GTA Online ради какой-то. тачки.
Если же вы никуда не торопитесь и не хотите понтоваться, то есть много других направлений, куда можно потратить 2 с лишним миллиона долларов. Вы можете купить Pegassi Zentorno для красоты, и брутальныйInsurgent для практичности.
И даже если вы не удержались от покупки Zentorno в первой части «Грязных денег», а душа требует чего-то красивого и быстрого, то присмотритесь к Coquette BlackFin или Stirling GT.
Если вы не ходите в туалета долларами и центами, то для вас Progen T20 не стоит своих денег. Это очень завышенная цена за небольшой плюс в скорости и адаптивный спойлер.
И да, купив T20 вы не получите идеально управляемый, сбалансированный автомобиль для гонок, вам еще придется полировать мастерство в этом деле. Какой там расслабиться!
GTA 5 почему машину Т20 так все любят. И почему она такая быстрая?
Автомобиль имеет внушительный разгон и отличную максимальную скорость. Хорошая управляемость позволяет с лёгкостью переходить от одного типа дорог к другому, все повороты выходят крайне плавными.
Дубликаты не найдены
Мне больше нравится Т1000.
Хорошая управляемость позволяет с лёгкостью переходить от одного типа дорог к другому, все повороты выходят крайне плавными.
Это не управляемость машины позволяет, а аркадность автомобильной физики в gta 5.
Очень исчерпывающая информация
Я надеюсь вам понравится этот пост, я правда старался и это всё, что я знаю об этой машине.
Rockstar реализует наработки пользователя в GTA Online по улучшению времени загрузки
В начале марта пользователь сервиса Github с ником tostercx, также известный как t0st, заявил о способе значительного сокращения времени загрузки GTA Online до 70 процентов. Кроме того, tostercx с единомышленниками выпустили неофициальный патч для версии GTA Online 2215/1.53, в котором исправили две ошибки игры и собственно сократили время загрузки систем.
Энтузиаст предоставил развернутый анализ проблемы и методы её решения. Вкратце, замедление было вызвано «узким местом в одном потоке ЦП при запуске GTA Online». По оценкам tostercx, крупная команда разработчиков смогла бы решить проблему в течение суток после обнаружения.
К чести Rockstar, компания публично признала выводы tostercx и пообещала выпустить исправление в ближайшем патче: «После тщательного расследования мы можем подтвердить, что игрок t0st действительно раскрыл аспект кода игры, связанный со временем загрузки ПК-версии GTA Online, который можно улучшить. На основе этих исследований мы разработали некоторые изменения, которые будут внесены в предстоящее обновление игры».
Помимо удовлетворения от проделанной работы, tostercx получил солидное вознаграждение в размере 10 тысяч долларов США в рамках программы Bug Bounty. Обычно программа предусматривает выплаты за обнаружение проблем с безопасностью или конфиденциальностью в онлайн-играх Rockstar, но компания решила назначить награду «в качестве исключения», рассказал tostercx.
Ответ на пост «Как я сократил время загрузки GTA Online на 70%»
Rockstar Games подтвердила PC Gamer, что фанатское решение проблемы долгого времени загрузки GTA Online станет официальным в грядущем обновлении.
В начале марта пользователь Github tostercx, также известный как t0st, заявил, что он обнаружил способ сократить время загрузки GTA Online до 70 процентов. Кроме того, он также выпустил исправление.
Rockstar подтвердила, что выводы tostercx были верными и что исправление уже в пути.
Последнее обновление для GTA Online вышло на всех основных платформах. На PlayStation обновление весит 700 МБ, на Xbox – 1 ГБ и на ПК – 400 МБ.
Судя по всему, значительное увеличение времени загрузки, похоже, относится только к ПК. Пользователи консолей сообщают, что существенного улучшения показателей времени загрузки не произошло. В то время как игроки на ПК с радостью отмечают, что обновление оказалось наиболее эффективным.
t0st также сообщил, что он «получил награду в размере 10 тысяч долларов» в рамках программы Rockstar по поиску багов, которая обычно используется только для устранения серьезных проблем с безопасностью.
Как я сократил время загрузки GTA Online на 70%
GTA Online. Многопользовательская игра, печально известная медленной загрузкой. Недавно я вернулся, чтобы завершить несколько ограблений — и был потрясён, что она загружается настолько же медленно, как и в день своего выпуска, 7 лет назад.
Пришло время докопаться до сути.
Человек залез в «исходный код» игры, нашел криво работающую функцию и исправил ее, благодаря этому скорость загрузки возросла на 70%. Ссылки на dll для увеличения скорости в конце статьи.
Сначала я хотел проверить, вдруг кто-то уже решил проблему. Но нашёл только рассказы о великой сложности игры, из-за чего она так долго загружается, истории о том, что сетевая p2p-архитектура — мусор (хотя это не так), некоторые сложные способы загрузки в сюжетный режим, а потом в одиночную сессию, и ещё пару модов, чтобы скипнуть видео с логотипом R* во время загрузки. Ещё немного почитав форумы, я узнал, что можно сэкономить колоссальные 10-30 секунд, если использовать все эти способы вместе!
Тем временем на моём компе…
Загрузка сюжетного режима:
Без загрузочного меню, от логотипа R* до игрового процесса (без логина в Cоциальный Клуб.
Старый, но приличный проц: AMD FX-8350
Дешёвый SSD: KINGSTON SA400S37120G
Надо бы прикупить RAM: 2x Kingston 8192 MB (DDR3-1337) 99U5471
Нормальный GPU: NVIDIA GeForce GTX 1070
Если доверять этому опросу, проблема достаточно широко распространена, чтобы слегка раздражать более 80% игроков. Прошло уже семь лет!
Я немного поискал информацию о тех
Почему у них сюжетный режим по-прежнему загружается около минуты? (кстати, при загрузке с M.2 NVMe не учитывались видео с логотипами). Кроме того, загрузка из сюжетного режима в онлайн занимает у них всего минуту, в то время как у меня около пяти. Я знаю, что их железо гораздо лучше, но не в пять же раз.
Вооружившись таким мощным инструментом, как Диспетчер задач, я приступил к поиску узкого места.
Почти минута уходит на загрузку общих ресурсов, которые нужны и для сюжетного режима, и для онлайна (почти наравне с топовыми ПК), затем GTA в течение четырёх минут полностью нагружает одно ядро CPU, больше ничего не делая.
Использование диска? Нет! Использование сети? Есть немного, но через несколько секунд падает в основном до нуля (кроме загрузки вращающихся информационных баннеров). Использование GPU? Ноль. Память? Вообще ничего…
Что это, майнинг биткоинов или что-то такое? Чую здесь код. Очень плохой код.
На моём старом процессоре AMD восемь ядер, и он ещё молодцом, но это старая модель. Его сделали ещё тогда, когда производительность одного потока у AMD была намного ниже, чем у Intel. Наверное, это главная причина таких различий во времени загрузки.
Что странно, так это способ использования CPU. Я ожидал огромное количество операций чтения с диска или массу сетевых запросов, чтобы организовать сеансы в сети p2p. Но такое? Вероятно, здесь какая-то ошибка.
Профилировщик — отличный способ найти узкие места в CPU. Есть только одна проблема — большинство из них полагаются на инструментирование исходного кода, чтобы получить идеальную картину происходящего в процессе. А у меня нет исходного кода. Мне также не требуются идеальные показания в микросекундах, у меня узкое место на 4 минуты.
Итак, добро пожаловать в образцы стека (stack sampling). Для приложений с закрытым исходным кодом есть только такой вариант. Сбросьте стек запущенного процесса и местоположение указателя текущей инструкции, чтобы построить дерево вызовов в заданные интервалы. Затем наложите их — и получите статистику о том, что происходит. Я знаю только один профилировщик, который может проделать это под Windows. И он не обновлялся уже более десяти лет. Это Люк Stackwalker! Кто-нибудь, пожалуйста, подарите Люку немножко любви 🙂
Обычно Люк группировал бы одинаковые функции, но у меня нет отладочных символов, поэтому пришлось смотреть на соседние адреса, чтобы искать общие места. И что же мы видим? Не одно, а целых два узких места!
Вниз по кроличьей норе
Позаимствовав у моего друга совершенно законную копию стандартного дизассемблера (нет, я действительно не могу его себе позволить… когда-нибудь освою гидру), я пошёл разбирать GTA.
Выглядит совсем неправильно. Да, у большинства топовых игр есть встроенная защита от реверс-инжиниринга, чтобы защититься от пиратов, мошенников и моддеров. Не то чтобы это их когда-то останавливало…
Похоже, здесь применили какую-то обфускацию/шифрование, заменив большинство инструкций тарабарщиной. Не волнуйтесь, нужно просто сбросить память игры, пока она выполняет ту часть, на которую мы хотим посмотреть. Инструкции должны быть деобфусцированы перед запуском тем или иным способом. У меня рядом лежал Process Dump, так что я взял его, но есть много других инструментов для подобных задач.
Проблема 1: это что… strlen?!
Дальнейший разбор дампа выявил один из адресов с некоей меткой strlen, которая откуда-то берётся! Спускаясь вниз по стеку вызовов, предыдущий адрес помечен как vscan_fn, и после этого метки заканчиваются, хотя я вполне уверен, что это sscanf.
Он что-то парсит. Но что? Логический разбор займёт целую вечность, поэтому я решил сбросить некоторые образцы из запущенного процесса с помощью x64dbg. Через несколько шагов отладки выясняется, что это… JSON! Он парсит JSON. Колоссальные десять мегабайт JSON’а с записями 63 тыс. предметов.
.
<
«key»: «WP_WCT_TINT_21_t2_v9_n2»,
«price»: 45000,
«statName»: «CHAR_KIT_FM_PURCHASE20»,
«storageType»: «BITFIELD»,
«bitShift»: 7,
«bitSize»: 1,
«category»: [«CATEGORY_WEAPON_MOD»]
>,
.
Что это? Судя по некоторым ссылкам, это данные для «сетевого торгового каталога». Предполагаю, он содержит список всех возможных предметов и обновлений, которые вы можете купить в GTA Online.
Проясним некоторую путаницу: я полагаю, что это предметы, приобретаемые за игровые деньги, не связанные напрямую с микротранзакциями.
10 мегабайт? В принципе, не так уж и много. Хотя sscanf используется не самым оптимальным образом, но, конечно, это не так уж плохо? Что ж…
Да, такая процедура займёт некоторое время… Честно говоря, я понятия не имел, что большинство реализаций sscanf вызывают strlen, поэтому не могу винить разработчика, который написал это. Я бы предположил, что он просто сканировал байт за байтом и мог остановиться на NULL.
Проблема 2: давайте использовать хэш-…массив?
Оказывается, второго преступника вызывают сразу за первым. Даже в одной и той же конструкции if, как видно из этой уродливой декомпиляции:
Все метки мои, и я понятия не имею, как на самом деле называются функции/параметры.
Вторая проблема? Сразу после разбора элемента он хранится в массиве (или встроенном списке C++? не уверен). Каждая запись выглядит примерно так:
А перед сохранением? Он проверяет весь массив, сравнивая хэш каждого элемента, есть он в списке или нет. С 63 тыс. записей это примерно (n^2+n)/2 = (63000^2+63000)/2 = 1984531500, если я не ошибаюсь в расчётах. И это в основном бесполезные проверки. У вас есть уникальные хэши, почему не использовать хэш-таблицу.
Во время реверс-инжиниринга я назвал его hashmap, но это явно не_hashmap. И дальше ещё интереснее. Этот хэш-массив-список пуст перед загрузкой JSON. И все элементы в JSON уникальны! Им даже не нужно проверять, есть они в списке или нет! У них даже есть функция прямой вставки элементов! Просто используйте её! Серьёзно, ну ребята, что за фигня!?
Всё это конечно классно, но никто не воспримет меня всерьёз, пока я не напишу реальный код для ускорения загрузки, чтобы сделать кликбейтный заголовок для поста.
Проблема с JSON нетривиальная, я не могу реально заменить их парсер. Более реалистичным кажется заменить sscanf на тот, который не зависит от strlen. Но есть ещё более простой способ.
* подождать длинной строки
* «закэшировать» начало и длину
* если поступит ещё вызов в пределах диапазона строки, вернуть закэшированное значение
Что-то вроде такого:
А что касается проблемы хэш-массива, то здесь просто полностью пропускаем все проверки и вставляем элементы напрямую, поскольку мы знаем, что значения уникальны.
Полный исходный код PoC здесь.
Ну и как оно работает?
Прежнее время загрузки онлайн-режима: около 6м
Время с патчем проверки дубликатов: 4м 30с
Время с парсером JSON: 2м 50с
Время с двумя патчами вместе: 1м 50с
Да, чёрт возьми, получилось! :))
Скорее всего, это не решит всех проблем с загрузкой — в разных системах могут быть и другие узкие места, но это такая зияющая дыра, что я понятия не имею, как R* пропустила её за все эти годы.
При запуске GTA Online есть узкое место, связанное с однопоточным вычислением
Оказалось, GTA изо всех сил пытается распарсить 10-мегабайтный файл JSON
Сам парсер JSON плохо сделан/наивен и
После парсинга происходит медленная процедура удаления дублей
R*, пожалуйста, исправьте
Если информация каким-то образом дойдёт до инженеров Rockstar, то проблему можно решить в течение нескольких часов силами одного разработчика. Пожалуйста, ребята, сделайте что-нибудь с этим : Показать полностью 10





















