Мы делали ремастер
целый год

Оптимизация Unity проектов

Я не являюсь гуру-профессионалом, но думаю многим начинающим пригодиться эта информация по оптимизации Unity проектов на примере моей игры Last Floor.

Что будем оптимизировать:

Звуковые файлы

Для звуковых эффектов нужно использовать wav файлы 44кгц, обязательно в моно формате (Или ставить галочку Force To Mono. Для музыкальных треков оставить стерео). Quality лучше всего оставить 100.

Для ускорения загрузки сцены лучше поставить галочку Load In Background, кроме звуков которые воспроизводятся сразу при старте сцены.

Материалы

Тут все просто - меньше материалов в Unity, больше статики и будет больше FPS Игры.

Свет

Обилие реалтайм света, теней и отражений отнимают много ресурсов. Но хуже всего это когда несколько реалтайм источников света пересекаются.

По возможности запекаем свет, на неподвижных объектах должен стоять флаг Static, в некоторых местах можно использовать реалтайм без теней.

Вообще настройка света и отражений в Юнити это тема для отдельной статьи.

Модели

Чем меньше полигонов в модели тем лучше, но так как движок разбивает все на треугольники лучше считать их.

Также движок не любит перекрытия, когда один большой треугольник заслоняет другой.

Нужно убрать все возможные полигоны которые игрок никогда не увидит, это уменьшит количество проходов отрисовки кадра и уменьшит размер тестуры (или повысит ее детализацию).

Различные мелкие модели лучше объединить в наборы и использовать одну текстуру, это сократит количество материалов в Юнити и в целом очень хорошо скажется на итоговом FPS игры.

Чтобы уменьшить количество полигонов лучше использовать технику запекания нормалей с более детализированной модели.

Развертка

Заполнять квадрат текстуры нужно по возможности максимально плотно но при этом оставляя отступы (8-16 пикселей для текстур 2к), чтобы при меньшем размере текстуры не было артефактов.

Одинаковые элементы складывать в кучу и сдвигать на 1 пункт за пределы координат (Это позволит избежать артефактов при запекании Normal и Ambient Oclusion карт).

Текстуры

Следует избегать больщих текстур 8-4к, лучше всего разместить модель на сцене и в редакторе Юнити постепенно уменьшать размер текстуры до появления мыла.

Большинство моделей с хорошей разверткой влезают в текстуру 1-2к без мыла.

Так же нужно упаковать текстуры Metallic и Smoothness в один файл для страндартного рендера. (R-Metallic, G-Пусто, B-Пусто, A-Smoothness). Для рендера HDRP будет другая техника упаковки текстур.

Для уменьшения размера билда используем сжатие CrunchedDX1 для обычных текстур и CrunchedDX5 для текстур с альфаканалом.

Код

Избегайте операций в Update, следите за нагрузкой CPU, пишите хороший код ;)

Итого у меня получилось:

Размер билда: 586Мб.

Строк кода: 5219

Моделей: 321

Текстур: 512

Звуковых файлов: 122

Музыкальных треков: 5 штук общей длительностью 25 минут.

Площадь локации: 10878 м2

Надеюсь мой опыт поможет вам сделать хорошую игру.

Страница игры в Steam: https://store.steampowered.com/app/1251300/Last_Floor/

0
12 комментариев
Популярные
По порядку
Написать комментарий...

Статья плохая и зачем написана - непонятно. Ни один из аспектов нормально не раскрыт и не объяснён. Например, у звуков есть параметры вроде сжатия, которые при неправильной настройке могут вызывать статтеры. Про материалы (куда включили и батчинг) написано всего одно предложение, хотя батчинг - один из ключевых моментов, являющийся камнем преткновения для 90% инди-разработчиков на Unity, из-за которых большинство игроков считает, что *движок* тормозит, хотя на самом деле тормозит игра горе-разработчика из-за 3 000 дроуколлов.

В общем, автор, пробуй ещё, но старайся писать более развёрнуто)

13

зачем написана - непонятно

Страница игры в Steam:

Да нет, всё понятно.

16

вернись к нам обратно масленок

0

Неа)

0

я ради тебя альфа каналы в игру добавил

0

Это нативочка своего проекта, понятно зачем.

–1

Комментарий удален по просьбе пользователя ред.

4

 Электросеть дома превратилось в телепортатор инопланетной энергии, дав жизнь некоторым бытовым приборам, и, похоже, они агрессивно настроены против людей...

На каждом этаже вас ждет испытание, в котором вы должны будете найти выход или одолеть взбесившийся чайник или фен.

Тут прекрасно все

2

Ну автор явно не нарративный дизайнер)

0

Код

Избегайте операций в Update, следите за нагрузкой CPU, пишите хороший код ;)

Крутой совет. А Fixedupdate, а singletron с контроллерами?

1

Слишком примитивно всё написано, ничего нового не откроет для себя тот, кто хотя бы немного знаком с юнити.
Вот, например, одна из немногих статей, где написано почему-зачем и есть пример как не надо и как надо. Ну и тем более первым делом стоит упомянуть профайлер.

0

Строк кода: 5219

Будто на что-то влияет

0
Читать все 12 комментариев
null