У меня карта с множеством волн, проблема складывается из за утечки, которая появляется во время их долгого спавна где то на 50 мин игры. Уже и пробовал вынести локации отдельно в глобальне для уменьшения утечек, но все же текут именно Handle созданных юнитов, хотя при их смерти юниты удаляются. Карта делается на Jass. Ставил счетчик и при волнах, было множество утечек Handle. С этими волнами юнитов, возможно хоть как то бороться, знаю если скопировать юнита в редакторе, он будет иметь одинаков handle, такое нельзя как то использовать в карте, что бы для юнитов не создавались новые, переменная у меня одна, для юнитов(глобальная), что бы избежать частого создания, просто обнуляється в конце всех действий.
Или все таки придется усиливать монстров и делать их количество к минимуму, сейчас их не особо много бегает., но теперь начинаю думать и это уменьшить.

Ну еще и 100500 юнитов могут начать лагать, 60+ на игрока которые куда то бегут уже не хорошо.
Так же советую сделать всех юнитов суммонами, чтобы они не разлагались
call UnitApplayTimedLife( unit, 'BFig', 0.00 ) это существенно снизит нагрузку на движок
P.S в ваших юнитах совсем не разобрался, какой то кавардак - нету четкого разделения на юнитов для волн, боссы, суммоны героев, герои игроков....
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
15
darkowlom, будет забавно, если он на твоем ответе закроет вопрос
5
"если скопировать юнита в редакторе, он будет иметь одинаков handle"
Серьезно?
6
Каждый “unit” является “handle”, но не каждый “handle” является “unit”. Другими словами не факт, что утечки из-за юнитов. Да и ты уверен, что утечки вообще создаются с увеличением handle?
32
Карту в студию, желательно с комментариями. то тут уже был один юнный IceFrog у которого в карте черт ногу сломит.
6
l_Avenger_l:
"если скопировать юнита в редакторе, он будет иметь одинаков handle"
Серьезно?
Не хочу расстраивать, но именно из за такого бага я долго не мог понять, почему мой код не работает, пока не перевел id юнита в текст и не вывел себе сообщением и был удивлен что у двоих юнитов он одинаков.
15
если скопировать юнита в редакторе, он будет иметь одинаков handle, такое нельзя как то использовать в карте, что бы для юнитов не создавались новые, переменная у меня одна, для юнитов(глобальная), что бы избежать частого создания, просто обнуляється в конце всех действий
Кто-нибудь вообще понял, что это означает?
Автор, разберись хотя бы в терминологии, что есть handle и что есть raw-код юнита. Ну полную ахинею же несешь.
6
quq_CCCP:
Карту в студию, желательно с комментариями. то тут уже был один юнный IceFrog у которого в карте черт ногу сломит.
С комментариями к сожалению не помогу, слишком много кода, весь описывать долго будет.
GetLocalPlayer:
если скопировать юнита в редакторе, он будет иметь одинаков handle, такое нельзя как то использовать в карте, что бы для юнитов не создавались новые, переменная у меня одна, для юнитов(глобальная), что бы избежать частого создания, просто обнуляється в конце всех действий
Кто-нибудь вообще понял, что это означает?
Автор, разберись хотя бы в терминологии, что есть handle и что есть raw-код юнита. Ну полную ахинею же несешь.
id скопированного юнита идентичен, своему оригиналу, попробуй сделать проверку и какое то действия и убедишься, именно того кто скопирован с того кто стоит на карте.
32
FlyTab:
l_Avenger_l:
"если скопировать юнита в редакторе, он будет иметь одинаков handle"
Серьезно?
Не хочу расстраивать, но именно из за такого бага я долго не мог понять, почему мой код не работает, пока не перевел id юнита в текст и не вывел себе сообщением и был удивлен что у двоих юнитов он одинаков.
Хендл - номер структуры в памяти, хендлы находятся в оперативной памяти, а raw-код ( type id как в гуях на инглише) это всего лишь номер строчки в слк таблице, которая сохранена на диске - своего рода база данных откуда движок игры берет начальные данные для создания объекта в оперативной памяти ну и только потом назначает ему уникальный хендл (ну почти всегда, близзарды еще не полечили все баги рекурсии хендлов)
6
quq_CCCP:
FlyTab:
l_Avenger_l:
"если скопировать юнита в редакторе, он будет иметь одинаков handle"
Серьезно?
Не хочу расстраивать, но именно из за такого бага я долго не мог понять, почему мой код не работает, пока не перевел id юнита в текст и не вывел себе сообщением и был удивлен что у двоих юнитов он одинаков.
Хендл - номер структуры в памяти, хендлы находятся в оперативной памяти, а raw-код ( type id как в гуях на инглише) это всего лишь номер строчки в слк таблице, которая сохранена на диске - своего рода база данных откуда движок игры берет начальные данные для создания объекта в оперативной памяти ну и только потом назначает ему уникальный хендл (ну почти всегда, близзарды еще не полечили все баги рекурсии хендлов)
Я не дурак и знаю что это такое, id юнита находиться командой GetHandleId(Юнит), именно он одинаков.
/////////////////////////////
Вот карта, там уже включен счетчик Handle и отключена моя доска для достижений.
Если отключить спавн юнитов, тут же роста нету. Про небольшие утечки от Волны Силы Вождя я знаю.
Загруженные файлы
32
Ну как и думал, туча гуи триггеров и все те же ошибки - location мы не удаляем (а лучше и вовсе не юзать, ну кроме редких случаев )
Загруженные файлы
6
quq_CCCP:
Ну как и думал, туча гуи триггеров и все те же ошибки - location мы не удаляем (а лучше и вовсе не юзать, ну кроме редких случаев )
Какие еще те же ошибки я локации не удаляю, потому что буду после 1000 раз или более их создавать, а куски остаються в памяти, эх надеялся нормальный ответ услышать, а снова это, внимательней изучите и поймете, где локации и почему я не удаляю для юнитов их.
Там где нужно я их удаляю и это можно найти.
    set NeedLoc[0] = Location(GetRectCenterX(gg_rct_LL_032), GetRectCenterY(gg_rct_LL_032))
    set NeedLoc[1] = Location(GetRectCenterX(gg_rct_Region_LL2), GetRectCenterY(gg_rct_Region_LL2))
    set NeedLoc[2] = Location(GetRectCenterX(gg_rct_Far_Left_Left), GetRectCenterY(gg_rct_Far_Left_Left))
    set NeedLoc[3] = Location(GetRectCenterX(gg_rct_Region_L1), GetRectCenterY(gg_rct_Region_L1))
    set NeedLoc[4] = Location(GetRectCenterX(gg_rct_Far_Mid_Left), GetRectCenterY(gg_rct_Far_Mid_Left))
    set NeedLoc[5] = Location(GetRectCenterX(gg_rct_Region_C1), GetRectCenterY(gg_rct_Region_C1))
    set NeedLoc[6] = Location(GetRectCenterX(gg_rct_Far_Center), GetRectCenterY(gg_rct_Far_Center))
    set NeedLoc[7] = Location(GetRectCenterX(gg_rct_DarknessEnd), GetRectCenterY(gg_rct_DarknessEnd))
    set NeedLoc[8] = Location(GetRectCenterX(gg_rct_Region_R1), GetRectCenterY(gg_rct_Region_R1))
    set NeedLoc[9] = Location(GetRectCenterX(gg_rct_Far_Mid_Right), GetRectCenterY(gg_rct_Far_Mid_Right))
    set NeedLoc[10] = Location(GetRectCenterX(gg_rct_Region_RR2), GetRectCenterY(gg_rct_Region_RR2))
    set NeedLoc[11] = Location(GetRectCenterX(gg_rct_Far_Right_Right), GetRectCenterY(gg_rct_Far_Right_Right))
    set Attackloc = Location(GetRectCenterX(gg_rct_Base), GetRectCenterY(gg_rct_Base))
Эти локации служат для постоянных точек спавна (постоянных, зачем мне их каждый раз по новому объявлять).
Этим изменениям кода, я убавил утечки в два раза где то.
Все ясно, здесь я от вас жду реального ответа, а получаю лишь предрассудки, не прочитав кода, вы делаете вывод.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.