Fromitt
offline
Опыт:
445Активность: |
Проблемы с утечками
Заклинание посылает зеленую соплю в заданную точку. При полете снаряд ищет цель, в которую кидает shadowstrike.
Способность на редкость сильно грузит карту. Уже после сотого каста фпс падают до 20. Даже мои гуи-поделки пятилетней давности, когда об оптимизации я ничего не знал, вызывали меньше лагов. » Library UnitLib Код:
» Library Poison Sting Код:
Основная проблема не в GroupEnumUnitsInRangeOfLoc или GroupPickRandomUnit. Если закоментить строчку call PSEnemyGroup (i), т.е. убрать совсем поиск целей, заставляя снаряд всегда лететь вхолостую, то лаги остаються на прежнем уровне. Отредактировано Fromitt, 19.04.2011 в 22:32. |
14.04.2011, 13:45 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J64_
offline
Опыт:
4,724Активность: |
Ты стопитсот раз создаешь и иногда НЕ убираешь(кондишион в группах). Для большей оптим. Юзай глоб группу/точку/фильтр. Точки то вообще то не нужно кроме з пространства, обойдешься двумя реалками. Форгроуп... Ты в фильтре действия(не надо бжишных гроуп операций, делай свои) делай уже, а не фильтр+форгроуп. Ведь у тя в таком случае буит 2 перебора. А тк вроде усе норм... И рекемендую те структуры, удобнее изучи в/ц джасс |
14.04.2011, 15:39 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Fromitt
offline
Опыт:
445Активность: |
Да. Насчет групп верно подмечено. Я понимаю, что это сразу бросается в глаза. Сейчас занят переделкой.
Но. Не в этом все дело. Можно удалить полностью функции PSEnemyFilter2, PSEnemyFilter, PSEnemyGroup и соответственно вызов call PSEnemyGroup, а утечки остаються в тех же размерах. Это заставляет искать ошибки в других функциях. |
14.04.2011, 16:07 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Elf_Stratigo
offline
Опыт:
4,699Активность: |
попробуй везде поменять местами строчки
вообще для движения достаточно одного таймера, но кто уж как напишет... |
14.04.2011, 16:46 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Fromitt
offline
Опыт:
445Активность: |
Перестановка строчек ничего не дала, но натолкнула на мысль проверить, останавливается ли таймер. Оказалось, что не всегда. Похоже идея запихнуть удаление таймера в Library UnitLib была изначально провальной.
Отредактировано Fromitt, 14.04.2011 в 17:35. |
14.04.2011, 17:24 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
JimALIEN
вдупляет sc2 editor
offline
Опыт:
7,176Активность: |
ты после каждого каста запускаеш таймер, который перебирает масив из уже запущеных соплей (которые тоже движуца по своему таймеру, который перебирает весь массив и т.д.) жуть. Либо двигай все по одному таймеру, либо на каждый каст создавай отдельный. Я советую 2е, удобно юзать с хеш таблицами |
15.04.2011, 13:02 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Fromitt
offline
Опыт:
445Активность: |
На самом деле таймер один. Да, он перебирает все снаряды, но включается только когда есть запущенные сопли. Проблема была в моей кривой реализации, из-за которой он почемуто не выключался, но я ее исправил.
Кстати вопрос: переменые integer, real, если верить статье Adolf'a, обнулять не нужно? |
15.04.2011, 13:26 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hanabishi
COOL STATUS
offline
Опыт: отключен
|
|
15.04.2011, 14:06 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|