Как перестать страдать 4 или "чо там с оптимизацией?"

Набор настроек графики​

По традиции расскажу о том с чего появилось осознание проблемы и как я её решил для себя

Как обычно это бывает "Внезапно" потребовалось сделать рабочий билд для девгама и оказалось что каждый уровень имеет уникальные настройки света, материалов, отражений и прочего и пришлось причесывать всё сразу бегая по сценам и перепроверяя кучу параметров. Конечно для бета версии с 15 уровнями это было решено за несколько часов ручной работы, но возник закономерный вопрос, как перестать страдать так каждый раз?

Для начала я коротко опишу с чем приходится страдать, а именно:

1. Настройки камеры, режим дефферед, форвард, лит и др

2. Настройки и количество светильников в каждом уровне

3. Постэффекты

4. Отражения

5. Лайтпробы

6. Материалы и шейдеры

7. плагины

8. Частицы

Скажете что мало? Но по факту автоматизация всего этого выглядит как то вот так:

Scriptable Object квалити левела
Scriptable Object квалити левела

Стандартные QualitySettings в юнити умеют управлять только размером текстур, теней и ещё кое чем. то есть охватывают не больше 20% всех нужных нам параметров. А производительность от одного к другому очень сильно разнится, поэтому надо всегда тонко настраивать последовательность включения той или иной графической фичи.

В итоге я пришёл к тому, что просто создал набор профилей настроек графики через Scriptable Object и подобрал эмпирически последовательность этих самых фич. Данная система позволяет контролировать целиком все уровни игры срабатывая во время загрузки любого уровня. Теперь не надо париться с оптимизацией:)

А какие у вас есть примеры подобных автоматизированных систем?

ну и по традиции ещё гифка :) Это процесс балансировки физики катапульты и шаров для метания и уничтожения злобных ЛегоПацанов

А не разбить бы нам чегонибудь на досуге, пока собираем башенку?​

Подписывайтесь в ВК и тыкайте на ссылку стима:) спасямба

Какие темы интереснее всего освещать, код, графику, оптимизацию или ещё чего? Пишите в комментах и обрещете!

4444
52 комментария

Скажу не как разработчик коим не являюсь, а как обычный юзер. Гифки - супер.

Интересно узнать о оптимазации графики, вот так, более-менее простым языком чтобы понять было видно с какими сложностями сталкиваются девелоперы даже не в самой большой игре.

8
Ответить

Если вы на оптимизацию смотрите со стороны разработчика, то оптимизация - это не выбрать настройки графона так, что бы игра не тормозила.

Оптимизация - это переписать тормозящий код так, что бы он не тормозил. Гейдев, блят.

1
Ответить

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

Миф же о переписывании алгоритмов идёт с тех далёких времён, когда каждая игра писала свой собственный рендер. Работая с готовым closed source движком, вы практически ничего на критическом пути не перепишете, оно всё будет на анативном уровне (исключения бывают, но остаются исключениями). У вас туда доступа нет, и не надо: всё настраивается.

6
Ответить

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

Ответить

Не понимаю зачем делать оптимизацию к каждой сцене разной?

Вы бы еще разрешение экрана меняли в зависимости от сцены. 

1
Ответить

Интересно, что бы вы сказали, если бы узнали о динамическом разрешении на консолях?

3
Ответить

Затем что игрок будет в шоке, если одна сцена будет давать 120 фпс, а вторая 24

Ответить