Unreal Engine. Из 18 в 115 фпс.
Andrey Mikheev·31 Aug 2023
Недавно участвовал в джеме, сделал за неделю игру и загрузил сюда https://itch.io/jam/practicjam-august-2023/rate/2219369 У меня на компьютере игра как-то работала, и я подумал - ОК.
Но оказалось что у судей джема игра либо сильно тормозила, либо вообще не запускалась. Это настолько фейл, что не передать словами! Якобы «Этот ваш Unreal Engine не производительный».
Я написал об этом Кириллу, на что он сказал «Ща, всё починим».
- У меня в проекте стояла галка на SM6 (shader model 6) для DirectX 12. Для простой игры это не нужно! Снял галочку, получил +30 фпс на пустом месте.
- Направленный свет. У меня в игре в основном туннели и закрытые арены, в принципе не нужен был этот направленный свет.
- SkyLight у меня в проекте ловил отражения в реальном времени. Это лишнее.
- В стандартном проекте Анриала почему-то SkySphere не Блюпринт. Удалил старую СкайСферу, добавил нормальную.
- Пост-процесс. У меня всё было по-умолчанию, а нужно было убрать Global Illumination Lumen и убрать Reflections Lumen - заменить на Screen Space.
- Самая больная тема - расстановка света. Я не придумал ничего лучше, чем поставить 2 rectangle light, чтобы один светил вверх, второй вниз. А нужно было поставить 1 поинт-лайт и правильно его настроить. А потом запечь свет.
- У меня в проекте почти нигде не было Scene Reflection Capture сфер/боксов. Их нужно добавлять!
- Я не везде расставил Lightmass Importance Volume, а нужно было их расставлять во всех местах, где ходит персонаж.
Это Light Complexity. Слева было, справа стало. Основная проблема была в криво-расставленном свете и неправильных настройках проекта!
- Так как я просто кидал на сцену источники света, то у них Mobility по-умолчанию стояла Stationary, а не Static. Это большая ошибка, и значительно влияет на фпс.
- Бонус - нашёл в папке Config-файл с переменными CVars для таргет-платформы Windows. Как пишет Кирилл: «Этот файл может быть очень большим»
Исходники проекта:
- HiddenHold_до_исправлений
- HiddenHold_после_исправлений
Желаю удачи в оптимизации игр на Unreal Engine!
