Инфо: Карта на актуальном патче Reforged. Триггеры на GUI, по немногу переписываю на Jass. Весь код не имеет сложных расчетов и манипуляций, карта в стиле altered melee.
- В процессе игры по сети возникает рассинхрон и участников игры выкидывает из игры. Как много утечности в триггерах на GUI, на что обращать внимание в первую очередь при подобной проблеме. Чего нужно избегать в будущем?
- Про утечки в Warcraft почитал, переводя код в jass привожу по возможности к нативкам, без вызова функций в функции. Еще в локалках подчищаю объекты, так как они при выходе из функции все равно остаются в памяти (по 4 кб на каждый объект). Есть ли ещё что-то что нужно учесть и я упустил?
- Глобалки - говорится что это Зло. Но каким образом хранить доп переменные которые хранят информацию всю игру? (для актуального патча Reforged).
- Немного поздно переходить на LUA, но все-таки, если дать заднюю и переписать на LUA, будет ли это на порядок эффективнее и производительнее? или лучше уже не дергаться?
Edited by EugeAl
По п 3 - глобалки разве что для удобства нужны, как константы, чтобы избежать "магических чисел", например, и для переноса каких либо общих данных между функциями, вроде каллбека таймера итп. И массивы для бд подойдут, в сочетании с циклами. Для частого переноса данных или использования вместо локалок - глобалки зло, да. )
Edited by nazarpunk
Edited by EugeAl
Пример 2 - get trigger unit записывается в глобалку, а потом глобалка используется после вейта, триггер срабатывает не 1 раз. Очевидно, что данные..., ну ты понял.
Edited by rsfghd
Edited by AMark
Edited by nazarpunk
Edited by nazarpunk
Edited by EugeAl
П. С. Не знаю других способов, как без вейта или таймера сделать отложенные действия, когда это нужно. Не писать же мозголомные системы
Edited by EugeAl
Edited by EugeAl
Правда, у него есть недостаток - если имеется в виду время суток - оно может течь по разному, если в игровых константах настроить другую длительность суток.
Edited by rsfghd
Edited by nazarpunk
Edited by EugeAl
Edited by ScorpioT1000
Edited by ScorpioT1000
b. GUI Function "Select unit group <group> for player <player>", alias JASS function SelectGroupForPlayerBJ. You should replace it by a for loop that adds unit 1 by 1 to selection (source: here).
Одно из этого, пересмотрю код
Edited by ScorpioT1000
Ваш совет тоже имеет смылс, это тоже проблема вызывающая рассинхрон. Но конкретно в моем случае я уверен что никогда не работал с Z координатами.
"Типичный" завсегдатай Хигамы:
Edited by EugeAl