Доброго времени суток. Хотелось бы более подробное объяснения сути некоторых моментов.
Навалился я, в очередной раз, на статейки Jass. В этот раз по-православному - от 0 до 15. Что-то понял, что-то частично понял, а что-то не понял совсем. Задавать столько вопросов, конечно, не красиво, каюсь, но некропостеров и археологов здесь не любят больше. Поэтому, кому не жалко времени, помогите новичку. Постараюсь по порядку.
  1. Много где читал и слышал, что основной плюс Jass - стабильность работы и более широкие возможности. Но что, если мне не нужны на данном этапе какие-то феерические возможности? Попытаться что-то сделать на GUI; не вышло - думать, гуглить, задавать вопрос в конце концов. Если уж и это всё не помогает и без более-менее сложного Jass кода не обойтись - идею заменить.
Стабильность работы, как я понял из статей, заключается в том, что Jass умеет правильно работать с переменными и "подчищать" утечки. Собственно, можно ведь использовать GUI с кастом скриптами на эту самую оптимизацию? (ПС: что-то важное, например, хороший спавн крипов по карте, скачать jass наработкой).
  1. По поводу переменных. Как я понял из статьи, локальные переменные грузят память, образуя эти самые утечки. Глобальные, получается, не грузят её? На основе примеров правильно ли я сделал триггер и оптимизировал его?
  1. Что именно нужно чистить, чтобы через некоторое время игры не было тех самых лагов?
Удаление юнита после смерти, удаление эффекта после его срабатывания, группы юнитов, плавающий текст. Ничего не пропустил?
ПС: совсем не понял про удаление регионов, модификаторов видимости и декораций. Если регионы не изменяются в течение игры, а только, скажем, являются варпом в данж, то что нужно очищать? По поводу декораций - то же самое, но с декорациями взаимодействия пока не запланировано (кроме каких-нибудь ворот, например). Про модификатор видимости не понял совсем ничего.
Очищать перменные через кастом скрипт set x = null, юнитов - ремувать, текст и эффекты - уничтожать.
  1. Что делают RB и SCV? Из обеих статей не понял, для чего они нужны и что делают вообще. Сильно ли они важны для новичка?
  1. Не знаю, как правильно задать вопрос, но попробую. Какие системы НУЖНО делать обязательно на Jass, а какие - НИ В КОЕМ случае не делать на GUI?
Заранее, извиняюсь за стену текста.
Надеюсь на ответы, спасибо.
1. Много читал о дамми-касте. Везде пишут, что даммиков лучше заносить в переменную и отдавать приказ переменной, во избежании лагов\фатала через несколько часов игры. Что именно в этом процессе приводит к таким последствия?
Дополнительно:
а) можно ли избежать этих проблем путём занесения в переменную через Last created Unit?
б) если занести юнитов в переменную в начале игры, а затем удалить этих юнитов, то приказы этим переменным будут работать?
2. Будут ли лаги\фаталы, если используется несколько (около 10-15) триггеров, которые что-либо делают каждые 0,5 - 1 секунд? Например, проверяет наличие бафа на юните, если бафа нет - удалить способность у юнита.

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

Спасибо всем за ответы и пояснения! Закрываю флудильню :с
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
15
10 лет назад
0
  1. Если карта расчитана на несколько часов игры - лучше на гуи её не делать.
а) если нужен мгновенный даммикаст, можно обойтись одним last created unit, но в любом случае лучше писать на jass.
б) вы будете отдавать приказ несуществующим юнитам, если отлавливать этого юнита, будет null.
  1. Если хорошо оптимизировано - лагов не будет.
0
4
10 лет назад
0
Если карта расчитана на несколько часов игры - лучше на гуи её не делать.
Почему? Какие могут быть проблемы и из-за чего?
вы будете отдавать приказ несуществующим юнитам, если отлавливать этого юнита, будет null
Понятно. Тогда каким образом заносить даммиков в переменную, если их, скажем, штук 50?
3
15
10 лет назад
3
Почему? Какие могут быть проблемы и из-за чего?
Неоптимизированный гуи создает много лагов
Понятно. Тогда каким образом заносить даммиков в переменную, если их, скажем, штук 50?
Можно использовать массивы
0
4
10 лет назад
Отредактирован Nyanta
0
Неоптимизированный гуи создает много лагов
Какие-то определённые триггеры или их количество?
Можно использовать массивы
Я понимаю, но я имел ввиду само создание переменной. Можно дать даммикам по 6 спеллов (или даже спеллбуком, наверное, можно 11) и заставлять их кастовать для разных приказов, но что делать, если даммиков много? Никак нельзя занести их в переменную так, чтобы "оригиналы" не оставались на карте после этого?
0
28
10 лет назад
Отредактирован nvc123
0
Nyanta, да просто занеси всех дамиков в массив и всё
  1. если 10-15 то лаги будут
