Полезное

Мы Вконтакте

Discord канал

#
Модератор: icms
Аватара пользователя
Пользователь
Сообщения: 24
Всем привет, смотрел недавно рассказ юбиков как они делали толпы в AC Unity, если перефразировать под контекст UE то работает следующим образом: в огромной толпе всего около 20-ти настоящих NPC а все остальные это анимационные блюпринты отспавненые на сцене. Когда игрок совершает какие либо действия по отношению к "не настоящему" NPC (например наводит на него оружие) то грубо говоря к этому анимационному блюпринту подвешивается и аттачится ИИ а с какого то настоящего самого дальнего от игрока NPC логика снимается. Есть может у кого то идеи или предположения как можно провернуть такое в UE?
Заранее спасибо.
Аватара пользователя
Пользователь
Сообщения: 4069
1. например есть два массива с ботами, один из которых боты упрощенные(но все равно имеющую какую то коллизию)
2. например 10 раз в секунду персонаж запускает лучи по форвард вектору своего оружия, если это дробовик, лучей несколько.
3. при попадании луча в цель, идет проверка, является ли цель (упрощенной), если цель упрощенная, сохраняем ее анимационную позу и трансформ, ищем в массиве с сложными ботами первую попавшуюся сложную цель, сохраняем ее анимационную позу и трансформ, ну а затем применяем сохраненные параметры этим двум объектам.
Это все очень грубо.
Аватара пользователя
Пользователь
Сообщения: 24
Prytaleks писал(а):
1. например есть два массива с ботами, один из которых боты упрощенные(но все равно имеющую какую то коллизию)
2. например 10 раз в секунду персонаж запускает лучи по форвард вектору своего оружия, если это дробовик, лучей несколько.
3. при попадании луча в цель, идет проверка, является ли цель (упрощенной), если цель упрощенная, сохраняем ее анимационную позу и трансформ, ищем в массиве с сложными ботами первую попавшуюся сложную цель, сохраняем ее анимационную позу и трансформ, ну а затем применяем сохраненные параметры этим двум объектам.
Это все очень грубо.

Спасибо за ответ. В Вашем предложении всё равно нагружается сцена упрощёнными ботами(так как мы говорим о большом количестве NPC), у AnimBP ведь тоже есть коллизия так как там находится меш, трейс по ним отрабатывает. Как я понял непосредственно привязать чарактера к AnimBP не выполнимо?
Попутно вопрос по теме пока пробовал: как с трейса закастить на AnimBP? UE пишет что должен быть примитив компонент на подачу в каст, есть возможность что то нужное вытащить с Break Hit с трейса?
Аватара пользователя
Пользователь
Сообщения: 4069
сам по себе анимБП это лишь инструмент для более структурированной работы с анимацией, сам по себе он как правило не используется, также можно обойтись вообще без него, когда в акторе или павне будет добавлен скелет меш, скелет мешу можно выбрать соответствующий АнимБП.

Break Hit имеет пин HitActor, это нужно подключать к касту, желательно без "Вы" бро.

В этом стриме ты можешь посмотреть вариант создания упрощенного бота, без чарактер мовемента(что оптимизированно) - https://youtu.be/lFpXqggbUP4?t=3497
Аватара пользователя
Пользователь
Сообщения: 24
То что инструмент это понятно, и то о чём я спрашиваю является странным подходом, просто заинтересовался т.к. юбики говорили о том что это хитрость с нестандартным подходом и то что так не делается но задумка интересная :)

Про то как работает каст и Hit я знаю, я имел ввиду каст конкретно на AnimBP.
Вообщем думаю тему можно считать закрытой так как видимо работать на прямую с AnimBP лучше не стоит.
За ссылку спасибо! Гляну как они делали.
Аватара пользователя
Пользователь
Сообщения: 4069
отвечу на твой вопрос всеже, вот так должен выглядеть каст на аним блюпринт

https://picua.org/images/2020/06/14/eef ... 216d61.png

но это не отменяет того факта что аним бп лучше не использовать как самостоятельный объект, разве что только для самых примитивных ботов, где даже движение не предполагается.
Вообщем лучше использовать актор без аним БП, чем аним БП без актора, в акторе ты сможешь создать упрощенную коллизию, отключить сложную, или добавить какой либо компонент, например - собственный.
Сам же актор изначально - это почти чистый лист.
Аватара пользователя
Пользователь
Сообщения: 24
Спасибо большое!) Для опыта интересно. Сам бы долго додумывался)
Аватара пользователя
Пользователь
Сообщения: 138
при создании большой толпы главное что грузит систему это количество анимированых костей, далее полигональность модели (сколько вертексов смещяет каждая кость, влияние соседних костей)
оверлеп эвенты тоже сильно влияют, особенно в большой толпе когда боты будут тыкаться друг в друга
сама навигация жрет не особо много (если кто знает более дешевый способ передвинуть обьект из точки А в точку Б напишите)
100 фпс при 500 агентах одновременно активных агентах с навигацией и RVO управляемых краудконтроллером) (если каждому из них добавить скелетный меш и прост опроигрывать анимаци (без аним бп и расчетов) ФПС упадет до 100 примерно на 60 ботах)
Аватара пользователя
Пользователь
Сообщения: 4069
я когда то проводил тест с этим и даже записал

200 кубов с нав мешем(анимации и дополнительных колизий нет) - https://www.youtube.com/watch?v=Fx5km4fqBoo

и 500 кубов без - https://www.youtube.com/watch?v=ATuOf7xDIfE

я понимаю что детали тестирования зависят от железа, но в целом суть останется той же на любом железе.

фпс говорит за себя, повторить тест с финд лук ротатион на 500 кубов каждый может и сам, три строчки кода грубо говоря, будет тоже самое или почти тоже самое.
Причем здесь происходит падение фпс, независимо от того есть ли эти персонажи в кадре, тоесть видеокарта - не решает.

Дешевый способ - это просто сет актор локатион и т.д.-т.п., понятно что здесь поиск пути отсутствует, но как говорил автор в начале, есть более продвинутые боты, вот они и могут быть направляющими для примитивных.
В случае с летающими ботами, другого варианта как писать собственную логику движения просто не существует.

Вообщем существуют ситуации, когда целесообразно написать именно собственную логику движения, канешно все это не отменяет полезность нав меша и чарактер мовемент компонента.
Аватара пользователя
Пользователь
Сообщения: 24
Возможно Invoker менее нагруженный так как строит маршрут в пределах видимости с ориентированием на финишную точку, и в процессе обрабатывает сможет ли он дойти. Но я не совсем уверен ибо не особо часто им пользовался. Знаю только что вроде Invoker для открытых миров обычно используют. Хотя с другой стороны он с заданным интервалом производит проверку видимой площади. Но и навмеш если динамический регулярно отслеживает маршрут и изменения на нём.

Invoker думаю всё таки менее нагружен, но идти NPC будет дольше т.к. нет конкретного маршрута.

Ещё видел есть плагин для поиска маршрута по сплайнам, говорят что менее нагруженный чем стандартным способом UE, только вот он платный.
Пробовал такое же сделать для вертолётов(не нашёл информации относительно построения маршрутов для летающих объектов, видел только плагин где челы сделали какой то кастомный навмеш для полётов), даже получилось но не тестил когда их очень много.


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница