«Чтобы и топовая картинка, и запускалось на калькуляторе»: тред бывшего левелдизайнера Skyforge об оптимизации игр
Почему у игр возникают проблемы с производительностью и несколько советов.
Ярослав Кравцов, который работал левлдизайнером в Allods Team, а сейчас занимается инди-разработкой, опубликовал в своём твиттере тред о том, как оптимизируют игры. Поводом послужило заявление сооснователя CD Projekt RED Марчина Ивински, в котором тот назвал систему стриминга одной из основных проблем Cyberpunk 2077.
По словам Кравцова, в студиях нередко стоят «топовые компьютеры», которые облегчают работу разработчикам и позволяют отделу маркетинга демонстрировать игру со всеми новейшими техническими достижениями. Однако ближе к релизу может выясниться, что такие устройства есть лишь у малого количества игроков, «а у остальных игра будет с низким fps, долго загружаться и вообще хорошо, если запустится».
При этом купить в офис старый компьютер для проверки работоспособности билда — это тоже непростая задача, ведь каждый компонент нужно искать на вторичном рынке.
В целом, гораздо разумнее делать игру, ориентируясь в первую очередь на минимальную конфигурацию, а уже потом «наворачивать красоту» для более мощных устройств.
Минимальные требования складываются из данных по статистике систем — то есть разработчики как правило ориентируются на ту конфигурацию, которая есть у большого числа игроков.
Открытые миры, как в той же Cyberpunk 2077, отличает то, что всё их наполнение нельзя разом загрузить в память. Тут на помощь приходит стриминг, благодаря чему объекты впереди игрока постоянно подгружаются, а позади — выгружаются. Однако у стриминга есть предельная скорость и порой игрок может заметить подгрузку окружения — например, при быстром перемещении по миру.
Скорость стриминга зависит от носителя, на который установлена игра. Так, при использовании SSD проблем со стримингом меньше, чем при установке на HDD. Однако второй дешевле и шире распространён, из-за чего «игры долго загружаются, а затем не справляются со стримингом».
Именно поэтому, по словам Кравцова, на некоторых компьютерах Cyberpunk 2077 не справляется со стримингом, хотя сама система, считает разработчик, должна быть невероятно сложной, чтобы определять приоритет объектов для загрузки.
Другим важным инструментом оптимизации Кравцов называет LOD (level of details). Суть в том, что объекты, которые находятся далеко от игрока, имеют меньшую детализацию, а значит потребляют и меньше ресурсов.
На производительность оказывают воздействие и источники освещения, которые производят тени в реальном времени. В целях экономии тут используют либо запечённое освещение, либо безтеневые источники.
Далее Кравцов описывает несколько хитростей, которые могут помочь новичкам с оптимизацией игры.
Разработчик также отмечает, что его тред ориентирован в первую очередь на новичков.
В заключение Кравцов объясняет, почему выходят игры с проблемной производительностью. По его словам, игр без багов не бывает и QA-команда всегда составляет отчёты о них. Дальше всё зависит от руководства проекта, которое должно принять решение: выпускать игру в том или ином состоянии или отложить релиз.
Оптимизация на поздних этапах, по словам Кравцова, — трудоёмкий процесс, ведь разработчикам приходится переписывать целые системы, если проблема в коде, или переделывать тысячи моделей, если что-то не так с данными. Но и преждевременная оптимизация — не лучший выбор, ведь можно потратить много времени на то, что в итоге вырежут из игры.