Инфо: Карта на актуальном патче Reforged. Триггеры на GUI, по немногу переписываю на Jass. Весь код не имеет сложных расчетов и манипуляций, карта в стиле altered melee.
- В процессе игры по сети возникает рассинхрон и участников игры выкидывает из игры. Как много утечности в триггерах на GUI, на что обращать внимание в первую очередь при подобной проблеме. Чего нужно избегать в будущем?
- Про утечки в Warcraft почитал, переводя код в jass привожу по возможности к нативкам, без вызова функций в функции. Еще в локалках подчищаю объекты, так как они при выходе из функции все равно остаются в памяти (по 4 кб на каждый объект). Есть ли ещё что-то что нужно учесть и я упустил?
- Глобалки - говорится что это Зло. Но каким образом хранить доп переменные которые хранят информацию всю игру? (для актуального патча Reforged).
- Немного поздно переходить на LUA, но все-таки, если дать заднюю и переписать на LUA, будет ли это на порядок эффективнее и производительнее? или лучше уже не дергаться?
Принятый ответ
Думаю, если есть возможность перейти на луа по дефолту, хуже не будет, и пункты 1 и 2 уйдут сами собой )
По п 3 - глобалки разве что для удобства нужны, как константы, чтобы избежать "магических чисел", например, и для переноса каких либо общих данных между функциями, вроде каллбека таймера итп. И массивы для бд подойдут, в сочетании с циклами. Для частого переноса данных или использования вместо локалок - глобалки зло, да. )
По п 3 - глобалки разве что для удобства нужны, как константы, чтобы избежать "магических чисел", например, и для переноса каких либо общих данных между функциями, вроде каллбека таймера итп. И массивы для бд подойдут, в сочетании с циклами. Для частого переноса данных или использования вместо локалок - глобалки зло, да. )
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. EugeAl
По п 3 - глобалки разве что для удобства нужны, как константы, чтобы избежать "магических чисел", например, и для переноса каких либо общих данных между функциями, вроде каллбека таймера итп. И массивы для бд подойдут, в сочетании с циклами. Для частого переноса данных или использования вместо локалок - глобалки зло, да. )
Ред. nazarpunk
Ред. EugeAl
Пример 2 - get trigger unit записывается в глобалку, а потом глобалка используется после вейта, триггер срабатывает не 1 раз. Очевидно, что данные..., ну ты понял.
Ред. rsfghd
Ред. AMark
Ред. nazarpunk
Ред. nazarpunk
Ред. EugeAl
П. С. Не знаю других способов, как без вейта или таймера сделать отложенные действия, когда это нужно. Не писать же мозголомные системы
Ред. EugeAl
Ред. EugeAl
Правда, у него есть недостаток - если имеется в виду время суток - оно может течь по разному, если в игровых константах настроить другую длительность суток.
Ред. rsfghd
Ред. nazarpunk
Ред. EugeAl
Ред. ScorpioT1000
Ред. 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).
Одно из этого, пересмотрю код
Ред. ScorpioT1000
Ваш совет тоже имеет смылс, это тоже проблема вызывающая рассинхрон. Но конкретно в моем случае я уверен что никогда не работал с Z координатами.
"Типичный" завсегдатай Хигамы:
Ред. EugeAl