Damage taken и утечки
В одной моей тд обширная часть способностей использует событие "юнит получает урон".
Это событие я добавляю триггерно для каждого нового созданного крипа. При добавлении событий хэндлборд фиксирует утечки. Слышал, что событие удаляется при удалении юнита, но даже когда юнит умирает, и я удаляю его из игры, всё не возвращается на свои места, утечки продолжают сидеть в памяти, засоряя её. Есть какая-та альтернатива добавлению ивента? Мемхак, динамические триггеры (создавать триггеры по ходу игры умею, а вот как правильно и безутечно удалять - не знаю)?
P.s.: утечки сразу не заметны, но при игре в 12 игроков на 10-20 минуте становятся ощутимы.
Добавил карту, создание юнитов идёт в 3-ёх триггерах
В папке "Spells" триггер " skeletons "
В папке "Spells" триггер " spiders "
В папке "CreepsSpawnSistem" триггер "CreepTimerExpires" - ОСНОВНОЙ триггер на создание юнитов, остальные предыдущие почти не используются.
Смерть юнита фиксируется триггером " unit dies " в папке инициализации, в нём же юнит и удаляется.
Сам триггер на отлов получаемого урона находится в папке "Spells" и имеет имя " DamageTakenCheck ".
При проверке советую поставить компьютеров на другие 11 слотов.

Без ответа.


Просмотров: 302

