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