Инструмент, который видит скрытое (Palantir)
Примерно год назад, в процессе подготовки локации к сдаче, мы столкнулись с ужесточением требований к оптимизации. На тот момент в компании не было готовых инструментов для Level Artist, предназначенных для решения этой задачи. Интерес к технологиям ИИ в то время был высок, и я, увлекаясь новыми технологиями, уже пробовал использовать ИИ для написания кода при решении простых задач. Хотя реализовать базовые функции было возможно, от пользователя всё ещё требовалось внимательно контролировать действия ИИ, так как агентов ещё не существовало, а код приходилось писать прямо в чате и собирать по частям. Именно тогда я решил создать собственный инструмент для оптимизации локаций. Я выбрал подход, основанный на поиске материалов по всей иерархии в Unity. Структурировав эти данные, я смог получить детальную статистику по использованию на сцене конкретных материалов, текстур и префабов.
Это позволило быстро находить объекты, использованные лишь один раз, или текстуры без настроенного сжатия. Казалось бы, это простые вещи, но даже с таким инструментом мы перестали тратить время на слепой поиск проблем. На скриншоте видна первая версия инструмента с минимальным функционалом. Это был очень «забагованный» прототип, но он уже мог выполнять свою основную задачу.
После этого инструмент выполнил свою задачу и был отложен до момента, пока мы не доделали очередную локацию. Когда снова встал вопрос оптимизации, я вернулся к его разработке и примерно за 2-4 дня реализовал новую версию. В ней появился новый функционал, множество фильтров и поиск дубликатов.


Обновлённая версия инструмента уже гораздо лучше показывала состояние локации, её слабые и сильные стороны. В некоторые моменты это позволяло оптимизировать до 30% исходных материалов и текстур на карте, просто заменяя их часто используемыми аналогами. Это снижало нагрузку, практически не влияя на визуальное качество. Одним из удобных инструментов на тот момент стал режим префабов, который позволял просматривать текстуры, используемые конкретным префабом. Также режим поиска дубликатов помогал устранять однотипные материалы с одинаковым набором текстур, но слегка разными настройками — в какие-то моменты у нас могло быть «50 оттенков серого бетона».
И, наконец, спустя год итеративной разработки, я могу сказать, что инструмент в каком-то смысле готов. Он был оптимизирован для работы с большими сценами: увеличена скорость расчёта локаций и обработки огромного количества материалов, полностью переработан алгоритм анализа, улучшен интерфейс и многое другое. Перечислять все улучшения, наверное, займёт слишком много времени.
Но, кроме того, инструмент обзавёлся полностью новым функционалом, который может анализировать сцену в объёмах, показывать загруженность зон по материалам и префабам, а также строить на основе данных карту высот загруженности. Что это даёт? На основе новых данных после анализа можно попытаться улучшить фреймрейт, опираясь на хайтмапу инструмента. Она показывает самые загруженные блоки после анализа, а также критические места, где между блоками наблюдается большой разброс по потреблению памяти.
Если кому то будет интересен данные инструмент и как он работает В следующих постах, постараюсь записать видео и наглядно все показать.
