
Unreal Engine 4 Оптимизация проекта под мобильные устройства
содержание видео
Дата: 2022-08-29
Комментарии и отзывы: 12
Flakky
Глянул видео. К сожалению, автор забыл добавить множество вещей. Добавлю от себя:
(если какие-то понятия не известны, гуглите, в коммент все не поместится)
Первое, актуально для 3D и 2D игр. Отключение MobileHDR в ProjectSettings->Rendering дает огромный буст производительности в замен на возможность использовать постобработку, динамические тени и ещё некоторые вещи, которые, впрочем, в мобилках нужны не часто или они слишком дорогие. На большом парке девайсов замечается прирост в 15-30fps.
Так же в ProjectSettings->Rendering стоит отключить и другие возможности, которые вам не нужны. В 2D играх вообще можно повырубать почти все.
Используйте Foliage или Инстанс меши. Таким образом можно поставить много одинаковой геометрии в один DrawCall, при этом ничего не мерджить и иметь возможность двигать все по отдельности. Тем не менее, мердж тоже хорошая практика, когда нужно объеденить разные меши в один кусок. Однако не стоит забывать о каллинге геометрии (которая не рендерится, когда не видно. Если вы объедините слишком большой кусок, то даже если кусок немного залезит на экран, он будет рендерится целиком и будет хуже. Лучше объединять близкостоящие меши, которые часто будут на экране вместе.
Используйте LOD'ы геометрии, что бы урезать геометрию моделей в далеке. Актуально для 3D игр.
Используйте как можно меньше материалов и текстур на сцене и в кадре. DrawCall меша с материалом, который уже отрендерился, будет стоить дешевле. Если у вас очень много материалов, то велика вероятность, что вы потратите кучу времени процессора на обновление шейдера и передачу этого добра в рендеринг. Чем меньше материалов, тем дешевле рендеринг. Если простыми словами, то два меша с разными материалами рендерятся дольше, чем два меша с одним материалом.
Миф: Инстанс материалы дешевле обычного материала. Это неправда. Инстанс материалы не дешевле. Они экономят разве что немного памяти. На деле это просто инструмент для работы, который, все же, рекомендуется использовать ради удобства.
Зачем урезать лишнюю геометрию на спрайтах в начале видео? Для уменьшения так называемого Overdraw (Когда на один пиксель рендерится несколько объектов, особенно проявляется с прозрачными и Masked материалами. Обрезание на прозрачных материалах смысла не имеет, только на Masked, так как непрозрачная часть материала не рендерит пиксели позади, Overdraw не происходит. Особенно актуально на мобилках, но для ПК рекомендуется делать тоже самое на растительности.
Лучше не уменьшать частоту тиков, вместо этого воспользоваться таймером, а тик вообще выключить. Это удобнее и гибче в будущем с точки зрения рефакторинга и масштабирования вашего кода. Более того добавлю, что лучше заменять таймером технические вещи (проверки и прочее. Их нет смысла делать каждый кадр. А вот визуалку можно повесить на каждый кадр, если это нужно.
Распихивание кода в функции ничего не дает с точки зрения оптимизации. Это лишь удобство и качество вашего кода.
Автор говорит старайтесь больше использовать кастом эвенты. Лучше наоборот использовать как можно меньше этих эвентов и делать функции. Графы будут чище и организованнее.
Но, возможно, автор хотел сказать об Event-Driven подходе, вместо тика. Если вкратце, это когда вы не ставите на тик проверки и действия, вместо этого работаете с делегатами и вызываете логику и проверки только тогда, когда что-то произошло (например не проверяете на тик, нажата ли кнопка мыши, вместо этого делаете действие по сигналу нажатия.
По поводу нативизации, то рекомендуется нативизировать только блупринты с большим количеством сложной логики. Нативизация простеньких блупринтов может сделать только хуже.
ответить
Глянул видео. К сожалению, автор забыл добавить множество вещей. Добавлю от себя:
(если какие-то понятия не известны, гуглите, в коммент все не поместится)
Первое, актуально для 3D и 2D игр. Отключение MobileHDR в ProjectSettings->Rendering дает огромный буст производительности в замен на возможность использовать постобработку, динамические тени и ещё некоторые вещи, которые, впрочем, в мобилках нужны не часто или они слишком дорогие. На большом парке девайсов замечается прирост в 15-30fps.
Так же в ProjectSettings->Rendering стоит отключить и другие возможности, которые вам не нужны. В 2D играх вообще можно повырубать почти все.
Используйте Foliage или Инстанс меши. Таким образом можно поставить много одинаковой геометрии в один DrawCall, при этом ничего не мерджить и иметь возможность двигать все по отдельности. Тем не менее, мердж тоже хорошая практика, когда нужно объеденить разные меши в один кусок. Однако не стоит забывать о каллинге геометрии (которая не рендерится, когда не видно. Если вы объедините слишком большой кусок, то даже если кусок немного залезит на экран, он будет рендерится целиком и будет хуже. Лучше объединять близкостоящие меши, которые часто будут на экране вместе.
Используйте LOD'ы геометрии, что бы урезать геометрию моделей в далеке. Актуально для 3D игр.
Используйте как можно меньше материалов и текстур на сцене и в кадре. DrawCall меша с материалом, который уже отрендерился, будет стоить дешевле. Если у вас очень много материалов, то велика вероятность, что вы потратите кучу времени процессора на обновление шейдера и передачу этого добра в рендеринг. Чем меньше материалов, тем дешевле рендеринг. Если простыми словами, то два меша с разными материалами рендерятся дольше, чем два меша с одним материалом.
Миф: Инстанс материалы дешевле обычного материала. Это неправда. Инстанс материалы не дешевле. Они экономят разве что немного памяти. На деле это просто инструмент для работы, который, все же, рекомендуется использовать ради удобства.
Зачем урезать лишнюю геометрию на спрайтах в начале видео? Для уменьшения так называемого Overdraw (Когда на один пиксель рендерится несколько объектов, особенно проявляется с прозрачными и Masked материалами. Обрезание на прозрачных материалах смысла не имеет, только на Masked, так как непрозрачная часть материала не рендерит пиксели позади, Overdraw не происходит. Особенно актуально на мобилках, но для ПК рекомендуется делать тоже самое на растительности.
Лучше не уменьшать частоту тиков, вместо этого воспользоваться таймером, а тик вообще выключить. Это удобнее и гибче в будущем с точки зрения рефакторинга и масштабирования вашего кода. Более того добавлю, что лучше заменять таймером технические вещи (проверки и прочее. Их нет смысла делать каждый кадр. А вот визуалку можно повесить на каждый кадр, если это нужно.
Распихивание кода в функции ничего не дает с точки зрения оптимизации. Это лишь удобство и качество вашего кода.
Автор говорит старайтесь больше использовать кастом эвенты. Лучше наоборот использовать как можно меньше этих эвентов и делать функции. Графы будут чище и организованнее.
Но, возможно, автор хотел сказать об Event-Driven подходе, вместо тика. Если вкратце, это когда вы не ставите на тик проверки и действия, вместо этого работаете с делегатами и вызываете логику и проверки только тогда, когда что-то произошло (например не проверяете на тик, нажата ли кнопка мыши, вместо этого делаете действие по сигналу нажатия.
По поводу нативизации, то рекомендуется нативизировать только блупринты с большим количеством сложной логики. Нативизация простеньких блупринтов может сделать только хуже.
ответить
Fan_PikaPika_2003
Хотел спросить как настроить свой проект под дисплей с разным соотношениям сторон ну к примеру по умолчанию игра настроена на соотношения сторон 16: 9, а большинство смартфонов который сейчас выходят на рынок, имеют соотношения сторон (18: 9; 19, 5: 9; 20: 9 ну и. т. д) и на этих смартфонах игра будет запускаться также с соотношения сторон 16: 9 оставляя чёрный рамки по краям может кто, знает как эта исправить?
ответить
Хотел спросить как настроить свой проект под дисплей с разным соотношениям сторон ну к примеру по умолчанию игра настроена на соотношения сторон 16: 9, а большинство смартфонов который сейчас выходят на рынок, имеют соотношения сторон (18: 9; 19, 5: 9; 20: 9 ну и. т. д) и на этих смартфонах игра будет запускаться также с соотношения сторон 16: 9 оставляя чёрный рамки по краям может кто, знает как эта исправить?
ответить
AntoXa_Jv
ПОдскажи, если к примеру есть ассет. blueprint который выполняет постобработку, причем множество вариантов, а мне нужен только один, при запаковке он не будет подтягивать весь ассет вместе со всеми возможностями? Или мне нужно обрезать соединения в блупринте чтобы он ничего не умел кроме как того что мне нужно?
ответить
ПОдскажи, если к примеру есть ассет. blueprint который выполняет постобработку, причем множество вариантов, а мне нужен только один, при запаковке он не будет подтягивать весь ассет вместе со всеми возможностями? Или мне нужно обрезать соединения в блупринте чтобы он ничего не умел кроме как того что мне нужно?
ответить
Andrej
Отличный урок, спасибо! Один вопрос, по поводу масштабирования интерфейса (17-18. Можно ведь вместо настроек ключей, как в этом видео, просто потратить больше времени в UMG редакторе на создание адаптивного интерфейса? Просто режет глаз масштабирование ступенями. Или эти настройки тоже придется применять?
ответить
Отличный урок, спасибо! Один вопрос, по поводу масштабирования интерфейса (17-18. Можно ведь вместо настроек ключей, как в этом видео, просто потратить больше времени в UMG редакторе на создание адаптивного интерфейса? Просто режет глаз масштабирование ступенями. Или эти настройки тоже придется применять?
ответить
Cyberstars
0: 51 - Спрайты
4: 34 - Звук
5: 31 - Bluprint
7: 33 - Камера
8: 24 - Портретный режим
11: 23 - Профайлинг
12: 33 - Виртуальный джойстик
14: 00 - Прямой запуск на смартфоне из движка
15: 24 - Дополнительные настройки (Важно)
16: 00 - Адаптированный интерфейс
17: 12 - Project Settings
ответить
0: 51 - Спрайты
4: 34 - Звук
5: 31 - Bluprint
7: 33 - Камера
8: 24 - Портретный режим
11: 23 - Профайлинг
12: 33 - Виртуальный джойстик
14: 00 - Прямой запуск на смартфоне из движка
15: 24 - Дополнительные настройки (Важно)
16: 00 - Адаптированный интерфейс
17: 12 - Project Settings
ответить
Санчоус
Привет, шерстил, искал но как то не смог ничем заполнить пустоты в голове) какие то конкретные стандарты по кол-ву полигонов существуют? Для мобильных игр. Где я могу самостоятельно найти актуальные сведения?
ответить
Привет, шерстил, искал но как то не смог ничем заполнить пустоты в голове) какие то конкретные стандарты по кол-ву полигонов существуют? Для мобильных игр. Где я могу самостоятельно найти актуальные сведения?
ответить
Николай
Всем привет! Кто подскажет при оптимизации пишет вот такую ошибку Keystore file is missing. Check the DistributionSettings section in the Android tab of Project Settings. Но ключ создал и прописал!
ответить
Всем привет! Кто подскажет при оптимизации пишет вот такую ошибку Keystore file is missing. Check the DistributionSettings section in the Android tab of Project Settings. Но ключ создал и прописал!
ответить
Oleg
извинюсь за возможно тупой вопрос, но как (и можно ли) на ue4 сделать игру по вертикали смартфона? Допустим я хочу создать 3d арканойд.
ответить
извинюсь за возможно тупой вопрос, но как (и можно ли) на ue4 сделать игру по вертикали смартфона? Допустим я хочу создать 3d арканойд.
ответить
SchiZoFriends
Шага пмгмгмг ши пмгмгмг ГМО лишили мг ши мг шиш лишил щи мл лишились ши ан шаг шаг шаг ши помощи мл ши мл ши мл лишили ши од ш
ответить
Шага пмгмгмг ши пмгмгмг ГМО лишили мг ши мг шиш лишил щи мл лишились ши ан шаг шаг шаг ши помощи мл ши мл ши мл лишили ши од ш
ответить
m18ter
Подскажите, пожалуйста, что делать, если в самом движке лаунч не видит устройство, но на компьютере оно отображается?
ответить
Подскажите, пожалуйста, что делать, если в самом движке лаунч не видит устройство, но на компьютере оно отображается?
ответить
PFG8800
Раскажи теперь все тоже самое но про 3D игры
У меня какого то хрена пустой проэкт на андроид весит 60 мб
ответить
Раскажи теперь все тоже самое но про 3D игры
У меня какого то хрена пустой проэкт на андроид весит 60 мб
ответить
Angry
Бро, знаешь как сделать отладку игры на андроид через USB или хоть как ещё, но без загрузки в google console.
ответить
Бро, знаешь как сделать отладку игры на андроид через USB или хоть как ещё, но без загрузки в google console.
ответить
Добавить отзыв, комментарий
Другие видео канала















