Полезное

Мы Вконтакте

Discord канал

#
Модератор: icms
Аватара пользователя
Пользователь
Сообщения: 67
Всем доброго дня.
Возник дискус с самим собой:)
Если не избежать TICK событий то как лучше в плане оптимизации их реализовать:
1) TICK вызывает много CUSTOM EVENTS
2) На TICK вешаем SEQUENCE на которых логика EVENTov

Или всё таки всё в таймеры цикличные уводить и не юзать TICK вообще.
Проблема возникла в сканировании ОВЕРЛАПОМ областей юнитами, чем их больше тем "просадка" выше, с таймерами "глотает" и не всегда сканирует правильно цели, с ТИКОМ всё отлично работает но "проседает".

Конечно есть надежда на NATIZIVE что после компиляции на С+ станет быстрее но компилирует ли ТИК с кучей логики без ошибок?

Заранее спасибо!
Аватара пользователя
Пользователь
Сообщения: 2319
Цитата:
Конечно есть надежда на NATIZIVE

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

наверное хуже сложно принять решение чем проверять оверлапы на тике...

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

может все же вопрос неправильно сформулирован?
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 2319
конкретно по тику
Цитата:
1) TICK вызывает много CUSTOM EVENTS
2) На TICK вешаем SEQUENCE на которых логика EVENTov
без особой разницы...
накладные расходы на вызов ивентов есть, но очень маленькие.(и их еще может и нативизация сократить)
все равно в сиквенсе будут какието методы вызываться.

куча ивентов будет удобнее и организованней, чем дерево в ивент графе после сиквенса.
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 2319
Цитата:
Или всё таки всё в таймеры цикличные уводить и не юзать TICK вообще.

возможно будет лучше...
особенно если таймеры не с около нулевой задержкой(если с около нулевой тогда еще медленней все будет работать)
а если еще сделать так чтоб таймеры разных акторов в не в один момент времени срабатывали тогда все будет летать.
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 67
Snake писал(а):
у физ объектов есть делегаты(диспатчер ивенты) которые уже следят за оверлапами, и дают срабатываниев нужный момент, на тике ничего такого проверять не нужно.


Суть в чём есть сфера к примеру 25 000 юнитов в радиусе (нужна большая это ПВОшка), каждую секунду я чекаю (тиком) какой актёр с каким тегом её тронул (опрашиваю AIR и TEAM), если ТЕГ нужный мне то срабатывает евент. Вроде такая простая задача а поставила как раком:)))) конечно маленькая сфера не даёт дампа но нужна именно большая и я хз теперь как и быть всё работает а вот эта фигня тормозит весь проект, причём узнал по сути тормоза когда таких юнитов на карте больше 5! Делал и просто MESH который как раз как ты описал выше делегировал оверлап но тормоза были неимоверные и на тике оказалось быстрее.

Пробнул таймером теперь получилось дёрганья работы юнита если таймер к 0 то огогого что начинается.
Вот и вешаюший евент http://s1.uploadpics.ru/images/-1fntezvcQ.jpg
Аватара пользователя
Пользователь
Сообщения: 67
Snake писал(а):
а если еще сделать так чтоб таймеры разных акторов в не в один момент времени срабатывали тогда все будет летать.


Послушал совет и решил поставить в таймер рандомный ФЛОАТ от 1-3 и ВУАЛЯ:)) помогло:) Спасибо ОГРОМНЕЙШЕЕЕ!!!.
Теперь хоть альфаверсию смонтирую уже:)
Аватара пользователя
Пользователь
Сообщения: 2319
вообще сферу можно и без оверлапов проверять...
просто сравнивать дистанцию всех обьектов до нужного актора, если она меньше заданной.
берем массив фильтруем, по дистанции, остатки - оверлап.
в некотором случае будет дешевле физического оверлапа... потому что не нужно считать пересечение двух примитивов, и тем более пересечение сложных коллизий. где будет проверка на каждую вершину коллизии.
при проверке массива из 5 обьектов(выше кол-во упомянуто) это должно быть мгновенно практически. и даже на тике не влиять на фпс.
_________________
we need to go deeper
Последний раз редактировалось Snake 25 июн 2018, 23:44, всего редактировалось 2 раз(а).
Аватара пользователя
Пользователь
Сообщения: 2319
еще если сделать тоже самое но ассинхронно то будет еще быстрее, а для этого есть EQS она сэтим точно быстрее справиться чем логика на скрине...проверено лично мной.
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 67
Snake писал(а):
еще если сделать тоже самое но ассинхронно то будет еще быстрее, а для этого есть EQS она сэтим точно быстрее справиться чем логика на скрине...проверено лично мной.

Спасибо еще раз как всегда в точку:) EQS помогла но вылезла другая фигня, когда для АИ включает евент с нодой FIND LOOK AT ROTATION с блоком SET WORLD ROTATIOn для башни танка ФПС падает с 60 в 15.... делал и тиком и делаем всё равно тормоза, если башня в реальном времени "следит" за целью то фпс падает а альтернативного метода поворота башни в сторону игрока тупо не нашёл. Если ставить срабатывание евента поворота башни там скажем раз в 2 секунды тормозов нету то она дерганьем поворачивается, я так понимаю без тика ну никак, а этот самый тик и всё портит... замкнутый круг блин.
Думал моделька выделывается сделал тупо два квадратика "башня и тело", одно и тоже как только тиком смотреть на точку и следить за ней то фпс 60 становится 10-15.
Стоит добавить что таких башен на уровне порядка 40!!! но смысл в том что их должно быть много, возник вопрос а анреал вообще способен на стратежку? Поскольку заметил даже "мёртвые" павны в большом количестве дропают ФПС как будто не рассчитан на массовку двиг.
П.С. Прогнал НАТИЗИВОМ этот БП посмотрел прирост фпс +2-3 фпс:)) понял что по сути ничего не поменялось:)
Аватара пользователя
Пользователь
Сообщения: 2319
ммм... поворот одной башни на тике не может так просадить фпс...

нужно искать причину потому что у меня в коде "лук эт" считается сотнями за кадр и фпс при это упирается в потолок.
отключить физику у башни вероятно нужно, колизии и тд просадка вероятно с этим связанна. И даже наверное что-то еще есть что садит фпс.
это первое.

2:
под тиком я всегда подразумеваю мировой тик который работает с частотой ФПС.
на тике(мировом) вобще ничего не нужно делать, сильно часто работает мировой тик, для подвижных частей достаточно 45кадров секунду чтоб рывки не были заметны глазом даже с суперзрением а это интервал 0,02222(2) секунды( <- исправил вместо 0,2(2))
чаще чем 45 фпс просто нечего считать, нет смысла в холостую отрабатывать код.
если имеются ввиду любые другие тики (внутрений тик актора *), то нужно вносить в котекст чтоб я опять не писал о том что на тике ничего делать не нужно.
* у каждого актора можно настроить свой интервал его внутреннего тика например(не буду повторяться что можно и на таймерах)
_________________
we need to go deeper
Последний раз редактировалось Snake 04 июл 2018, 14:24, всего редактировалось 2 раз(а).


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

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