Добрый день уважаемые читатели Пикабу!
Хочу рассказать о том, как идет разработка моей игры The Walking Evil, над которой я работаю уже почти год. Игра является Survival horror от 3 лица, с фиксированной кинематографичной камерой.
В игру добавлено много нововведений. Доделал все катсцены. На видео можно наблюдать английский язык, однако в игре есть и Русская озвучка.
Завершил оптимизацию проекта. Проведен тест на ультра настройках, более чем средний по характеристикам ПК выдает 120 FPS, ноутбук с видео картой Nvidia Geforce 820m и процессором Intel CORE i5 выдает 50 FPS.
Хотелось бы сказать пару слов по оптимизации ваших проектов, если ваша игра конечно придерживается 3D графики.
Первое что вам нужно, это график производительности, вызвать его можно с помощью консольной команды `(тильда для вызова консоли "Ё") вписать команду ProfileGPU и нажать клавишу Enter.
Ниже на скриншоте можно наблюдать как выглядит график GPU
В левом нижнем столбце мы видим названия процессов, а в правом Duration (ms) затраченноевремя на обработку процессов. Что больше всего сжирает времени, над тем и нужно работать.
К примеру: очень много времени уходит на Light, обработку света, значит оптимизируем тени.
Постараюсь написать без заумных слов, что бы новичкам было понятней.
Шкала по которой можно ориентироваться: 1) синий цвет, хорошая оптимизация, 2)красный цвет, плохая.
Сцена с ужасными картами теней.
Идеально оптимизированная сцена с картами теней.
Для начала включим режим для просмотра "карт теней".
Для этого смотрим на скриншот ниже, еще можно включить этот режим сочетанием горячих клавиш Alt + 0
Есть два способа настроить карту теней:
1) Выделяем любой StaticMesh на вашей сцене, и ищем настройку Lighting
Этот способ подходит когда один и тот же объект используется в разных сценах для разных ситуации. К примеру возьмем стул: на одной сцене (карте) он стоит на самом виду для игрока, и требует к примеру карту теней значению 16.
В другой сцене этот стул находится в темном углу его очень плохо видно он далеко, и используется в качестве баррикады лестницы (то место куда игрок не пройдет) в таком случае ему достаточно значения 8 как на скриншоте ниже. Так же можно вообще отключить ему тени, галочка Cast Shadow, он же в темном углу)) Где нет источников света.
2) Способ два экономит x20 вашего времени, и затрагивает сразу все StaticMesh одного типа.
Чтобы им воспользоватся ищем интересующий нас StaticMesh в папках проекта, нажимаем на него два раза левой кнопкой мыши, либо жмем правой кнопкой мыши и выбираем Edit...
После открытия окна, ищем раздел General Settings и изменяем карту теней, которую хотим.
Тем самым мы изменим все карты теней этого типа StaticMesh на всех картах.
Простым языком, везде где используются эти модельки они изменят карту теней, то есть вам не нужно будет отдельно выделять каждый StaticMesh на Сценах(картах) и менять карту теней каждому отдельно.
Однако стоит помнить, что если на модели используются LOD, то менять карту теней желательно для каждого лода.
LOD помогут сделать вашу сцену более детализированной с помощью высоко полигональных моделей, при этом не потеряв много ресурсов оптимизации. В движке присутствует функция Авто LOD.
Однако в любом случае не стоит использовать большое количество высоко полигональных моделей в сцене потому что, каждая модель использующая LOD будет иметь невидимую сферу (дистанцию) просчет которой будет определять, какой LOD включить в данный момент.
Чтобы включить систему авто лодов нужно проделать следующие:
(Не забываем снять галочку с Auto Compute LOD Distance)
В разделе LOD Settings строчка Number of LODs изменяем значение до 3 ( значение Number of LODs отвечает за количество лодов, которое вы хотите сделать вашей модели)
После нажимаем Apply Changes
Далее идем в раздел LOD Picker и нажимаем галочку на Custom в разделах чуть ниже должны будут появится LOD 0 LOD 1 LOD 2 LOD 3 раскрываем все эти разделы, и их подразделы.
LOD 0 мы оставляем все как там есть. (Далее я буду использовать другую модель для примера, это не столь важно)
Идем в LOD 1 и там ищем Screen Size - это ограничитель дистанция, как только камера игрока достигнет этого значения, включится LOD который имеет эту дистанцию.
Можете поиграться с камерой, отдалить ее, и приблизить, вы должны заметить как это значение будет меняться в верхнем левом углу. Отдалите камеру на столько, на сколько посчитаете нужным для включения LOD 1. Запишите значение которое увидите в верхнем левом углу экрана Screen Size в строчку с правой стороны в Screen Size (под материалами) в моем случае это значение равняется 0,187.
Далее можно отключить Cast Shadow под каждым материалом (смотри скриншот ниже)
Далее опускаемся до раздела Reduction Settings
Уменьшаем значение Percent Triangles с 100% до 80% (в моем случае это 20%) в вашем случае это 80%!!!!
Каждый последующий (LOD 2 3) должны будут иметь это значение меньше на 20%
Пример: LOD 0 - 100% LOD 1 - 80% LOD 2 - 60% LOD 3 - 40%
Percent Triangles - это раздел отвечает за уменьшение полигонов.
Silhouette, Texture, Shading уменьшаем до LOW.
"В LOD 2 и LOD 3 в будущем ставим LOWEST."
После нажимаем Apply Chages (применяются настройки)
После идем к LOD 2 и LOD 3 проделываем почти тоже самое.
В каждую модель мы можем добавить дополнительный материал, который будет использоваться для лодов.
Нажимаем + (обведено на скриншоте)
И после в низу добавится новый материал, так же указанно красной обводкой на скриншоте.
После чего назначаем туда приближенный по цвету и гамме, но более легкий материал.( СМОТРИ НА ОДИН СКРИНШОТ НИЖЕ)
Приведу пример для чего это нужно:
В моем случае модель окно, у которого материал с динамикой, стекающие капли по стеклу.
Я создал более простой материал, и добавил его в Element 3.
Element 2
Можем наблюдать на сколько тяжелый материал используется на LOD 0 (стекание капель по стеклу)
Element 3 (материал который мы создали и добавили сами нажав +) Его мы будем использовать на LOD 2 и LOD 3
Можем наблюдать на сколько материал стекла простой, не использует даже Текстуры, только Color. Однако он не как не повлияет на качество картинки в целом, так как он будет отображаться на последних лодах LOD 2 и LOD 3
То есть, игрок каким бы зрением не обладал, на таком расстояние не заметит разницы на стекле. Когда игрок подойдет ближе к окну включится обратно LOD 0 и LOD 1 на которых будет тяжелый материал используемый в Element 2.
Идем в LOD 2 и LOD 3 и меняем в Section 2 материал на более легкий, который мы добавили нажав ранее +.
Теперь мы имеем модель с LODs которая будет экономить ресурсы ПК и давать оптимизацию.
Возможно позже затрону тему оптимизации в других направлениях в другой статье, посмотрю на сколько моя игра понравится пользователям.
Разработка игры приблизилась к завершению, все готово на 100%, однако я решил выйти в ранний доступ, на 2-4 недели, чтобы стабилизировать баланс, добавить что-то нового, пофиксить какие то маленькие баги. Которые возможно не были увидены при тесте игры.
Кто хочет поддержать, пожалуйста добавьте игру в список желаемого, нажав на The Walking Evil.
Релиз игры запланирован на "Завтрашний день" 22.04.2020.
Всем добра и удачи, не болеть!