![]()
Obelick
![]() ![]() offline
Опыт:
26,071Активность: |
Не могу найти утечку
Кричу о помощи, моя карта начинает фаталить после 7 часов игры.
Я сделал небольшой эксперимент путем отключения триггеров и выявил, что причина где-то в системе крипов. Если отключаем систему мобов (скрины ниже), то за час размер сохранения увеличивается всего на 1200 кб и это вполне нормально, ведь для того, чтобы вар кританул нужно наиграть овер 75 часов, поэтому эта мелкая утечка меня вообще не напрягает.
А вот если система включена и работает, то сохранение набирает уже по ~10000 кб в час и я просто не знаю, что с этим делать. Я напрочь не вижу утечек в этих триггерах. Может быть я слепой? |
![]() |
#1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Melissa
Я всегда хочу как лучше!
![]() ![]() offline
Опыт:
31,696Активность: |
Святая Рена, зачем прятать юнит перед удалением? Зачем удалять удалённый из игры юнит из группы? |
![]() |
#2
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Obelick
![]() ![]() offline
Опыт:
26,071Активность: |
Melissa, удаление юнита из группы - это уже экспериментирование после, не из за этого весь сыр-бор. |
![]() |
#3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Melissa
Я всегда хочу как лучше!
![]() ![]() offline
Опыт:
31,696Активность: |
Утечки найдены:
Мувинг крипс при задании создаёт лишнюю группу - юниты в области, после создания выирается 1 юнит и задается как мувингрупс, последнюю ты удаляешь, (ага даже не удаляешь а только очищаешь) а вот утечка "юниты в области" остаётся. bj wantdestroygroup можешь вообще не юзать, эта фигня не работает. Так что после очистки и зануления нужно написать call DestroyGroup(udg_Группа)
Melissa добавил: Итого, только из того, что вижно на скрине - у тебя утекает 90 групп в минуту, а это вообще-то много. |
![]() |
#4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Obelick
![]() ![]() offline
Опыт:
26,071Активность: |
Melissa, блин, а ведь серьезно. Я за столько лет так ни разу этого и не заметил, вот лол. Т.е. после каждого пика нужно обязательно удалять группу и создавать заново?
Obelick добавил: Щас короче проверю и отпишусь. Если действительно сработает, руки твои буду целовать |
![]() |
#5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Melissa
Я всегда хочу как лучше!
![]() ![]() offline
Опыт:
31,696Активность: |
Объясняю доходчиво:
группа 1 - юниты в области Область группа 2 - случайные Х юнитов из группы 1 выбрать всех в группе 2 действия очистка/обнуление группы 1 уничтожение группы 1 очистка/обнуление группы 2 уничтожение группы 2 Melissa добавил: На слабых компутерах утечка пик еври юнит вообще может заставить комп зависнуть если делать пару раз в секунду. |
![]() |
#6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Obelick
![]() ![]() offline
Опыт:
26,071Активность: |
Melissa, вот так должно это выглядеть? |
![]() |
#7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Melissa
Я всегда хочу как лучше!
![]() ![]() offline
Опыт:
31,696Активность: |
Дооо. Только bj wantdestroy убери. Во первых это плацебо, во вторых всякие ифы оно портачит по идее. Так или иначе но когда юзаешь destroygroup wantdestroy не нужен однозначно. |
![]() |
#8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Obelick
![]() ![]() offline
Опыт:
26,071Активность: |
Где-то мы допустили ошибку. Утечки все еще где-то есть, но стало их ровно в 2 раза меньше судя по весу сохранений за 15 минут игры. |
![]() |
#9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Melissa
Я всегда хочу как лучше!
![]() ![]() offline
Опыт:
31,696Активность: |
Остальные триггеры надо смотреть. И хотя даже если удалять утечку группы правильно - она немножко всё равно засоряет память, но не настолько чтобы лаги были. Проверь себя на наличие типичных допущений утески групп игроков типа Игра показать сообщение группа(игрок 1 красный) бла бла. Что там ещё...регионы проверь, не пикаешь ли ты где-нить юниты в регионе с размерами 500 500 вокруг точки ТОЧка. |
![]() |
#10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Borodach
![]() offline
Опыт:
5,950Активность: |
Строчкой в cs: call GroupEnumUnitsInRect("Група" - udg_MovingCreeps, "Область" - gg_rct_Beach_1, null) переменная БЕ = случайный юнит из групы если - условия то - действия |
![]() |
#11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Obelick
![]() ![]() offline
Опыт:
26,071Активность: |
Melissa, это именно проблема в этом триггере. Остальные подозрительные на утечки были отключены. |
![]() |
#12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Melissa
Я всегда хочу как лучше!
![]() ![]() offline
Опыт:
31,696Активность: |
Ну тогда хз, мб не обнуляется как следует.
Лучше будет только использовать группы как константы. Например имеется группа крипс 1 на всю игру. Юнит входит в регион РЕГИОН
тип юнита бла бал бла все проверки как в ифе у тебя добавить юнит в группу крипс а в этом триггере брать случайный юнит из этой группы. И кстати если он всего 1 берётся, то группу делать глупо, задаешь юнит = случайный юнит из группы и работаешь с переменной. Так ты не создаёшь ещё 1 группу при задании вообще. Таким образом создавать временные группы вообще не надо будет. Собственно, я так чаще всего спеллы и делаю... |
![]() |
#13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Obelick
![]() ![]() offline
Опыт:
26,071Активность: |
Melissa, короче завтра уже буду решать проблему дальше. Если ничего не изменится, то дам им просто нейтрально-бродячего и все, а то 6 часов на это сегодня убил |
![]() |
#14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Melissa
Я всегда хочу как лучше!
![]() ![]() offline
Опыт:
31,696Активность: |
Obelick, ну вообщем имей в виду. что использовать одни и те же переменные лучше чем плодить и дестроить. Это так же относится и к регионам и к точкам, их можно просто передвигать на координаты, а не задавать каждый раз новые объекты и потом уничтожать. |
![]() |
#15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
ScorpioT1000
Работаем
![]() ![]() offline
Опыт: отключен
|
поставьте jngp с cjass с галкой автообнуления всех переменных |
![]() |
#16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Vadik29
Choice Battle 1.6а
![]() ![]() offline
Опыт:
15,845Активность: |
Obelick, вообще создай одну глобальную группу и юзай ее. |
![]() |
#17
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Obelick
![]() ![]() offline
Опыт:
26,071Активность: |
ScorpioT1000, эта галка и так стоит у меня
Obelick добавил: все, я сдаюсь. Я забил на тот триггер и просто дал монстрам бродячего, но вот эти триггеры все равно остаются утечными, и я просто не знаю что делать. Когда они выключены, размер сохранения увеличивается всего на 800 кб за час, а когда они включены, то на 4000. Это вообще жесть, с которой я не знаю как уже бороться. |
![]() |
#18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
ScorpioT1000
Работаем
![]() ![]() offline
Опыт: отключен
|
не надо ремув юнит делать, надо килл и убрать время разложения у него
если надо визуальный эффект, то скрыть и килл
ScorpioT1000 добавил:
тоадкоп говорит, ещё ордеры утекают сами по себе, но это надо начисто проверять мне кажется, какие-то данные кешируются
попробуй ifdebug 2 или просто вывод GetHandleId у локаций и юнитов (отметив еще, где это именно вызвалось), они должны когда-либо перестать расти, если растут - в чем-то проблема
ifdebug2 надо задать путь до лога и он будет выводить тебе счетчик хендлов каждые пять секунд Отредактировано ScorpioT1000, 09.02.2015 в 21:19. |
![]() |
#19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Obelick
![]() ![]() offline
Опыт:
26,071Активность: |
ScorpioT1000, тут дело далеко не в ремуве. Юниты ремуваются, если игрок видит эту точку, а я стоял на одном месте все время тестирования.
Я попробую то, что ты скинул. Отпишусь с результатами потом. |
![]() |
#20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|