А потом мы охуеваем, а чо нет оптимизации? Наверное невероятно сложно программировать, а уж точно не потому, что это делают криворукие макаки. За восемь лет, блядь, не исправить то, что сделал один энтузиаст с помощью ста строк кода. И это великие рокстары, чо там у остальных я даже думать боюсь
Энтузиаст ускорил загрузку GTA Online с 6 до 2 минут, дописав всего лишь 100 строк кода. Удивительно, что «бутылочным горлышком» для скорости загрузки выступало использование лишь одного потока процессора и неудачный парсер для JSON-файла. И эти проблемы удалось исправить без доступа к исходникам, поэтому странно, что в Rockstar за 8 лет до этого не додумались.
>>6347773 (OP) Если ты когда-нибудь кодил более-менее большой проект, ну хотя бы на команду из 30-40 человек и длительностью хотя бы пару лет, то в курсе, насколько плохо при таком объеме работы и таком количестве людей идет тестирование и отладка. Чтобы не превращать каждую игру в Ждалкера, в первую очередь решают критичные проблемы. Скорость загрузки между локациями это еще как-то подходит под это дело, а вот скорость загрузки при входе в игру это реально последнее, на что захотят тратить время и финансы. Поэтому если в проекте сидит хотя бы один криворучка и/или лентяй (а вероятность этого очень высока), то его говнокод в таких местах останется говнокодом, сад бат тру. Теоретически такие некритичные вещи правятся после релиза, но на деле надо реализовывать новые фичи или фиксить какой-нибудь вылезший лютый пиздец, на худой конец хуячить очередной длс/лутбокс за бабосы. Оптимизация говнокода в подобных маловажных местах снова оказывается где-то в хвосте очереди.
Правда, меня удивляет, что рокстары не смогли на такую хуйню выделить ресурсы за 8 лет, у них-то нехватки точно нет. Вангую, подобный говнокод можно в значительной степени отловить и исправить, если посадить нормального разраба две недели поковыряться.
>>6347993 >>6347773 (OP) Двачую программистскую педорашку, студент умник с шилом в жопе конечно может улучшить какое-то конкретное место если много лишнего свободного времени, а вот гта сделать всё таки не сможет, другого рода деятельность.
>>6348368 >студент умник с шилом в жопе конечно может улучшить какое-то конкретное место если много лишнего свободного времени Алле, блядь, у тебя игра загружается 6 ШЕСТЬ ебаных минут нахуй, ты не думаешь, что это не совсем нормально, погромист хуев?
>>6348517 Даже если сидит, он занимается более насущными проблемами, написано же >>6348477 > ты не думаешь, что это не совсем нормально Новая норма, привыкай
>>6347993 О, коллега. Я проскроллил статью автора патча. Насколько понял там парсер на каждом шаге делал strlen всего джсона, а реализация strlen перебирала все оставшиеся байты строки пока не встречала терминатор (ноль).
Создатели парсера не заметили нихуя сложность O(n^2)? Как они это умудрились сделать?
И второе: это что же парсер на голом Си?
Третье (про криворучку): лентяй просто взял парсер и использовал. А криворучка тут тот персонаж, кто написал парсер.
>>6348368 >>6348517 >>6348766 Это и есть насущная вещь, просто кодер в студии это такой-же планктон, а задачи ставит манагер.
В компании очень редко возникает идея "о, че-то абсолютно правильно выполненное задание раньше можно выполнить в 3 раза лучше наверное, давай-ка Васян его перепроверит"
>>6348992 >Создатели парсера не заметили нихуя сложность O(n^2)? Как они это умудрились сделать? Включаю вангу: парсер ебнули по принципу "как можно проще и хуй с оптимизацией". Я сам временами в некритичных по скорости местах могу так же ебнуть говнокод, потому что это максимум лишние 0.05 секунды замедления работы, а образец нормального кода - это надо потратить три минуты, чтобы залезть в свою свалку скриптов, а у тебя настроение хреновое, троюродная бабушка помирает? какой-то долбоеб снова выехал к тебе на встречку, etc. Но соглашусь, в данном случае класть хуй на оптимизацию настолько жестко это как-то через край уже. >это что же парсер на голом Си? Почему бы и нет, в любой сфере сейчас можно встретить вещи, которые по сути как будто в 1993 году написаны. Мне недавно стандартная функция оракла 11 версии тоже продемонстрировала древний ад и израиль. >лентяй просто взял парсер и использовал. А криворучка тут тот персонаж, кто написал парсер Тут скорее вопрос, почему он не прикинул, насколько быстро это все будет работать, хватаясь за готовое решение. Вряд ли этот кусок кода писался без осознания, что он пойдет в загрузку игры.
>>6349312 У меня из недавнего по поводу парсинга джсона вот такая история. Джсон специфицирует только тип double (никаких интов), и то есть точные целые значения можно туда пихать только 52бита. А тестировщики начали ебашить 64-битные ради теста, и закономерно всё сломалось в стандартном парсере из qt.
Окей, вроде и решение есть - берем новейший парсер (такой как nlohmann/json), прикручиваем и всё норм. Менеджмент оценил риски такого решения против рисков что у нас когда-нибудь встретится целое больше 52бит (числа встречаются в айди объектов, которые инкрементируются со временем, и размерами объектов в байтах). И пришли к выводу, что нахуй. Во-первых с неделю тратить на прикручивание парсера, во-вторых фиксить потом неизбежную регрессию - а 53 бита в рамках "ближайшего миллиона лет" нужно не будет.
Сказали : нахуй, в продакшен.
И были правы в итоге. Сейчас вышла Qt6 где (вроде бы, еще не проверяли) можно парсить 64битные целые из джсона из коробки. То есть - просто проект теперь пересобрать к следующему патчу и всё, проблема решена.
>>6347993 Стенка оправданий, игры разрабатывают некомпетентные долбоёбы на аутсорсе и руководство которое интересует лишь прибыть. Отсюда все проблемы.
>>6349369 >руководство которое интересует лишь прибыль >2021 год >ставить кому-то в укор работу ради прибыли Ты до сих пор за звание коммунистической бригады №1 работаешь в две смены, что ли?
Как можно одновременно топить за капитализм и быть против пиратства. Ведь пиратство это инструмент рынка против тех бездарных капиталистов кто не смог заставить людей платить.
>>6349443 Потребители жуют и причмокивают, как видишь. Всего несколько лет понадобилось, чтобы приучить потребителей наворачивать говно вместо продукта большой ложкой (а до этого - продукт игросодержащий вместо нормальных игр).
> поэтому странно, что в Rockstar за 8 лет до этого не додумались. Что странного?Кому ето блядь там нахуй нужно?Продукт ушел, быдло ломится все работает. Потребляха не человек и рокстары ето прекрано знают.
>>6349698 Да чего смешного? Релиз отложить на неделю из-за того что через 10 лет будет слишком медленно парситься чрезмерно разросшийся джсон.
Конечно нельзя откладывать релиз в таком случае.
А проёб в том, что потом, уже после релиза, в первых же патчах не исправили эту залупу. И даже если не в первых патчах, а скажем через пару лет, когда стали заметны тормоза - нихуя не сделали. Вот это - проёб без сомнений.
>>6349008 >Так что ему банально повезло, что узкое место было именно там. Как бы голову то надо включать, хоть иногда. Один поток это же пиздец, мы чо, в 90-е погромируем? Даже на джуновских собесах про многопоточность спрашивают.
>>6349024 >В компании очень редко возникает идея "о, че-то абсолютно правильно выполненное задание раньше можно выполнить в 3 раза лучше наверное, давай-ка Васян его перепроверит" Как бы оптимизация то игры должна быть, не? Я вот сам помню, когда играл тоже охуевал, а чо загрузки такие долгие. У них мысли такой не возникало?
>>6350499 >Как бы оптимизация то игры должна быть, не? Навскидку скажу, что за последние 10 лет максимум 5-10% игр проходили нормальную оптимизацию. Примерно у 50% в списках задач разрабов, судя по всему, вообще никогда не было строки оптимизация.
>>6350492 Расскажи как парсить джсон многими потоками. Причем парсером общего назначения, который не знает, что например у тебя там массив, и можно его элементы раскидать по потокам в функциональном стиле (а.к.а map/reduce, или если угодно map/foldr).
>>6350492 Собесы с реальным миром очень редко пересекаются. Тем более пятёрка разрабатывалась в том числе под пс3, где нормального многопотока нет в принципе, потому что более половины ядер заточены под определённый вид операций и в другие не умеют от слова "совсем".
>>6351262 10 сраных мегабайт должны парситься одним потоком спокойно за доли секунды.
Короче, единственное что можно предъявить разработчикам - это то, что они нихуя не пошевелились и не сделали патч через годик-другой.
Ну ладно, на релизе проебались, взяли говеный парсер. Но потом-то поддержка продукта продолжается, тем более что там наверное какие-то денежки идут за онлайн. Вот в чем вопрос - опять в менеджменте, который не озаботился загрузить программиста на неделю-другую (и сколько-то тестировщиков), чтобы он просто проапдейтил или заменил парсер.
>>6347773 (OP) >Наверное невероятно сложно программировать Да. Это тебе не хеллоуворлд писать. Сложность измеряется не в количестве строк кода, если что.