Как за выходные уменьшить сборку и ускорить первую загрузку (Unity/UE)
Если в кратце
Сначала поймите, что реально попадает в билд.
Потом заставьте ассеты похудеть: форматы, размеры, дубли.
Разделите стартовый пакет и всё остальное.
Проверьте, что первый экран тянет только нужное.
Замерьте «до/после».
История из цеха
Однажды мы ловили жалобы «игра грузится вечность».
Код не трогали вовсе. За вечер выкинули из стартовой сцены кат-сцену на 300 МБ, уменьшили пару «монументальных» текстур для дальнего фона и перевели музыку на потоковую загрузку.
На завтра билд стал легче на ~600 МБ, до меню — на 18 секунд быстрее.
Магии нет: просто не тянем то, что не нужно в первые минуты.
Зачем этим вообще заниматься?
У игрока есть одно право, которым он охотно пользуется: закрыть игру, если она долго стартует. Первые минуты — это предвкушение, если затянуть - rage quit или просто завершение задачи (учитывая нетерпеливость нынешних геймеров).
Если в загрузке мы подтягиваем целый биом, который понадобится через полчаса, мы сами себе ставим подножку.
Мы предлагаем идти от простого к сложному: сначала навести порядок в том, что попадает в первую сцену, затем — в форматах и размерах, и только после этого — в паковке и стриминге.
Шаг 1. Разобраться, что действительно попало в билд
- Соберите обычный билд и откройте отчёт по содержимому.
- Выпишите топ-10 тяжёлых позиций: текстуры, аудио, скелетные меши.
- Задайте вопрос относительно каждой позиции: видно в первые 10 минут? можно сжать/отложить?
Шаг 2. Привести ассеты в порядок — от общего к частному
Текстуры
С текстурами чаще всего теряем сотни мегабайт. Здесь работает простое правило: формат — по платформе, размер — по роли в кадре. То, что крупно и близко (герои, важные объекты), держим в более высоком разрешении; то, что формирует фон, уменьшаем.
Спрайты интерфейса собираем в атласы, чтобы игра не подгружала десятки мелких файлов.
Исходники вроде TIFF и PSD храним отдельно от путей, которые попадают в сборку: «сырьё» в релизе нам не нужно.
Аудио
Музыка и голос должны звучать достойно, но избыточный битрейт редко кто заметит.
Смысл простой: для речи оставляем битрейт повыше, для коротких эффектов — поскромнее. Длинные треки удобнее не хранить целиком в памяти, а подтягивать потоково.
Микроэкономия на десятках эффектов в сумме даёт минуты жизни загрузке и десятки мегабайт размеру.
Модели и анимации
Тут чаще всего помогают две вещи: нормальные уровни детализации и разумное количество материалов на объект.
Переходы между LOD-ами стоит настроить под реальную камеру, а не «как получилось». В скелетах полезно убрать неиспользуемые кости и шейпы, а в наборах анимаций — клипы, которые давно не вызываются.
Что не должно оказаться в первом экране
Кат-сцены, редкие облики, дальние локации — хороший контент, но не для старта. Их место — в отложенной подгрузке или во вторичных пакетах, когда игрок уже в игре.
Что делать в Unity
С Unity логика проста: разделите проект на базовый пакет и всё остальное.
Базовый — это меню, обучение, то, что точно увидят все. Остальное уходит в пакеты, которые подгружаются по событию или в фоне.
Для текстур задайте разные профили импорта по категориям: персонажи, окружение, интерфейс.
Для интерфейса используйте атласы — это ускорит открытие экранов.
С аудио поступаем так же: важное в приличном качестве, длинные треки потоково, повторы — через вариации, чтобы не хранить десятки почти одинаковых файлов.
И отдельно — стартовая сцена: выделите «bootstrap» без тяжёлых зависимостей, чтобы игрок быстрее увидел первый экран.
Что делать в Unreal Engine
Подход тот же, только инструментов больше для упаковки.
Сначала размечаем, что является первичным контентом, а что — вторичным.
Первому — дорога в начальные пакеты, второму — в отдельные архивы.
Сжатие на уровне паков включаем так, чтобы не выиграть мегабайты ценой слишком долгой распаковки; здесь важен баланс.
Для текстур используем разные профили для персонажей, мира и интерфейса; для аудио — кодирование и потоковую подгрузку длинных дорожек.
И, как в Unity, делаем лёгкую стартовую карту без лишнего груза.
План работ
За 1 час
- Сборка → отчёт → топ-10 тяжёлых элементов.
- Для каждого — решение: уменьшить / отложить / оставить.
- Убрать из стартовой сцены всё, что не нужно для меню и начала игры.
- Пересобрать и замерить время до меню.
За выходные
День 1: профили импорта текстур/аудио по категориям, ревизия LOD/материалов.
День 2: базовый/отложенные пакеты (Addressables/PAK), лёгкий bootstrap, документ с правилами.
Короткий чек-лист контроля
- Определены и обработаны 10 самых крупных ассетов.
- Стартовая сцена не тянет лишние зависимости.
- Текстуры: платформенные форматы и размеры по роли; UI — в атласах.
- Аудио: длинные дорожки — streaming; битрейт по назначению.
- Разделение на базовый и отложенные пакеты настроено.
- Зафиксированы метрики «до/после».
Типовые причины лишнего веса и решения
- Завышенные текстуры дальнего плана — уменьшить размер; визуально разница не заметна.
- Музыка целиком в памяти — включить потоковую загрузку.
- Много материалов на объект — сократить, если нет визуальной необходимости.
Итог
Эффект дают не редкие «секретные настройки», а последовательные шаги:
Аудит → корректировка ассетов → лёгкий старт → пакеты.
Такой порядок даёт результат быстро и он легко воспроизводим.
Если было интересно, ставьте реакции.
Есть что предложить или сказать? Ждём в комментах.
Миру — мир, ДЕВу — легкого билда.