юзай 1 таймер и им делай всё что надо
0
4
10 лет назад
0
да просто занеси всех дамиков в массив и всё
Я понимаю, что ты хочешь до меня донести, но не понимаю, как это сделать. У меня получается заносить в переменную юнитов лишь двумя путями:
  1. Last Created Unit
  2. Выбором уже созданного юнита на карте.
Не будет ли нагружать карту эта толпа даммиков, если они на ней обязаны находиться изначально?
1
28
10 лет назад
1
нет не будут
udg_Damy[0]=CreateUnit(Player(a),b,x,y,0)
Damy - массив дамиков
a - номер игрока(0 это красный, 1 - синий)
b - равкод дамика(можно посмотреть в редакторе объектов)
x - координата x дамика
y - координата y
0
4
10 лет назад
0
nvc123, большое спасибо за разъяснение!
Последний вопрос: чем отличается "написание jass кода" от "конвертации триггера в текст"?
2 комментария удалено
6
28
10 лет назад
Отредактирован nvc123
6
Nyanta, гуи конвертируется в бж функции
что ничем не отличается от самого гуи
а писать можно нативными функциями
объясню разницу на примере заказа пиццы
нативные:
звоним и заказываем пиццу и платим за пиццу
бж:
звоним другу чтобы тот позвонил и заказал пиццу
потом платим за звонок другу,за звонок в пиццерию и за пиццу
2 комментария удалено
0
4
10 лет назад
0
Понятно.
Хотя, вру. Но постараюсь сделать так, чтобы было понятно (:
Большое спасибо Tobi123 и nvc123 за объяснения!
0
28
10 лет назад
0
в джасс есть функции которых нету в гуи или которые работают быстрее своих аналогов из гуи
0
24
10 лет назад
Отредактирован prog
0
Фишка в том, что ГУИ всеравно конвертируется в jass-код и конвертация триггера в редакторе просто делает видимым реальную структуру триггера. Другое дело, что качество кода, в который конвертируется ГУИ, оставляет желать лучшего.
0
4
10 лет назад
0
Чтобы не плодить темы, апнул шапку.
Этот комментарий удален
2
26
10 лет назад
2
удалять и обнулять текстаг не нужно, у него есть lifespan
SCV и RB давно устаревшие вещи, на жассе рекомендуется делать все, ибо гуи не оптимизирован и делает кучу лишних телодвижений, к тому же бывает (часто) оставляет утечки памяти, вейт использовать вообще не рекомендуется из-за многих его особенностей, все делается на таймерах обычно, хотя не критичные задержки можно делать через них , но опять же Wait - бж очередная функция с лишним телодвижением
0
4
10 лет назад
0
все делается на таймерах
Как именно? В данном случае, нужно, чтобы текст был виден 3 секунды, а после пропадал.
0
26
10 лет назад
0
ну так сделай тексттагу лафспан 3 секунды
Этот комментарий удален
0
28
10 лет назад
0
Обнулять текстаг надо
Удалять нет
на джасс писать намного быстрее и удобнее чем на гуи
пока ты будешь выбирать на гуи действия я напишу код и посплю
кроме того в джасс есть возможность создавать свои функции
а в вджасс есть возможность создавать структуры(свои типы переменных)
0
4
10 лет назад
0
на джасс писать намного быстрее и удобнее чем на гуи
пока ты будешь выбирать на гуи действия я напишу код и посплю
Ты напишешь быстрее, даже если я тоже буду писать на джасс. При чём, это будет ещё дольше.
ПС: ответь на пункт 3, пожалуйста.
0
26
10 лет назад
0
удалять нужно все что имеет хендл, обнулять почти тоже самое
Чтобы оставить комментарий, пожалуйста, войдите на сайт.