Автор этого канала разбирал такие темы в Анриле, которые не разбирал больше никто в русскоязычном сегменте. И эти темы крайне важны, особенно для начинающих разработчиков. Очень жаль, что автор забросил канал.
Не программист, использую Анрил исключительно для прототипирования, и как приятно слушать и смотреть Ваши видео! Всё доступно и понятно излагаете даже для моего опыта! Спасибо!
@@cheburashkaspace22 вряд-ли найдётся несколько миллионов школьников которые не только любят даунский контент, но и одновременно думают о будущем и желают развиваться в современных профессиях.
У меня был прототип андроид игры с колёсными роботами на кастомной физике (физика колёс). Так вот, компонент движения имел прилично большую функцию в которой просчитывалась физика колёс (всего на все акторы около 150 вызовов в тик) - там по сути сфер трейс и куча расчётов, после чего 1-2 add force. На старом 650 снапе + графика игры это уже работало довольно хорошо, но после нативизации компонента движения фпс с 38 поднялся до 51 вроде. Нагрузка от этого компонента упала примерно в 2 раза. Но учитывая что вычислений там было довольно много и оно на компе работало вообще без проблем, я не согласен с автором насчёт того, что игры аля RTS нельзя делать на блупринтах. Я думаю вполне можно, и даже нужно, но периодически придётся неспеша переписывать высоконагруженные классы на плюсы... Или просто нативизировать. Я ещё не сравнивал производительность блупринтового нативизированного класса с переписанным вручную на с++, как-нибудь надо попробовать это провернуть.
Можно еще попробовать вместо события Tick использовать таймеры. Так, например, код будет исполняться не каждый кадр, а 10 раз в секунду (если 0.1 в таймер указать). Хотя, это просчет физики и, возможно, после этого она будет просчитываться некорректно.
@@user-nu8ot6fy8c Не, конкретно тут это не проканает ибо add force по любому каждый тик надо вызывать, чтобы объект не дёргался и не вибрировал... Либо мудрить что-то совсем извратное, но оно и так нормально работало. особенно если сферический трейс поменять на линейный - это ещё примерно на 40-50% снизило нагрузку от обработки этих компонентов.
Странно, у меня на версии 4.25 нативизация под андроид вообще не работает, пришлось переписывать физику автомобиля на плюсы. Я так же сделал тесты, и выяснил что: нативизированные bp медленнее на 10% чем c++, а просто bp медленнее на 60% чем c++ И по поводу оптимизации: попробуй отключить физику роботам, и перемещать их оффсетом (AddActorWorld/LocalOffset) когда они не рендерятся (WasActorRecentlyRendered)
@@thebiggangstamouse1530 Я делал это на 4.23, с нативизацией всё было ОК, выше версию под андроид не пробовал. С движением через оффсет может быть и сработало бы, но пришлось бы запариться + этот проект уже как год отменён. Вообще интересно, 60% не так уж и много... я читал где-то что блупринты тормознее плюсов в 7 раз)) Видать это была производительность при "не правильном" использовании... Как если например в макрос foreach подать pure функцию формирующую массив, вместо переменной с массивом - в итоге весь массив будет пересобираться при каждом обращении к какому-либо элементу...
Отлично! Только хочется в этой связи напомнить что оптимизация выполняется где-то далеко после тестов и рефакторинга и то если вы прямо упёрлись в какой-то дикий боттлнек, а не вовремя того как вы собираете прототипы и какие-то сырые наработки, которые ещё 1250 раз переделаются :)
Я вот, что не могу понять : компьютеры работают только с машинными кодами, всё, что мы пишем и создаем в движке, при компиляции переводится в машинный код. Так, а какая разница, переводить блупринты сразу в машинный код или сначала перевести на плюсы, а потом в машинный код?
Если пишешь на блупринтах, то по сути в "машинном коде" выполняется только среда обработки блупринта. Сам блупринт является чем-то типа последовательностью команд для среды обработки. Если блупринт "нативизируется", то его содержимое скомпилируется в "машинный код" и будут выполняться напрямую без использования "виртуалки"
Если хотите по подробнее узнать. Про Плюсы Посоветую курс на Юдеми Learning C++ FOR MAKING games Ну или можно скачать там где лежит +Полностью на Русском Языке
Расскажи пожалуйста про Interfaces в UE4. Сколько видеоуроков пересмотрел, все объясняют поверхностно. Буду благодарен. Что касается этого видео - просто бомба! Я раньше думал что весь код на BP стоит нативизировать, оказалось что нет. Спасибо за контент.
это актуально только для работы в браузере? В билде же нет никаких блупринтов. Или после компияции там сохраняется какая-то прослойка между одним куском кода, который когда-то был былпринтом и другим, который был С++? Я думал что во время билда блупринт сначала в С++ переводится, а потом уже все в машинный. И нативизация нужно для оптимизации блупринтов, перед превращением в С++, типа убрать то что не используется и тд
Ох уж и дезинформация тут. Просто выберите тот файл где выполняется множество операций. На деле нужно вообще всё выбирать для нативизации что бы проект запаковался
Автор этого канала разбирал такие темы в Анриле, которые не разбирал больше никто в русскоязычном сегменте. И эти темы крайне важны, особенно для начинающих разработчиков. Очень жаль, что автор забросил канал.
Отличные краткие но по делу ролики на канале.
Не программист, использую Анрил исключительно для прототипирования, и как приятно слушать и смотреть Ваши видео! Всё доступно и понятно излагаете даже для моего опыта! Спасибо!
Не знал про эту функцию, спасибо
Я думаю ты быстро наберешь аудиторию.)))
Жаль что пранки-хуянки набирают в сотни раз быстрее ;(
@@neofit6437 не сказал бы
@@cheburashkaspace22 вряд-ли найдётся несколько миллионов школьников которые не только любят даунский контент, но и одновременно думают о будущем и желают развиваться в современных профессиях.
У меня был прототип андроид игры с колёсными роботами на кастомной физике (физика колёс). Так вот, компонент движения имел прилично большую функцию в которой просчитывалась физика колёс (всего на все акторы около 150 вызовов в тик) - там по сути сфер трейс и куча расчётов, после чего 1-2 add force. На старом 650 снапе + графика игры это уже работало довольно хорошо, но после нативизации компонента движения фпс с 38 поднялся до 51 вроде. Нагрузка от этого компонента упала примерно в 2 раза. Но учитывая что вычислений там было довольно много и оно на компе работало вообще без проблем, я не согласен с автором насчёт того, что игры аля RTS нельзя делать на блупринтах. Я думаю вполне можно, и даже нужно, но периодически придётся неспеша переписывать высоконагруженные классы на плюсы... Или просто нативизировать. Я ещё не сравнивал производительность блупринтового нативизированного класса с переписанным вручную на с++, как-нибудь надо попробовать это провернуть.
Можно еще попробовать вместо события Tick использовать таймеры. Так, например, код будет исполняться не каждый кадр, а 10 раз в секунду (если 0.1 в таймер указать). Хотя, это просчет физики и, возможно, после этого она будет просчитываться некорректно.
@@user-nu8ot6fy8c Не, конкретно тут это не проканает ибо add force по любому каждый тик надо вызывать, чтобы объект не дёргался и не вибрировал... Либо мудрить что-то совсем извратное, но оно и так нормально работало. особенно если сферический трейс поменять на линейный - это ещё примерно на 40-50% снизило нагрузку от обработки этих компонентов.
@@alexanderplatonov1986 Хорошо, буду знать.
Странно, у меня на версии 4.25 нативизация под андроид вообще не работает, пришлось переписывать физику автомобиля на плюсы.
Я так же сделал тесты, и выяснил что: нативизированные bp медленнее на 10% чем c++, а просто bp медленнее на 60% чем c++
И по поводу оптимизации: попробуй отключить физику роботам, и перемещать их оффсетом (AddActorWorld/LocalOffset) когда они не рендерятся (WasActorRecentlyRendered)
@@thebiggangstamouse1530 Я делал это на 4.23, с нативизацией всё было ОК, выше версию под андроид не пробовал. С движением через оффсет может быть и сработало бы, но пришлось бы запариться + этот проект уже как год отменён. Вообще интересно, 60% не так уж и много... я читал где-то что блупринты тормознее плюсов в 7 раз)) Видать это была производительность при "не правильном" использовании... Как если например в макрос foreach подать pure функцию формирующую массив, вместо переменной с массивом - в итоге весь массив будет пересобираться при каждом обращении к какому-либо элементу...
Спасибо за ролик! Чётко и понятно
Спасибо Ютюбу за рекомендацию этого канала👍👍👍
Отлично! Только хочется в этой связи напомнить что оптимизация выполняется где-то далеко после тестов и рефакторинга и то если вы прямо упёрлись в какой-то дикий боттлнек, а не вовремя того как вы собираете прототипы и какие-то сырые наработки, которые ещё 1250 раз переделаются :)
Подписка. Легко доносишь)
Есть ещё чекбокс с нативизацией внутри блюпринт класса, вопрос, в чём отличие если ставить галочку нативизации внутри BP, либо же в настройке проекта?
Это автоматом добавит его в список нативизируемых блюпринтов. Возможно еще что-то, но не замечал.
Я вот, что не могу понять : компьютеры работают только с машинными кодами, всё, что мы пишем и создаем в движке, при компиляции переводится в машинный код. Так, а какая разница, переводить блупринты сразу в машинный код или сначала перевести на плюсы, а потом в машинный код?
Если пишешь на блупринтах, то по сути в "машинном коде" выполняется только среда обработки блупринта. Сам блупринт является чем-то типа последовательностью команд для среды обработки. Если блупринт "нативизируется", то его содержимое скомпилируется в "машинный код" и будут выполняться напрямую без использования "виртуалки"
как всегда все четко и по делу , спс за инфу не знал что такое есть
Спасибо за отличное объяснение!
Вроде как рекомендуют вычисления в макросах делать. Или нет?
Замечательно! Спасибо за видео.
Отличный контент. Спасибо
А можете по-больше рассказать про плюсы и блупринты, где что использовать?
Надеюсь и до плюсов тоже когда-нибудь докатимся :)
Если хотите по подробнее узнать. Про Плюсы
Посоветую курс на Юдеми
Learning C++ FOR MAKING games
Ну или можно скачать там где лежит
+Полностью на Русском Языке
Расскажи пожалуйста про Interfaces в UE4. Сколько видеоуроков пересмотрел, все объясняют поверхностно. Буду благодарен. Что касается этого видео - просто бомба! Я раньше думал что весь код на BP стоит нативизировать, оказалось что нет. Спасибо за контент.
спасибо :) blueprint interfaces - хорошая тема, интересная :) мне кажется, стоит по ней сделать видео :)
это актуально только для работы в браузере? В билде же нет никаких блупринтов. Или после компияции там сохраняется какая-то прослойка между одним куском кода, который когда-то был былпринтом и другим, который был С++? Я думал что во время билда блупринт сначала в С++ переводится, а потом уже все в машинный. И нативизация нужно для оптимизации блупринтов, перед превращением в С++, типа убрать то что не используется и тд
При билде движок блюпринты в с++ не переводит
(только если сами укажем их нативизировать)
А как именно может что-то поломаться? Собранный проект или блюпринт? То есть это может сломать блюпринт и его придётся доставать из бэкапа?
Да всякое бывает ломается у людей. В каких-то (к счастью, редчайших) случаях проект может перестать открываться.
Спасибо.
Нативизированный код немного Грязненький
Лучше его чуток подчистить
Удалить Пару Инклюдов
И Чутка Рефакторнуть
В UE5 отключили её из за ошибок.
Нашооооол😭😭😭😅😁
Ох уж и дезинформация тут. Просто выберите тот файл где выполняется множество операций. На деле нужно вообще всё выбирать для нативизации что бы проект запаковался
сх*рали? енумы с 500 строками инклюд? надо нативизоровать то, что испольщуется в другом нативиз. бп