Полезное

Мы Вконтакте

Discord канал

#
След.
Модератор: Di-Crash
Аватара пользователя
Пользователь
Сообщения: 2319
Цитата:
Но все равно в конечном счете логики на мобе будет больше чем SimleMoveToLocation на тике, то есть ресурсов потребуется больше.

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

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

В идеале все процессы принятия решений (будь то поиск пути или бехавиор-три или еще какая-то фигня)
- должны быть рассинхронены в одном АИ, а АИ в свою очередь должны быть рассинхронены между другими АИ.
тогда на всех ботов за один тик будет максимум одно решение одного бота, минимум ноль.
при фпс 30 - 30 ботов преймут решение что делать за одну секунду, без глобальной нагрузки вообще как таковой...

(кстати бехавир три не рассинхронено между ботами... поэтому неоднородные просадки ФПС циклические... если просто запустить все БТ с задержкой между запусками то просадок уже не будет, проверить это профайлером можно)
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 21
А как рассредоточить принятие решений ботов по секунде времени, если боты будут спауниться не в один момент времени. И вообще где подсмотреть пример этого рассредотачивания?
Аватара пользователя
Пользователь
Сообщения: 2319
Цитата:
боты будут спауниться не в один момент времени

и при этом если они не будут принимать решения слишком часто
(каждый тик, через тик , через два и тп. тоесть если бот принимает решение только когда ему действительно нужно его принять)
то вероятность совпадения принятия решений нескольких ботов одновременно - уже довольно невысокая, и если иногда будет совпадать то особо не повлияет ни на что.
Примеров нету, как сделаешь так и будет.
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 2319
к обсуждаемой ранее теме
http://www.gdcvault.com/play/1022411/Ma ... assin-s%20
не скажу что ассассин-юнити хороший пример производительности, но его толпы nps впечатляют...
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 21
Я находил различного рода видео подобного характера по UE4

https://www.youtube.com/watch?v=8BB1-S4Uqo0

Если я всё правильно понял, то заполнить улицы городов массовкой не так сложно. Но переходя от теории к практике, я столкнулся с куда более примитивными проблемами про пытке воспроизвести банальный тест обсуждаемый здесь ранее https://www.youtube.com/watch?v=Fx5km4fqBoo ...

Я создал таких же чарактеров и дал им самую простую логику SimpleMove с целью на игроке, и к моему удивлению часть агентов просто стояла на месте, NavMesh покрывал всю карту, самого персонажа я водил вблизи этих павнов, но они просто стояли не реагируя... возможно есть в этой системе что-то о чём я ещё не знаю?
Аватара пользователя
Пользователь
Сообщения: 4069
Zail94 писал(а):
Я создал таких же чарактеров и дал им самую простую логику SimpleMove с целью на игроке, и к моему удивлению часть агентов просто стояла на месте, NavMesh покрывал всю карту, самого персонажа я водил вблизи этих павнов, но они просто стояли не реагируя... возможно есть в этой системе что-то о чём я ещё не знаю?


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

p.s. http://picua.org/img/2018-02/08/z0z4vqp ... 5lx6y4.png
Аватара пользователя
Пользователь
Сообщения: 4069
Snake писал(а):
а вот не должно быть так

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

p.s. но если мы говорим о сотнях, то да, согласен, функционал на тике лучше исключить вообще(также как и коллизии), и использовать таймеры + лайнтрэйсы.
Аватара пользователя
Пользователь
Сообщения: 2319
Цитата:
Я создал таких же чарактеров и дал им самую простую логику SimpleMove с целью на игроке

тут есть некоторые проблемы:
игрок это динамическая цель, тоесть подвижная, тоесть к ней нужно обновлять путь,
а обновление пути слишком часто не есть хорого для производительности
-> из этого следует:
1 - что либо нужно провести ревизию кода и знать как часто происходит поиск пути, и использовать подвижную цель уже с пониманием нагрузки
2 - не использовать подвижную цель для навигации и вручную обновлять позицию цели с нужной частотой и параметрами

а вот то что часть ботов игнориловало движение нужно разбираться... неочевидно по крайней мере чего они не двигались.
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 21
Товарищи, я вновь решил поднять старую тему и она схожа по смыслу с предыдущими постами. После нашего обсуждения я на долгое время забросил идею работы с большим числом актёров в сцене, однако, моя дорога изучения движка вновь привела меня к данной тематике. В связи с чем я провёл несколько стресс тестов.
Они заключались в сравнении того какую задержку по просчёту CPU дадут 2500 акторов и 2500 чаракторов. Базовые болвачики имели только сферу коллизии и белый куб. По итогу:
-Caracter просаживает CPU до 31-35 ms
-Actor при том же количестве выдаёт 6 ms
Как и следовало ожидать пустой класс Actor обладает огромным запасом производительности и логичнее использовать его, собственно что мне и писали ранее.
Но, при добавлении стандартной скелетной сетки приводило меня к крайне удручающим результатам:
Actor увеличивал задержку CPU до 106 ms просто из-за того что была активна анимация покоя, и это ещё до добавления какой- бы то ни было логики. Оптимизация логики и блупринтов не будет иметь смысла пока не будет убрана основа сжирающая большую часть ресурсов а именно скелетная анимация. Порывшись в гугле я смог найти только примитивные способы сгладить данный момент, а именно отключать рендер анимации если актор не находится в кадре. Это неплохой способ, позволяющий вновь сократить задержку CPU до:
- 20 ms при условии что персонаж не находится в кадре и
- 11 ms если к мешу в принципе не подключать анимблупринт.
Но если вновь обратить взор камеры на все эти 2500 юнитов, то даже при условии того, что анимация к ним не подключена, приводит к падения CPU до задержки в 70 ms.

Итак подведя итоги проделанной работы у меня возник вопрос, есть ли методики позволяющие оптимизировать скелетные сетки персонажей, упрощать их в рантайме, или же на данном поприще пока ни у кого успехов не было?
Аватара пользователя
Пользователь
Сообщения: 2319
есть - лоды, лоды не только на ассет скелетал меша но также и в аним бп используются, у скелетал мешь компонента так же есть настройка отключения просчета анимации когда он не рендерится...
собственно это основное.
а вообще - берешь всех участников действа - скелетал мешь компонент, аним блупринт , скелетал мешь, актор содержащий все это.
и разбираешь за что отвечает каждая(!) настройка в них. а в аним бп еще и настройки нод участвующих.
_________________
we need to go deeper


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

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