Voidwalker - или просто и наглядно об оптимизации в играх
Здравствуй, DTF! Тормозит ли ваша игрушка на вашей модной видеокарте или процессоре? Ругались ли на разрабов за оптимизацию? Вот вам простой и наглядный пример изнутри, как может выглядеть оптимизация.
Поставили нам задачу красить спрайт игрока в разные цвета в зависимости от полученного урона. Для простоты берем HP и просто рисуем фигурку игрока каждый раз. А потом успешно забываем про это на будущее. Ну и пусть по заданию менеджера релизим бегом как есть.
Теперь включаем профайлер и играем ровно 1 минуту.
А потом добавляем кэширование, работы на 2 минуты.
Вот так ровно одна забытая оптимизация зеленых/желтых/красных ботинок игрока сожрала в 172 (!) раза больше памяти, чем могла бы. Почти 40 Мб вместо жалких 256 Кб.
Это мы еще CPU Time в расчет не брали. Спойлер - 1580 мс за минуту вместо 20 мс, или в 79 раз больше. 1,5 секунды из 60 мы потратили тупо на отрисовку спрайта.
У нас же у всех по 32 Гб одной ОЗУ, такое можно и не заметить. Или потерять. Или поставить низким приоритетом.
А теперь представьте, какое безумное количество элементов в современных играх, и то же самое кэширование, реализованное в движке, может быть тупо забытой кем-то галочкой в миллионах строк кода и экранов в UE5.
И даже человек, который это заметил, может быть не вправе это исправить в текущем спринте, или взять в работу из-за низкого приоритета (так как новая фича для менеджера всегда важнее любой оптимизации).
Вот так и живем.