на персонаже, чтобы вызывать дальнейшую логику при попадании в определенную капсулу.
Проблема в том, что не знаю как получить точное название каждой капсулы. Например вместо CapsuleChest у меня пишет BP_Player1_CapsuleChest.
В меш стрелять не хочу, т.к. коллизии на меше слишком дорого.
Может возможно как то иначе это выполнить? Цель в том, чтобы по конкретной коллизии аттачить стрелу к определенной части тела.
а зачем еще капсулы? у тебя же физ ассет есть
он разве не от коллизии скелетал меша идёт?
Зависит от того комплексный трейс ты кидаешь или нет
ну и каждый раз когда используешь слова "дорого" и "очень дорого", очень здорово подкреплять это реальными цифрами, а не просто "слышал один чувак на ютубе как-то говорил..."
Дорого и очень дорого - это когда загружаешь 50 нпс со включенными коллизиями от скелетал меша и отключёнными - фпс с 60 падает до 20-30. Поэтому я хочу делать логику на капсулах
Ты перепутал тёплое с мягким в данном случае. Термин "выключенная коллизия" - это довольно обширное понятие. В условном физиксе (и хаосе) все типы физическим взаимодействий делятся на 2 категории - симуляция и запросы. Симуляция - это то что тебя условно волнует каждый физический тик, потому что в зависимости от сложности и конфигурации сцены велика вероятность, что твои объекты в неё попадут и нагрузка действительно возрастёт. Запросы (queries) - это то, что тебя тоже волнует практически каждый тик, но с ними сложнее. Расходы на них повышаются тогда, когда кто-то начинает опрашивать твою физическую сцену, например через трейсы, оверлпапы и т.д. и т.п. Но если ты чётко контролируешь где, когда и что запрашивается, то стрельнуть комплекс трейсом в тримеш персонажа обычно никакой проблемы нет.
И ты совершенно напрасно думаешь, что логика на капсулах - это что-то принципиально иное в отличие от физического ассета. Абсолютно то же самое, разница только в каких-то настройках, которые ты быть может чуть правильнее подобрал на капсулах, но забыл настроить на меше
ну вот смотри есть базовый вообще проект, чтобы точно ничего не отвлекало. В нём 50 чарактеров для наглядности. В первом случае включен только query и фпс как мы видим 45. Если выключено всё, то фпс 66. Разница как по мне велика. Значит query тоже ест не мало даже на простое?
Что-то у тебя маленький фпс для 50 персонажей. Что за «физика включена» у тебя, конкретно? Профилировать вообще-то надо такие вещи, хотя бы stat game и stat physics + query для начала. Там будет видно, что происходит. Может, просто настройки какие-то неправильные включены.
Это просто демо проект для примера, чтобы как раз таки ничего лишнее не отвлекало. Про физику не понял, она наоборот отключена.
Ок. Ты уверен, что у тебя не из-за рендеринга просаживается фпс? Может, манекены без ЛОДов? На скринах видно, что физика у тебя вся потребляет 0.53ms. Немного тратит char movement (он тоже делает query периодически), в пределах нормы. Куда девается остальное время? И, кстати, сделай еще stat PhysicsQuery (или как там правильно), чтобы точно знать сколько занимают query.
Лоды есть, я пробовал даже 1 треугольник оставлять в лодах вообще для сравнения - ну прирост фпс конечно есть логичный, но буквально кадра 3-5. Пробовал в лодах удалять кости - тоже ерунда. из физики только вот это нашёл (
Кости непричем. Посмотри stat unitgraph и постарайся понять, на чем все-таки просаживается фпс - на рендеринге (gpu, drawcalls) или на игре (game)? Если на игре, то, может, у тебя AI очень прожорливый (stat ai)? Или анимация (stat anim)? Звук (врядли конечно)? Или у тебя просто комп очень медленный?
Просто скинь проект Михаилу 👌
а с женского аккаунта бы сработало)
Вообще базовая сцена, без ии, стоковые анимации, ничего нет. Вот прям вообще ничего, ни звуков. Как раз для теста её создал. комп Rysen 5500, Geforce 1650. Вроде должно справляться.
Не дай бог так оголодать
🫡 тогда меня помянем...
Загадочно. Ты вроде на физику грешил? Что там могло быть криминального в физике? Симуляция какая-то дорогая прямо во основном физикс ассете персонажа? Вроде больше ничем не просадить фпс настолько.
Сочуствую, бро, но не знаю, что посоветовать. Я только в Анриле шарю...
Вот и я не понимаю. 3й день сижу, уже до кастылей дошёл в виде отключения коллизий на меше и создания примитивов. Решил спросить здесь) Когда я отрубаю коллизии на скелете то фпс вырастает до 80-90 на той же сцене. Проект повторюсь базовый только создал для теста, никакой логики вообще нет.
просто, следующее пиво за меня 🫡 ахах)
Может, тут анимация дорогая? Вроде теперь по умолчанию манекен какой-то усложненный с кучей костей и наворотами.
Так и поступим
Query, как я и говорил, тоже влияет, потому что те или иные сущности постоянно опрашивают сцену (элементарно твой персонаж с CharacterMovement), но я пытался тебе сказать, что просто вешать капсулы на персонажа - это не решение проблемы, это просто ручная эмуляция физического ассета, которая даст тебе ту же самую нагрузку. Просто убедись, что меши не используют оверлапы и потом упрости физ ассет, ты увидишь, как фпс поднимется
Оверлапов у меня на меше нет (если я правильно понял о чём вы). Используется только query. Пробовал ставить полную коллизию (query and physics) фпс такой же, что и без физики 1 в 1. Без аним БП разница конечно есть в 10 фпс (50 вместо 40 при 50 чарактерах). Но с отключённой коллизией прирост до 80 фпс. Подскажите как можно упростить стандартный физ ассет и имеет ли это смысл?
Что за коллизии ты вырубаешь, конкретно? Может, это что-то, что и не нужно по логике?
Да
Теперь ясно. На скриншоте PhysicsAsset выглядит адекватно - экономно и по делу. Обычно в большинстве жанров (в стрелялках, например) QueryOnly включен у персонажей. Иначе как ловить попадания в персонажа? Обвешать капсулями вместо PhysicsAsset - не вариант, это немного дороже по производительности при той же функциональности.
Можно и нужно, если это требуется для твоих целей. Просто проведи эксперимент - снеси у этого ассета всё, кроме каких-нибудь 5 объектов и посмотри на результат
Кстати говоря прирост очень ощутимый. Тогда я просто упрощу физ ассет. Теперь я наконец-то понял) Спасибо вам ребят!
Вот о том и речь :) К сожалению, бесплатно ничего сделать нельзя, но можно попытаться правильно использовать имеющиеся возможности
Спасибо) просто не сразу понял о чём речь)
Обсуждают сегодня