Тестирую свою карту (которая еще, конечно, не закончена), и вот иногда, чтобы проверить на утечность и другие траблы времени, оставляю ее на произвол и ухожу по делам. Но дважды, что я оставлял на ночь. Она переставала работать нормально ровно через 6000 сек (по таймеру времени карты). Второй раз я лично сам это наблюдал. То есть вначале юниты начинали бегать на месте, через 10 сек они телепортировались, а еще через 2-3 минуты экран в игре зависал, и даже не откликается. В диспетчере задач игра работает и отвечает, ресурсы не жрет чрезмерно. Утечек за все 6000 сек нет, но что не так, я не понимаю. Триггеров и таймеров или чего-то другого именно на 6000 сек - нет.
Есть идеи в чем проблема?

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

Возможно какой-либо переодический таймер на +- 0.7 сек, заполняющий массивы.
Массив в 8192 закончился, и при подборе свободных ячеек каждый раз уходит в бесконечный луп, который выдаёт лаг в 3 сек и обрывается на оп лимите.
Единственная идея, ибо сам сталкивался с этим
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
16
5 лет назад
0
Если что-то тупо, но работает, это не тупо. Да, в доте далеко не лучший код, местами ужасный, но он работает, большего от него не надо. Там нет сложных тяжеленных систем и все свободные ресурсы идут на обработку говнокода, это норма. Вот если у тебя, кроме копипасты доты, еще и свои системы тяжелые идут, тогда да, есть смысл париться и выбивать каждую операцию. В остальных случаях - не стоит.
0
30
5 лет назад
0
DracoL1ch, ну тут в целом у автора проблема как раз в том, что с какого-то момента работать перестаёт, ятп. А так да, выше тоже самое написал по сути.
0
8
5 лет назад
0
NazarPunk:
В JASS нет двумерных массивов, просто препроцессоры zinc,vJass,cJass добавляют синтаксический сахар и используют одномерные.
Нужно почитать будет про то, как встраиваются zinc, vJass, cJass. Потом обязательно посмотрю это, спасибо за совет.
Я скорее вернулся в варик делать карту из ностальгических побуждений и из-за новости о выходе Refordged версии. А так когда-то помню начинал с него.

Уже на сайте не раз обсуждалось, если юнит удалён из карты, триггером или после смерти->разложения, то и событие удаляется.
Честно сказать, не знал. Это упрощает некоторые моменты. На сайте всего месяц от силы.

DracoL1ch:
Вот если у тебя, кроме копипасты доты
Не симпатизирует дота, так что не копирую ее, суть карты в другом. Но в целом мысль понял.

Clamp:
Все верно. Твой метод вполне имеет место быть. Спасибо за наработку.

После целого дня тестов, эмпирическим путем понял, что баг находится в ИИ компа (не в спауне, и не в движении юнитов по точкам)
Буду дальше тестить, позже отпишусь где он находится.
1
30
5 лет назад
1
Честно сказать, не знал.
Считай, что событие, связанное с юнитом, является его частью, это будет очень близко к истине.
0
29
5 лет назад
Отредактирован nazarpunk
0
"ForceLine*" есть 2 варианта развития, один это сделать поиск необходимого региона по которому он будет выбирать как реагировать на то или иное событие, либо сделать 6 триггеров, каждый из которых отдельно вызывается. Конечно, если бы я понимал, что у меня возможно будет какое-то изменение в будущем в плане количество спаунов, то лучше было бы сделать один триггер обрабатывающий все, тут согласен.
"Line*" однозначно нужно разделить на 3 части, поскольку нужно передавать массив, либо писать дикий костыль на определение массивов, что я не люблю делать. Если писать, то сразу основательно. Там логика может отличаться. Поэтому нужно сохранить 3 линии для удобства изменения условий для каждой линии.
Держите, убрал лишние триггеры, чтоб не мешались, и прикрутил нормальную наработку для путей. Притом без всяких динамических триггеров, костылей и на одномерных массивах.
Загруженные файлы
0
17
5 лет назад
0
Clamp, DestroyDialog() тоже отвязывает от диалога событие, недавно споткнулся об это и долго не мог понять в чём дело. Если при инициализации создать и объявить диалог переменной, на эту переменную завязать диалог, то при уничтожении диалога от него отвязывается событие. Даже если тутже заменить диалог новым.
Пришлось решать путём 3х массивов диалогов...
0
29
5 лет назад
Отредактирован nazarpunk
0
на эту переменную завязать диалог, то при уничтожении диалога от него отвязывается событие
По логике в переменной лежит только ссылка на диалог, и при уничтожении диалога логично уничтожаются его события, а в переменной остаётся null, у уоторого событий в принципе быть не может.
может и не null остаться, а ссылка намертво повиснуть в памяти
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.