Unreal Engine 5
astar_spb, эффектно, да, там вообще 7 часов полная технодемка, пока только час осилил, но уже радует )
Джонсинг, это действенно лишь в том случае, когда проект(ы) "на полке", а не в работе (разве что vault кеш или квиксель можно рубить с концами, если ассеты уже в проекте), в остальных случаях даже в папке проекта – бинарники, сейвы, интенрмедиат сносятся по несколько раз в день и тут же генерятся заново с пкм по файлу проекта, если hotreload не справляется с кардинально-обновляемым кодом, чтобы на лету внести новый функционал, но вот deriveddatacache в процессе работы лучше не удалять, чтобы не ждать часами, пока редактор с ноля сгенерирует раб. материалы – они более-менее статичны, обновляются автоматически вдогонку к периодическому насыщению проекта ассетами, материалами и т.п.
вообще, думал – имеет ли смысл озвучивать нижеследующее, или "ответить в стол", но поскольку "игра в простыни" – мультиплеер, решил обозначить пару нюансов, чтобы у тех, кто решит всерьёз заниматься движком, а не профанить бугатти поездкой в булочную, сложилось более полное представление об инструменте, поэтому:
сплайн и есть "инструмент" – это дефолтный класс с тонной функционала, инкапсулированного "под капотом" и с навешанными на него погремушками/интерфейсом в потомке-бп, и чем лучше понимание потенциала класса, тем проще наследовать от него новый класс с оверрайдами и доп. методами взаимодействий с иными классами посредством потомка-бп (блюпринта)
поэтому и с нативным террейном, т.е. с его классом, дефолтный сплайн работает норм, т.к. они "знакомы", а с каким-то иным кастомным – с ограничениями/косяками, и "нарезка" геометрии тут не при чём, и дебаг-лучи типы классов не определяют, а только наличие/отсутствие препятствий на их пути c hit result координатой в случае пересечений.
просто импортированная через датасмит геометрия по умолчанию "расквартирована" в каком-то грендчайлде относительно род.класса актора и никак не в наследнике класса актора с террейном, и чтобы сплайн корректно раскрыл свой потенциал в подобном кастомном классе, созданном датасмит, потребуется как минимум перепарентить бп-датасмит к классу террейна, либо привести (каст на родителя) класс со своим лендскейпом к совместимости с род. функционалом, либо же по уму – унаследовать от класса актора террейна новый кастомный класс со своим блекджеком и оверрайдами для создания новых фич и затем вывести его педали в бп, которые будут созданы от этого кастомного класса – для навешиваний декалей или чего-то ещё, что необходимо.
можно и в блюпринтах создать логику вроде бп из урока, но это будет версия с ограничениями и "наугад", поскольку в бп увидеть все возможности род. класса, как в его хедере/срр, не выйдет, если не открыть сорцы в подходящем ide или хотя бы не прочесть описание всех возможностей класса в мануале движка.
сюда же и особенности работы с памятью – движок (не инструменты редактора, а контент) работает с динамической хип-памятью и всё, что генерит во вьюпорте, особенно в рантайме – размещает в ней, вызывая данные по эвентам и распределяя нагрузку по необходимому оборудованию в соотв. с инструкциями в коде. поэтому загрузка видеопамяти напрямую зависит от объёма данных/команд на исполнение (отрисовку десятка, или тысячи статикмешей, фонариков и т.п.) в единицу времени, т.е. фрейм, и всем этим процессом заведует оптимизация "стоимости" контента.
да, это не десять условных рулек в бивисе накрутить по гайду и запарить всех тонной страниц с уникальным "сакральным знанием" – ооп на плюсах, да ещё в связке с рефлекшн и её макросами во фреймворке ue ластится только к тем, кто знает, где и когда почесать можно )