Добавлен
Целесообразно ли использовать в карте рекурсию? Или лучше динамик триггеры?

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

Разумеется не целесообразно, обычно рекурсии заканчивается фаталом. Да и нагрузка лишняя, просто таймер и усе.
0
19
6 лет назад
0
Похожие вопросы:

ответ
екзекут принимает строку
function Recursion takes nothing returns nothing
call TriggerExecute("Recursion")
endfunction
а вообще что за бред
фатал делается гетлокалплеером и техникой
ответ
map_maiker, как и в java или c++
а вообще неужели попробовать самому дольше чем создать ресурс?
ответ
Увы низя указывать рекурсии на взаимосвязи элементов или юнитов.
Если вы хотите отменять апгрейды зданий, делайте их кастомно к примеру на основе продажи\подготовки юнитов, только здание продало\построило определённого юнита сразу же изменть его на другое, попутно удалив подготовленного\проданного юнита.
Такой принцип используется в TD от близзард ''Лазурные башни".
Можно попробовать с помощью морфов сфинкса.
ответ
Maniac_91, фактически такая генерация и была придумана Нотчем для майнкрафта. Просто обычная система "биомов". Это кстати очень неплохо, ведь для каждого биома ты можешь подгружать свой пул декораций и так разнообразить визуальную составляющую игры.
Так же перед началом игры (после загрузки карты), можно сделать плашку "загрузки генерации", которая показывала бы пользователям % готовность генерации. А далее, таймерами или вейтами, выставлять "отдых" для варкрафта из-за нагрузки. Мол, каждые 1500 выполнений триггера - отдохни на секунду, хорош.
ответ
Steal nerves:
в чем разница между ExecuteFunc и просто call
PT153, ну call просто вызываешь потоком (он не создает поток), например у тебя в ряд выставлены сверху вниз названия функции со скобочками (и внутри скобок аргументы, а если не берет никаких аргументов, то внутри скобок пусто) и через call вызывает одну за другой последовательно сверху вниз.
call название функции (аргументы)
Допустим первую верхнюю функцию вызвали, и ее обработали, потом поток берет вторую внизу функцию и обрабатывает и т.д. Но у потока есть ограничения в операциях, как только выполнится определенное количество операций, варкрафт экстренно завершает поток и даже не сообщает об этом.
call функция 1()
call функция 2()
......
call функция 999()
Тут хочу обратить внимание и на то, насколько длинный код в этой вызываемой функции. И сколько вызываемой работы потребует: всякие вычисления, бесконечные циклы и другое. Если длинный код у тебя, и кучу циклов, и сами циклы большую работу совершают, то следует разбить на участки или как-то переделать что ли, уменьшить работу цикла и др.
Можно разбить на функции и ...
  1. вызывать через call, но так делать не стоит. Поток вызывает эти функции последовательно.
  2. Нужно делать задержку (через вэйт), например в ИИ-скриптах варкрафта делают задержку, чтобы не было нагрузки. Вместо вэйта можно таймер.
  3. через ExecuteFunc, ExecuteFunc создает отдельный новый поток. информацию про ExecuteFunc скидывал выше.

0
26
6 лет назад
0
2
32
6 лет назад
2
Разумеется не целесообразно, обычно рекурсии заканчивается фаталом. Да и нагрузка лишняя, просто таймер и усе.
Принятый ответ
0
20
6 лет назад
0
Ответы уже даны, конечно, но считаю умемтным поинтересоватья для каких конкретных задач интересует сабж
2
28
6 лет назад
Отредактирован nvc123
2
целесообразно ничего из этого не использовать
имхо рекурсия нужна только в алгоритмах на графах но не думаю что ты их юзаешь (или хотябы знаешь их)
динамические триггеры практически ненужны
есть лишь 1-2 специфичных случая в которых их можно применить но и то можно без них
Чтобы оставить комментарий, пожалуйста, войдите на сайт.