В общем, делаем с другом карту на GUI, и встал вопрос, что лучше использовать Таймер или Триггер с периодическим событием. Если думать логически, то преимущество периодика в том, что в нем не нужно использовать переменную Таймера, т.е. не засоряется список переменных, к тому же есть проверка:"Триггер включен или выключен" и можно отслеживать работает ли триггер или нет, вот. А вот в таймере не видно преимуществ, хотя его мне советовали. Так вот, мне нужно знать, почему таймер лучше периодических триггеров, для "говномапок" на Gui.
Также есть второй вопрос, почему нельзя ставить периодик/таймер меньше 0.03?

Принятый ответ

Если в триггере много действий, загружающих память, то лучше не использовать малый период. А если в нём ещё утечки памяти, то рано или поздно лаги сделают игру невозможной.
По сути, и таймер, и периодическое событие запускают действия в определённое время, то есть действуют одинаково. Смотри, что тебе удобнее.
1
16
7 лет назад
1
для гуи нет разницы, юзай что тебе больше нравится
0
13
7 лет назад
0
Вообще зависит от задачи, таймер удобнее ведь в большинстве случаев.
Также есть второй вопрос, почему нельзя ставить периодик/таймер меньше 0.03?
Почему нельзя? Можно. Опять же от задачи зависит.
1
18
7 лет назад
1
Если в триггере много действий, загружающих память, то лучше не использовать малый период. А если в нём ещё утечки памяти, то рано или поздно лаги сделают игру невозможной.
По сути, и таймер, и периодическое событие запускают действия в определённое время, то есть действуют одинаково. Смотри, что тебе удобнее.
Принятый ответ
0
19
7 лет назад
Отредактирован Darknessay
0
~~ХОП ХОП ОТРЕДАЧЕНО
Я замечал, что при 0.01 определенные действия как будто не успевают выполняться, но такое было редко и возможно это было моя ошибка, так что утверждать не стану.
1
13
7 лет назад
Отредактирован NekoriDes
1
А если в нём ещё утечки памяти
То вообще не важно какая там у тебя переодичность и что ты используешь. x)
1
20
7 лет назад
1
NekoriDes:
А если в нём ещё утечки памяти
То вообще не важно какая там у тебя переодичность и что ты используешь. x)
так-то лучше засорять память реже, чем чаще
1
27
7 лет назад
Отредактирован MpW
1
xgm.guru/forum/showthread.php?t=58784 разницы никакой нет между двумя. только неудобство в том, что это событие, и привязан к триггеру и все. Событие то ловит когда завершает действие таймера. Плюс еще можно условиями юзать, как фильтры.
раскрыть
Еще можно в качестве события нацепить таймер. Да используют в событиях таймеры. Таймеры просто привязаны событием к триггеру. Различие в том, ловим событием завершение таймера, и запускаем триггер.
Или можно сразу запускаем функцию. Через нативку удобно вызвать функцию таймером: создал таймер, запустил - делал действие, удалил таймер и все. В то время, как через триггер: когда удалишь таймер, там остается событие, которое будет бесполезным. Не знаю, считается ли это утечкой (считается незначительной утечкой)
раскрыть
скорее всего есть небольшие различия из-за TriggerSleepAction. недавно пробовал, и узнал, что работает только в функции действия. А если запустить отдельный поток, вроде ForGroup. то не работает слип. Не знаю, если вызвать через нативку таймера функцию, то в функции кажись слип работать не будет. В некоторых случаях, нужно паузу сделать в 0.00 сек. например. Хотя мне привычно юзать таймеры
xgm.guru/forum/showthread.php?t=5678 вот что-то нашел про потоки
Darknessay, человеческий глаз не успевает увидеть изменения меньше чем 0,3 или 0,4 сек. Не увидит движения. Но это не значит, что вредно (просто игрок не увидит ничего. машина быстро работает).
Дело не в том, что лучше. А что плохо иметь одновременно много работающих таймеров.
5
26
7 лет назад
Отредактирован Extremator
5
Периодик продолжает работать всю игру, даже если выключен
проверяется это тем что периодик в 30.00 сек будет срабатывать ровно каждые 30 сек, после начала игры, а не с того момента как будет включен, не вызывая при этом срабатваниый если был отключен (таким образом можно сказать что подсчёт происходит постоянно, и если там время в 0.03 сек - само собой становится понятным что в игре будет работать лишний "таймер", при том что он может за игру даже не понадобиться).
Таймер же работает только тогда, когда ты его САМ запускаешь...
По поводу переменных - не важно сколько у тебя переменных в карте, сами по себе они ничего не весят и не занимают... вот и всё
0
20
7 лет назад
0
Extremator,
сами по себе они ничего не весят и не занимают - ссылку на исследования, пожалуйста.
0
13
7 лет назад
0
DemonoiD, а что за исследования ты хочешь увидеть? Считаешь что пара десятков "пустых" переменных может на что-то повлиять? На что?
0
20
7 лет назад
0
NekoriDes, как минимум на вес карты. Пару сотен пустых переменных должны как-то влиять на работоспособность, так как они занимают ячейку памяти и готовы быть вызваны в любую секунду. Интересны числа, а Вы утверждаете, что они ничего не занимают.
0
13
7 лет назад
0
DemonoiD, я думаю, имелось в виду то, что это существенно ни на что не повлияет. Но если тебе это покоя не дает, возьми любой нормальный завершенный проект (исходники всмысле) и протестируй.
0
20
7 лет назад
0
NekoriDes, ты ужасный зануда :(
0
32
7 лет назад
0
2
NekoriDes, как минимум на вес карты. Пару сотен пустых переменных должны как-то влиять на работоспособность, так к
10 000 + начинают влиять.
6
26
7 лет назад
6
... я представляю себе карту где на первой строке идёт globals
а где то на 10002-й endglobals ...
2
28
7 лет назад
2
что триггер что таймер создают переменные
просто в случае с триггером редактор делает это за тебя
таймер лучше т.к. он более лёгкий чем триггер
триггер же мало того что дофига весит так ещё использует дополнительные объекты в процессе работы (обработчик событий, условия, действия и т.д.)
2
20
7 лет назад
2
Extremator, и тут разработчик карты сменился на нового
0
32
7 лет назад
0
nvc123:
что триггер что таймер создают переменные
просто в случае с триггером редактор делает это за тебя
таймер лучше т.к. он более лёгкий чем триггер
триггер же мало того что дофига весит так ещё использует дополнительные объекты в процессе работы (обработчик событий, условия, действия и т.д.)
В добавок триггер сам считать неможет и создает для событие собственный таймер, идеинтичный обычному таймеру, тока его хер перезапустишь и использовать снова низя, потому если вам нужен триггер (отловить смерть юнита к примеру или урон, ибо других путей нету) то предпочтительнее юзать отдельный триггер и отдельный таймер.
Выше сказанное относится к модмейкерам пишущих свои карты на Jass, vJass и cJass, гуишникам и новичкам лучше не морочить себе этим голову.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.