|
|
|
|
Несколько вопросов.
|
|
FkoFF | Дата: Среда, 30 Июня 2010, 10:09:58 | Сообщение # 26 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| rep-30011, я тебе это говорю как человек столкнувшийся с ОБЯЗАТЕЛЬНОЙ оптимизацией полярок в моей карте. Карта НЕВЫНОСИМО лагает уже через пол часа. Конечно если полярки юзаются в малом периоде и не в единичном экземпляре. Для того что бы карта начала лагать и критовать - хватит 6 000 000 точек (порядка 250 мб лишней нагрузки в оперативную память). А теперь посчитай. 0.03 период. Один триггер с такой поляркой делает 132 точки. Умнож на 15 триггеров. 1980 в секунду при 15-и рабочих полярок в малом периоде. А теперь раздели 6 000 000 на 1980 и получишь цифру в 3 303 секунды. и финальный шаг: разделить это все на 60 и получишь 50 минут игры. Это, хочу заметить, на достаточно сильной машине.. Слабой же машине хватит половины этого захламления что бы критануть из-за недостатка памяти или уйти в ребут. Это через 25 минут игры. И да, я таки не говорю про десяток другой утечных функций (тоже с юнит локами) которые тоже, так же - дырявят память. Хотя, если у тебя, конкретно, на карте бегает паладин и фигачит всех кнокбаком, и больше ничего абсолютно нет - тогда я пойму почему у тебя карта не лагает. Добавлено (30-06-2010, 10:09) --------------------------------------------- Ах да, еще веселее карта вешается если не удалять крипов после их смерти. Так, в частности на картах типа тд (где юниты бродят ордами) хватит числа в 2000 юнитов (мертвых) - что бы игра вылетела с критом.
|
|
|
|
3JIODEй | Дата: Среда, 30 Июня 2010, 10:19:50 | Сообщение # 27 |
6 уровень
Группа: Заблокированные
Сообщений: 198
Награды: 0
Репутация: 47
Блокировки:
| FkoFF, а вот я не понял Quote (FkoFF) Move UNIT1 insantly to point with polar offset: Position of UNIT1 offset by 150, toward angle between position of UNIT1 and position of UNIT2 degrees. вот тут UNIT1 и UNIT2 нужно выбранного юнита заносить в переменную?Добавлено (30-06-2010, 10:19) --------------------------------------------- Мне то нужно выбрать в радиусе 250 от кастера всех юнитов и смещать их, придётся значит занести в точку, позицию кастера, потом выбрать в радиусе 250 от него всех юнитов и занести их позицию в точку? и занести их самих же в переменную, потом двигать переменную в занесённые точки? но не будет ли проблем, если вокруг кастера окажется больше 1 юнита? в 1 переменную типа боевая еденица, разве может занестись больше 1 юнита?.
Грац меня с шестым взломом администрации
|
|
|
|
FkoFF | Дата: Среда, 30 Июня 2010, 10:26:13 | Сообщение # 28 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| Quote (3JIODEй) Мне то нужно выбрать в радиусе 250 от кастера всех юнитов и смещать их, придётся значит занести в точку, позицию кастера, потом выбрать в радиусе 250 от него всех юнитов и занести их позицию в точку? и занести их самих же в переменную, потом двигать переменную в занесённые точки? но не будет ли проблем, если вокруг кастера окажется больше 1 юнита? в 1 переменную типа боевая еденица, разве может занестись больше 1 юнита?. В момент произнесения заклинания все юниты берутся в группу, к примеру udg_group[1], точка нахождения кастера заносится в udg_point[1] во втором триггере (у которого событие: каждые 0.03 секунды) сразу идет действие: pick every unit in udg_group[1] and do actions: set udg_point[2] = position of picked unit set udg_real[1] = angle between udg_point[1] and udg_point[2] set udg_point[3] = point with polar offset, udg_point[2] offset by нужное расстояние toward udg_real[1] degrees move picked unit insantly to udg_point[3] call RemoveLocation(udg_point[2]) call RemoveLocation(udg_point[3]) В триггера должен быть ифзен, отсчитывающий время (вейты - не дело, я уже говорил об этом) так вот в этом ифзене должна быть строка: pick every unit in udg_group[1] and do actions: remove picked unit from udg_group[1] В противном случае все, кто однажды побывал под заклинанием - будут двигаться при каждом его произнесении.
|
|
|
|
3JIODEй | Дата: Среда, 30 Июня 2010, 10:47:07 | Сообщение # 29 |
6 уровень
Группа: Заблокированные
Сообщений: 198
Награды: 0
Репутация: 47
Блокировки:
| http://funkyimg.com/viewer.php?img=/2/796/998/30_06.png вот посмотрите=( кажется ошибка конвертации кода((Добавлено (30-06-2010, 10:47) --------------------------------------------- оу, блин, я тупо всё перекопировал щас исправлю перезалью
Грац меня с шестым взломом администрации
|
|
|
|
vov68 | Дата: Среда, 30 Июня 2010, 10:49:03 | Сообщение # 30 |
10 уровень
Группа: Проверенные
Сообщений: 1329
Награды: 3
Блокировки:
| Quote (FkoFF) Ах да, еще веселее карта вешается если не удалять крипов после их смерти. Так, в частности на картах типа тд (где юниты бродят ордами) хватит числа в 2000 юнитов (мертвых) - что бы игра вылетела с критом. здесь вопрос не в мёртвых, они потом зачищаются автоматом, а в живых - при числе юнитов больше 250 - 300 у одной из сторон, они (эти300) просто впадают вспячку с очень вялым движением, даже если есть зачистка по точкам. память засоряет всё то, что определяется реальным числом - точка (позиция юнита, точка приложения спела, точка прикрепления текста)
Зачем делать для других новые карты... ... лучше устроить коту божественный почесон. :)
|
|
|
|
3JIODEй | Дата: Среда, 30 Июня 2010, 11:28:40 | Сообщение # 31 |
6 уровень
Группа: Заблокированные
Сообщений: 198
Награды: 0
Репутация: 47
Блокировки:
| FkoFF, http://funkyimg.com/viewer.php?img=/2/557/826/30_06s.png посмотри, триггер, у меня раньше(до оптимизации) они смещались от юнита, а теперь все толпой в одну сторону смещаются, волной, раньше они прям от юнита во все стороны отодвигались)Добавлено (30-06-2010, 11:16) --------------------------------------------- ошибки конвертации нет Добавлено (30-06-2010, 11:17) --------------------------------------------- Ах, да, я строчки, удаляющие точки, записал в другой триггер, в нём же и отключение триггера. Добавлено (30-06-2010, 11:22) --------------------------------------------- Всё!!!! я просто сразу после первого же цикла, удалял эти точки, нужно было в конце, я переделал, и всё встало на свои места, только вот правильно ли я сделал на скрине? З.Ы. последние 3 строчки вычеркните Добавлено (30-06-2010, 11:28) --------------------------------------------- 9).А вот "(позиция UNIT)" при вызове этого, в любом случае будет перегрузка?, или только если двигать туда юнита?
Грац меня с шестым взломом администрации
|
|
|
|
vov68 | Дата: Среда, 30 Июня 2010, 11:45:42 | Сообщение # 32 |
10 уровень
Группа: Проверенные
Сообщений: 1329
Награды: 3
Блокировки:
| Quote (3JIODEй) А вот "(позиция UNIT)" при вызове этого, в любом случае будет перегрузка?, или только если двигать туда юнита? если ты используешь её в триггере, то будет. даже если ты спец эффект сделал в точке позиция юнита... любая используемая точка даёт лаг: центр области, любая точка в области и так далее (там много способов задания точки)
Зачем делать для других новые карты... ... лучше устроить коту божественный почесон. :)
|
|
|
|
3JIODEй | Дата: Среда, 30 Июня 2010, 11:48:18 | Сообщение # 33 |
6 уровень
Группа: Заблокированные
Сообщений: 198
Награды: 0
Репутация: 47
Блокировки:
| А реальные тож дают утечки?
Грац меня с шестым взломом администрации
|
|
|
|
FkoFF | Дата: Среда, 30 Июня 2010, 12:05:35 | Сообщение # 34 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| Quote (vov68) они потом зачищаются автоматом не правда. Quote (3JIODEй) А реальные тож дают утечки? нет Quote (vov68) точка приложения спела ложь и провокация, target point of ability being cast = не утечная точка. Quote (vov68) точка прикрепления текста смотря к чему крепится текст. 3JIODEй, все ты, друг мой, делаешь через пятую точку. Объясняю как юзать группы - что бы не было тормозов - а то при неправильном (в твоем случае именно таком) использовании pick every unit - лаги гарантированны. Так вот, в группу добавляешь следующим образом: pick every unit in range *600 at udg_point[1] MATCHING conditions: через AND записываешь хоть 200 условий, в данном случае условия следующие: real comparison: здоровье of matching unit > 0 || Boolean Comparison: matching unit belongs an ally to triggering unit != (не равно) да || Boolean Comparison: Matching unit is здание != да || Таким образом будут выбираться только эти юниты, без всяких ифзенов. В противном случае ты повесишь карту через 30-40 запросов к "pick every unit in playable map area" что бы определить, к примеру, кто ж из них герой. Это первое что бросилось в глаза. зачем в самом начале цикла перебора юнитов стоит set udg_Rev3_unit = picked unit? убрать нафиг. просто set udg_point[2] = position of picked unit Ошибка стоит в set real должна быть следующей set udg_real = ANGLE BETWEEN POINTS (Угол между точками): udg_point[1] and udg_point[2] функцию Боевая единица - cause facing angle (заставить повернуться к udg_point[1]) можно убрать, так как в следующей функции ты опять же, указываешь это направление.
Сообщение отредактировал FkoFF - Среда, 30 Июня 2010, 12:07:14 |
|
|
|
vov68 | Дата: Среда, 30 Июня 2010, 12:43:01 | Сообщение # 35 |
10 уровень
Группа: Проверенные
Сообщений: 1329
Награды: 3
Блокировки:
| не знаю, что там говорит наука про мёртвых юнитов, только у меня на карточке воевало более часа 100 на 100( это суммарно на линиях) и ничего, а вот когда случился перекос 50 на 250, то 250 встали. хотя 50 бегали очень живо и мёрли замечательно, плодя очередные труппы. учти с 50 ничего не произошло! скажем так: зачистка по мёртвым юнитам есть, только иногда её скорости недостаточно для вычищения выделенной памяти чтобы работала нормальна мультипликация.
Зачем делать для других новые карты... ... лучше устроить коту божественный почесон. :)
|
|
|
|
3JIODEй | Дата: Среда, 30 Июня 2010, 18:02:55 | Сообщение # 36 |
6 уровень
Группа: Заблокированные
Сообщений: 198
Награды: 0
Репутация: 47
Блокировки:
| FkoFF, я всё понял(ну, почти), смотри: http://funkyimg.com/viewer.php?img=/2/728/946/30_06.pngДобавлено (30-06-2010, 16:10) --------------------------------------------- 10).Вот в конце запуска карты, обычно она начинает грузиться очень долго, почему? Добавлено (30-06-2010, 18:02) --------------------------------------------- 11).Вот я скачал JNGP драгона, в редакторе объектов у каждого значения, характеристик, данных и т. д. появились какие то строчки, что это такое? я думал переменные, ведущие к значению скилла, но это не так))) подскажите)))
Грац меня с шестым взломом администрации
|
|
|
|
FkoFF | Дата: Среда, 30 Июня 2010, 20:14:31 | Сообщение # 37 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| 3JIODEй, ничего ты не понял.... В группу юнитов добавляешь следующей функцией: В ПЕРВОМ ТРИГГЕРЕ: pick every unit in range сколько нужно at udg_point[1]MATCHING CONDITIONS через AND (ТАК ЖЕ) добавляешь условия.. собственно те которые я тебе перечислил. И никаких ифзенов в триггере на движение не должно быть, ты заставляешь процессор делать 3 ненужных действия при переборе юнитов. Rev3_real = поворот выбранный юнит + 180. это бред, почему? потому что опять же - делаешь лишние телодвижения Тебе надо что бы юниты разлетались от кастера - функция: это глюки движка. Я тебе говорю про мертвых юнитов. На стандарте варкрафт их не удаляет из игры и со временем - память очень жестко засоряется. Как только поставил системку на удаление трупов - дышать в карте стало в десять раз легче.
|
|
|
|
3JIODEй | Дата: Среда, 30 Июня 2010, 20:28:15 | Сообщение # 38 |
6 уровень
Группа: Заблокированные
Сообщений: 198
Награды: 0
Репутация: 47
Блокировки:
| FkoFF, эээ matching юнит как переводится? Добавлено (30-06-2010, 20:28) --------------------------------------------- Случайно не совподающий юнит?
Грац меня с шестым взломом администрации
|
|
|
|
FkoFF | Дата: Среда, 30 Июня 2010, 20:29:02 | Сообщение # 39 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| 3JIODEй, условный юнит, или что то в этом духе. Там сверху, рядом с "последний созданный юнит" и "выбранный юнит"
|
|
|
|
3JIODEй | Дата: Среда, 30 Июня 2010, 20:40:38 | Сообщение # 40 |
6 уровень
Группа: Заблокированные
Сообщений: 198
Награды: 0
Репутация: 47
Блокировки:
| Всё, получилось matching = совпадающий. Смотри)): http://funkyimg.com/viewer.php?img=/2/563/415/30_062.png http://funkyimg.com/viewer.php?img=/2/493/892/30_06.png Только сильно не ругайся)))
Грац меня с шестым взломом администрации
|
|
|
|
FkoFF | Дата: Среда, 30 Июня 2010, 21:05:30 | Сообщение # 41 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| 3JIODEй, скрин первый: cоздать дамми на позиции переключающий юнит. Создавай его на udg_To4ka_Skill[1] Далее: последний кусок триггера (после включения триггера рев2) - не самое лучшее решение. Предлогаю такой вариант: В триггер на движение добавь следующий пункт: В самое начало, первой строкой: Set udg_real[2] = udg_real[2]+5 в этом месте идет перебор юнитов и их движение; После него - следующий ифзен: if\then\else: udg_real[2] >= предельное расстояние отталкивания, например 450. then: turn off this trigger call RemoveLocation(udg_To4ka_Skill[1]) call RemoveLocation(udg_To4ka_Skill[2]) call RemoveLocation(udg_To4ka_Skill[3]) pick every unit in udg_group[1] and do action: remove picked unit from udg_group[1] После этих действий - удаляешь из первого триггера все, что идет после turn rev2 ON Теперь немного визуальной оптимизации: В тот кусок триггера, который осуществляет движение юнитов: pick every destructible within 150 at udg_point[3] and do actions: kill picked destructible Что бы деревья возрождались после смерти, создай отдельный триггер: Destructible in playable map area dies actions: wait 50 seconds revive dying destructible показать birth animation Ну и на последок, в начало первого триггера добавь следующие строки. pick every unit in udg_group[1] and do action: remove picked unit from udg_group[1] set udg_real[2] = 0 call RemoveLocation(udg_To4ka_Skill[1])
Сообщение отредактировал FkoFF - Среда, 30 Июня 2010, 21:09:53 |
|
|
|
3JIODEй | Дата: Среда, 30 Июня 2010, 21:41:47 | Сообщение # 42 |
6 уровень
Группа: Заблокированные
Сообщений: 198
Награды: 0
Репутация: 47
Блокировки:
| Окей, щас исправляю, а вот что значат X,Y и как их можно применить? А то я читал в статье, что лучше использовать именно их чем точки. Еще Width и Hight? И еще (0.00, 0.00, 0.00, 0.00).
Грац меня с шестым взломом администрации
|
|
|
|
FkoFF | Дата: Среда, 30 Июня 2010, 21:44:54 | Сообщение # 43 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| 3JIODEй, если будешь делать с резервированием всех точек - разницы не будет никакой. X\Y это джасс, в котором еще надо разобраться.
|
|
|
|
3JIODEй | Дата: Среда, 30 Июня 2010, 21:45:55 | Сообщение # 44 |
6 уровень
Группа: Заблокированные
Сообщений: 198
Награды: 0
Репутация: 47
Блокировки:
| Quote (FkoFF) Destructible in playable map area dies actions: wait 50 seconds revive dying destructible показать birth animation Хм, а разве здесь не нужно использовать положение декорации и тип декорации в локальных переменных?
Грац меня с шестым взломом администрации
|
|
|
|
FkoFF | Дата: Среда, 30 Июня 2010, 21:47:23 | Сообщение # 45 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| 3JIODEй, нет, будет восстанавливать умирающую декорацию на её точке, с теми же параметрами с которыми она была до уничтожения )
|
|
|
|
3JIODEй | Дата: Среда, 30 Июня 2010, 21:58:40 | Сообщение # 46 |
6 уровень
Группа: Заблокированные
Сообщений: 198
Награды: 0
Репутация: 47
Блокировки:
| Quote (FkoFF) показать birth animation Оо а деревья то выростают))) Ну вот короче мои триггеры: http://funkyimg.com/viewer.php?img=/2/741/456/30_06.png http://funkyimg.com/viewer.php?img=/2/202/576/30_062.png Ну сейчас то надеюсь всё правильно?) систему воскрешения и уничтожения деревьев я сделал, ток унижтожение в другом скилле, по идее рёв не должен сметать деревья)Добавлено (30-06-2010, 21:58) --------------------------------------------- ой блин, накосячил, там в 1 тригге надо 1 выключатель убрать)
Грац меня с шестым взломом администрации
|
|
|
|
FkoFF | Дата: Среда, 30 Июня 2010, 22:01:00 | Сообщение # 47 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| Quote (3JIODEй) рёв не должен сметать деревья) деревья сметают разлетающиеся в сторону юниты ) Это, помимо всего, еще и залог того что в деревьях они не застрянут ) По второму скрину, не знаю, то ли ты не заскринил этот кусок, то ли, зачем то, его удалил. В конце цикла ОБЯЗАТЕЛЬНО должны быть строчки на удаление двух точек (udg_point[2] и udg_point[3]) Добавлено (30-06-2010, 22:01) --------------------------------------------- А так, да, уже лучше ) Ах, да, в первый триггер таки добавь удаление юнитов из группы (перед добавлением новых) и установку значения 0 для переменной udg_Real_Skill[6]
|
|
|
|
3JIODEй | Дата: Среда, 30 Июня 2010, 22:05:13 | Сообщение # 48 |
6 уровень
Группа: Заблокированные
Сообщений: 198
Награды: 0
Репутация: 47
Блокировки:
| Quote (FkoFF) то ли ты не заскринил этот кусок Я заскринил тот кусок) ток действия удаления у меня в первом триггереДобавлено (30-06-2010, 22:05) --------------------------------------------- FkoFF, школу открывай . Спасибо, хороший чувак) Кстати, я так же попутно делал остальные тригги и вот эта проблема почти исчерпалась: Quote (3JIODEй) 10).Вот в конце запуска карты, обычно она начинает грузиться очень долго, почему?
Грац меня с шестым взломом администрации
|
|
|
|
FkoFF | Дата: Среда, 30 Июня 2010, 22:17:09 | Сообщение # 49 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| Quote (3JIODEй) ток действия удаления у меня в первом триггере действия удаления должны быть во всех триггерах связанных с этими точками. первый раз: в начале триггера - подтираем те точки, которые, возможно, остались при прошлом использовании. Так же страхует при повторном касте от утечек. Там же в ноль выставляются все переменные, используемые в триггере. Второй раз: в конце цикла, они должны стоять обязательно, потому как в цикле они создаются, и если их не удалять - они останутся висеть в памяти. Ведь каждое использование цилка - перезаписывает существующие переменные (которые внутри него выставляются).
|
|
|
|
3JIODEй | Дата: Четверг, 01 Июля 2010, 10:44:06 | Сообщение # 50 |
6 уровень
Группа: Заблокированные
Сообщений: 198
Награды: 0
Репутация: 47
Блокировки:
| FkoFF, А вот если устанавливать переменную, точку на карте путём: установить переменную to4ka = позиция(переключающий юнит) То сам редактор создаст ли ещё 1 точку "позиция(переключающий юнит)"? Или он сразу занесёт в переменную точку, без создания "позиция(переключающий юнит)"?
Грац меня с шестым взломом администрации
|
|
|
|
|
|
|
|
|
|
|