pro100master #1 - 1 неделю назад 0
утечки это текстаг точка эффекты и прочие что создает... думай
quq_CCCP #2 - 1 неделю назад 0
Код покажите, уже если честно надоело гадать, ибо мест с утечками может быть 100500.
pro100master #3 - 1 неделю назад 0
quq_CCCP, ванга пришел не?
quq_CCCP #4 - 1 неделю назад 0
pro100master:
quq_CCCP, ванга пришел не?
Не, так и не пришел...
ene241 #6 - 1 неделю назад 0
quq_CCCP, добавил карту, изменил описание
quq_CCCP #7 - 1 неделю назад 0
ene241, мда, конверт с гуи, 100500 бж функций, сам код мне мало понятен, зачем?
Потом нет ни 1 фильтра, т.е в группу ты берешь и дохлых и живых, нет проверок что урон 0.,
"Ну а дело было не в бобине просто рукожоп сидел в кабине, сори конечно но проблема была не тут, а во всем коде разом""
Вот вам код вашей карты и список утечек, меньше юзайте бж функции, старайтесь отойти от гуи конструкций, ну а так же есть тула "JASS script Helper" и её аналоги, она ищет утечки, нерационально использованные переменные и функции. Пока вы не научились все делать сами юзайте софт, и обязательно все получится без утечек и проблем.
прикреплены файлы
ene241 #8 - 5 дней назад 0
quq_CCCP, первый кусок твоего файла - утечки от стандартный функций инициализации карты, это даже не моё. Вторая часть - "псевдоутечки", т.е. то, что я, блин, пофиксил заранее. Обнуляя переменные и уничтожая точки. Ты код вообще открывал или просто засунул его в машину и написал про рукожопа?
quq_CCCP #9 - 5 дней назад 0
ene241, открывал, посмотрел указанные тобой триггеры, я описал что там есть проблемы, таких вот явных утечек нету, то что есть я естественно проверил софтом ибо ковырять кажую функцию твоей карты как то не сильно хотелось, сам понимаешь. Введи фильтры = у тебя выбираются дохлые. и проверок на 0.00 урона нету (дебаффы наносят 0.00 ед урона при появлении или снятии, многие абилки при касте наносят цели 0.00 ед. урона)
Локейшены - зачем ты их юзаешь, я написал что уж сразу координатами, потом очень странное ветвление с екзекутами других триггеров? зачем? У тебя есть функции, вызывай по имени и все.
Сколько утечек за игру? Хендл коюнтер улетает в небеса?
ene241 #10 - 5 дней назад 0
quq_CCCP, дохлых юнитов не выбираю, т.к. дохлых юнитов нету. Все юниты при смерти ремуваются из игры триггером " unit dies ".
Проверку поставлю, мб чуть меньше лагать начнёт, за это спасибо. За 15 мин игры с людьми перестало работать почти всё - от задержки приказа (некоторые юниты останавливаются и не идут) до отказа зданий улучшаться (задержка в 2-3 минуты перед началом грейда). При игре с афк ботами на этих слотах за 15 мин.:
Хэндлборд сперва уменьшается, первые минуты 3 (2 волны).
Потом начинает расти и за 2-3 мин. возвращается в нормальное состояние.
За 15 первых мин. игры в сумме капает примерно 3к хэндлов, начинает подлагивать.
На 30-35 минуте игры начинает ломаться код: перестаёт удалять юнитов (и некоторые другие его функции) триггер " unit dies ", утечки наростают ещё быстрее, играть становится невозможно. Хотя до этой минуты в теории игра дойти не должна.
pro100master #11 - 5 дней назад 0
Чем не угодил мощный проверка утечки www.hiveworkshop.com/jasschecker
а предметы удаляете? например руны тоже надо удалять так как он после разрушение навсегда останет в игре пока не очистите вручную
quq_CCCP #12 - 5 дней назад 0
ene241, Не надо удалять юнитов -remove unit - могут быть баги, особенно если юниты с кем то связаны триггерами, всякими баффами или стандартными способностями, делай им таймер жизни на 0.0 сек. и ставь бафф вызванных волков примеру (будет при смерти спецэффект и не будет костей). Юниты или триггеры при удалениях пачками не удаляются сразу, т.е счетчик хендлов снижается через какое то время, пока вар не зачистит память и снова не начнет её занимать данными. 3к это не шибко много, у тебя много юнитов одновременно? 60+ юнитов на игрока которые бегут = они тупят, стоят, просадки фпс. Так же не советую делать башни с скоростью атаки пулемёта.
Кстати у тебя есть вейты и глобалки, в паре мест, ты введи дебаги - мб у тебя где то теряется перменная из за вейтов (вейт тормозит поток, в этот момент переменная может быть перезаписана) и если юнита нет\ты пикнул дохлого юнита некоторые функции могут оборвать поток - не выполнятся дальше.
ene241 #13 - 4 дня назад 0
quq_CCCP, remove unit убрал, кстати, почему-то адекватно работает только бафф "гальванизация", остальные просто не работают, хоть 0 ставь, хоть 0.01. Насчёт утечек - скорее всего утекают глобалки, т.к. даже прога с воркшопа от комментатора выше не показывает утечек. Буквально пару секунд назад поставил триггер-проверку, буду проверять кол-во глобалок в массивах. Напишу, как закончу, искренне благодарен за помощь)
quq_CCCP, что могу сказать, надо быть сторожнее с бэкапами)
  1. Пофиксил 1 баг, вызывающий лаги, который фиксил ранее на карте. Как это было: я работал на карте, потом она перестала открываться (сломалась). Я взял бэкап, но забыл в нём исправить этот момент. Вроде лагать стало меньше.
  2. Но при этом хэндлы всё равно росли. Я удалил действие по создание ивента "получает урон" для триггера "DamageTakenCheck" при спауне крипа, включил карту и ушёл мин. на 10-15, периодически проверяя хэндлборд. Без добавления ивента хэндлы не утекали, стабильно держались на 6700-6800. Собственно, я пришёл к началу моего поста. К утечкам от добавления событий. И моей неспособности их пофиксить
прикреплены файлы
quq_CCCP #14 - 4 дня назад 0
События висят в триггере и на обьектах, собственно на которые и повешаны события. Удаляй триггер после каждой волны и создавай снова и вешай события. Ни кому как раз ивенты то проблем не приносили, смотри ту же доту фрога...
Точно все проверил с дебагом?