Суть способности заключается в том, что создаётся 8 юнитов, и все они ходят симметрично центру окружности по приказам главного юнита. Проблема в том, что если их заставить сужать круг, то они довольно быстро реагируют и без остановок, даже если спамить кнопку передвижения. Но если радиус круга увеличивать (т.е. все юниты разойдутся во все стороны), то начинают тупить, если выдавать по два приказа в секунду. Можно ли как-то это исправить? Карта довольно маленькая и на ней очень мало юнитов.

Из-за большой дистанции получения приказа тоже могут возникнуть проблемы. Какова дистанция получения приказа у этих юнитов?
А, посмотрел видео. У вас там вроде все норм. А тупят потому что натыкаются на препядствия.
`
ОЖИДАНИЕ РЕКЛАМЫ...
26
А каким триггером реализована способность?
15
8gabriel8:
А каким триггером реализована способность?
А что конкретно интересует? Событие ловит приказ главного юнита и этот же приказ отдаётся остальным через IssuePointOrder(). Т.е. нажал за главного юнита двигаться куда-то, и остальные тоже пошли в какую-то сторону (каждый в разную).
26
Это не объясняет, как происходит уменьшение и увеличение круга.
15
8gabriel8:
Это не объясняет, как происходит уменьшение и увеличение круга.
Как видно, юниты сильно тупят, когда круг увеличиваются, и быстро реагируют, когда сужается.
26
Так как реализовал движение каждого юнита, по какой формуле триггер высчитывает, что юнит должен пойти не в ту точку, куда отправлен основной юнит, а в ту, что ему предназначена?
15
8gabriel8:
Так как реализовал движение каждого юнита, по какой формуле триггер высчитывает, что юнит должен пойти не в ту точку, куда отправлен основной юнит, а в ту, что ему предназначена?
Создаётся центр окружности в месте, где был главный юнит. Он телепортируется в указанную точку и таким образом задаёт радиус окружности, и создаётся 8 юнитов на этой окружности. С этого момента каждый юнит двигается симметрично оси своего радиуса, т.е. если основной юнит сместился на 30 градусов и его расстояние увеличилось на 200 от центра, то каждый юнит также смещает своё положение относительно центра окружности на 30 градусов и 200 расстояния.
range - расстояние от центра окружности до точки приказа главного юнита
angle - угол от центра окружности до точки приказа + 40*i, где i - номер дополнительного юнита. (т.е. у каждого следующего угол сдвинут на 40 градусов)
targetx = x+range*Cos(bj_DEGTORAD*angle)
targety = y+range*Sin(bj_DEGTORAD*angle)
Отдаётся приказ smart на targetx и targety.
26
Формулы именно такие, а не:
(x+range)*cos(bj_DEGTORAD*angle)
(y+range)*sin(bj_DEGTORAD*angle)
это вопрос
15
8gabriel8:
Формулы именно такие, а не:
(x+range)*cos(bj_DEGTORAD*angle)
(y+range)*sin(bj_DEGTORAD*angle)
это вопрос
Я скопировал из триггера
x и y - координаты центра окружности
26
А проверял на карте с ровным ландшафтом и полной видимостью, там тоже тормозят при увеличении расстояния?
15
8gabriel8:
А проверял на карте с ровным ландшафтом и полной видимостью, там тоже тормозят при увеличении расстояния?
На маленькой карте без препятствий всё ок
26
Тогда либо из-за невидимости точки назначения тормозит, либо из-за преград на пути, либо из-за всего вместе.
Надо поискать причину с помощью тестов
Но на вскидку предполагаю, что поиск пути из-за препятствий притормаживает.
Возможно лаги происходят из-за цикла в триггере, где отдаёшь приказ всем иллюзиям. Типа все действия в триггере выполняются последовательно, Каждый поиск пути требует чуть-чуть времени, что замедляет все остальные действия. Но это не точно, надо проверять.
15
8gabriel8:
Тогда либо из-за невидимости точки назначения тормозит, либо из-за преград на пути, либо из-за всего вместе.
Надо поискать причину с помощью тестов
Но на вскидку предполагаю, что поиск пути из-за препятствий притормаживает.
Возможно лаги происходят из-за цикла в триггере, где отдаёшь приказ всем иллюзиям. Типа все действия в триггере выполняются последовательно, Каждый поиск пути требует чуть-чуть времени, что замедляет все остальные действия. Но это не точно, надо проверять.
При полном вижене карты так же тупят :/
8gabriel8:
Возможно лаги происходят из-за цикла в триггере, где отдаёшь приказ всем иллюзиям. Типа все действия в триггере выполняются последовательно, Каждый поиск пути требует чуть-чуть времени, что замедляет все остальные действия. Но это не точно, надо проверять.
Слушай, да. При двух юнитах гораздо быстрее реагируют.
21
Принятый ответ
Из-за большой дистанции получения приказа тоже могут возникнуть проблемы. Какова дистанция получения приказа у этих юнитов?
А, посмотрел видео. У вас там вроде все норм. А тупят потому что натыкаются на препядствия.
26
JackFastGame, можешь сделать не цикл, а другой триггер с таймером в 0.00 секунд, может так ждать поиска пути каждого юниты не будут?
15
8gabriel8:
JackFastGame, можешь сделать не цикл, а другой триггер с таймером в 0.00 секунд, может так ждать поиска пути каждого юниты не будут?
Сделал с таймером 0.01 сек, тупить начал даже главный юнит :/
26
Скинь триггер и способность потестировать.
И как ты сделал отображение скорости вместо атаки и защиты?
15
8gabriel8:
Скинь триггер и способность потестировать.
И как ты сделал отображение скорости вместо атаки и защиты?
Скинул карту.
Скорость - это способность на прибавку защиты с 300 уровнями (отображается как зеленая или красная скорость), а белая скорость - это изначальная защита юнита.
Загруженные файлы
28
Не надо делать период таймера очень маленьким, все тупить начинают. 0.25 должно хватить.
26
Вопрос-то читал?
JackFastGame, ещё не тестировал, но по идее можно отключить иллюзиям collision, чтобы препятствия не создавали проблем, правда, не уверен, что отключится вместе с этим и поиск пути.
Нашёл команду, которая теоретически поиск пути отключает
SetUnitPathing(u,false)
Но может это и есть Turn collision off)
28
Но может это и есть Turn collision off)
Так и есть, но поиск пути начинает работать криво.
15
SetUnitPathing не помогает. Делал юнитов летающими - всё хорошо, за исключением двух вещей: визуально выглядит убого, могут проходить через препятствие. Суть спелла в том, чтобы запутать противника. Это иллюзии, и они должны с точностью повторять движения главного юнита. Но этот лагучий алгоритм нахождения пути всё портит :(
PT153:
Не надо делать период таймера очень маленьким, все тупить начинают. 0.25 должно хватить.
Даже сделал так, что каждому следующему юниту приказ отдаётся с большей задержкой (первому юниту через 0.1с, второму - через 0.2с, и т.д.), но все манипуляции с таймером сводятся к тому, что либо главный юнит начинает тупить вместе с остальными, либо они тупят по очереди.
26
Никак не получается воспроизвести проблему в карте для теста. Использую ли твои триггеры, либо GUI-триггеры, юниты не тормозят.
Загруженные файлы
30
Скорей всего тупит не поиск пути а частые приказы, на которые поиск пути и считается.

Как тригеры будут работать с автоатакой и патрулём?
15
Никак не получается воспроизвести проблему в карте для теста. Использую ли твои триггеры, либо GUI-триггеры, юниты не тормозят.
Потому что карта супер маленькая и препятствий очень мало
Как тригеры будут работать с автоатакой и патрулём?
Автоатак нет. Патруль не используется.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.