Unreal Engine. Из 18 в 115 фпс.

Недавно участвовал в джеме, сделал за неделю игру и загрузил сюда https://itch.io/jam/practicjam-august-2023/rate/2219369 У меня на компьютере игра как-то работала, и я подумал - ОК.

Unreal Engine. Из 18 в 115 фпс., image #1

Но оказалось что у судей джема игра либо сильно тормозила, либо вообще не запускалась. Это настолько фейл, что не передать словами! Якобы «Этот ваш Unreal Engine не производительный».

Я написал об этом Кириллу, на что он сказал «Ща, всё починим».

Unreal Engine. Из 18 в 115 фпс., image #2
  1. У меня в проекте стояла галка на SM6 (shader model 6) для DirectX 12. Для простой игры это не нужно! Снял галочку, получил +30 фпс на пустом месте.
Unreal Engine. Из 18 в 115 фпс., image #3
  1. Направленный свет. У меня в игре в основном туннели и закрытые арены, в принципе не нужен был этот направленный свет.
Unreal Engine. Из 18 в 115 фпс., image #4
  1. SkyLight у меня в проекте ловил отражения в реальном времени. Это лишнее.
Unreal Engine. Из 18 в 115 фпс., image #5
  1. В стандартном проекте Анриала почему-то SkySphere не Блюпринт. Удалил старую СкайСферу, добавил нормальную.
Unreal Engine. Из 18 в 115 фпс., image #6
  1. Пост-процесс. У меня всё было по-умолчанию, а нужно было убрать Global Illumination Lumen и убрать Reflections Lumen - заменить на Screen Space.
Unreal Engine. Из 18 в 115 фпс., image #7
  1. Самая больная тема - расстановка света. Я не придумал ничего лучше, чем поставить 2 rectangle light, чтобы один светил вверх, второй вниз. А нужно было поставить 1 поинт-лайт и правильно его настроить. А потом запечь свет.
Unreal Engine. Из 18 в 115 фпс., image #8
  1. У меня в проекте почти нигде не было Scene Reflection Capture сфер/боксов. Их нужно добавлять!
Unreal Engine. Из 18 в 115 фпс., image #9
  1. Я не везде расставил Lightmass Importance Volume, а нужно было их расставлять во всех местах, где ходит персонаж.
Unreal Engine. Из 18 в 115 фпс., image #10

Это Light Complexity. Слева было, справа стало. Основная проблема была в криво-расставленном свете и неправильных настройках проекта!

Unreal Engine. Из 18 в 115 фпс., image #11
  1. Так как я просто кидал на сцену источники света, то у них Mobility по-умолчанию стояла Stationary, а не Static. Это большая ошибка, и значительно влияет на фпс.
Unreal Engine. Из 18 в 115 фпс., image #12
  1. Бонус - нашёл в папке Config-файл с переменными CVars для таргет-платформы Windows. Как пишет Кирилл: «Этот файл может быть очень большим»
Это 4к монитор, видео карта RTX 2060. Было 18 фпс
Это 4к монитор, видео карта RTX 2060. Было 18 фпс
Стало 115 фпс на той же самой сцене.
Стало 115 фпс на той же самой сцене.

Исходники проекта:
- HiddenHold_до_исправлений
- HiddenHold_после_исправлений

Желаю удачи в оптимизации игр на Unreal Engine!

1769 views·132 shares