vdvMax
\\_Max_//
offline
Опыт:
4,123Активность: |
Locust System
ОписаниеВот я решил создать систему что – то типа заклинание москиты (отсюда и название системы) Система позволяет перемещать, как захочешь. Так же можно делать с помощью системы разные прикольные спеллы ИмпортСкопировать нестандартный код, триггер CacheInit и переменную cache в свою карту. Другие триггеры и переменные копировать не обязательно. ЗапускЧтоб привести систему в действие нужно через Custom script\Личный сценарий написать вот это: call Locust(unit1, unit2, real1, real2, real3, real4, real5 , boolean) Примечаниеunit1 - Юнит которого надо двигать unit2 - Юнит вокруг которого надо двигать real1 - Скорость юнита( рекомендую от 10 до 30) real2 - Высота юнита real3 - Скорость подъёма юнита (ну по-другому не знаю как сказать) real4 - Максимальная высота real5 - Расстояние после которого юнит возвращается bool - Тут надо написать true\false true - юнит будет менять высоту false - не будет Кому не понятно смотрим примеры в карте НовоеИзменил периоды таймеров, чтоб уменьшить торможение(LocustSystem(Low).w3x) Переписал весь код - теперь таймер создаётся на кастере, а не на каждом моските К сожелению оставил кешь У меньшил утечки Просьба проверить на утечки - Всё ещё актуальна Отредактировано vdvMax, 05.11.2008 в 08:02. |
04.11.2008, 11:32 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
RazArt
offline
Опыт:
11,197Активность: |
Красиво) |
04.11.2008, 12:11 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
zer0ne
offline
Опыт:
11,119Активность: |
после esc начало немного притормаживать, но это норм, но когда я набрал в чате 5, вообще смотреть стало невозможно, я еле выключил вар |
04.11.2008, 12:45 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MegaPhoenix
offline
Опыт:
2,932Активность: |
vdvMax
Очень хорошая наработка! Сейчас разберусь и пойду лепить триггерные москиты +1 |
04.11.2008, 12:57 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
CDJ
Unity 3D engine user
offline
Опыт:
5,954Активность: |
vdvMax,не плохо ресурсов ест не плохо...интересно,что будет если несколько героев ето применят...крит?
|
04.11.2008, 13:07 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,762Активность: |
каждый запуск кушает 3 метра оперативки, совершенно очевидно, утечки есть... запуск по цифрам жутко лагает даже на моем коре дуо... запуск через esc не лагает так сильно. Достаточно хорошо удалось смоделлировать поведение москитов, правда, в оригинале, при атаке они всей толпой налетают на цель, а тут они как-то лениво атакуют пролетая мимо. |
04.11.2008, 13:24 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
vdvMax
\\_Max_//
offline
Опыт:
4,123Активность: |
NETRAT ну я так и задумывал чтоб они не налитали на врагов =)
можеш написать где утечки, кроме обнуление локалок Цитата:
система написанна на джазе - по этому можно давать несколько игрокам для тех у кого тормозит увеличил период таймеров |
|
04.11.2008, 13:33 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ShadoW DaemoN
offline
Опыт:
37,078Активность: |
Покритикую немного...
Неплохая задумка, но ужасное исполнение. 1. Не рекомендую юзать кеш, в циклических действиях он медленней, чем массивы. 2. Точки (location) - очень медленные, следует отказаться в пользу координат. 3. Зачем создавать таймер для каждого москита, если оптимальней будет создавать таймер для кастера? 4. Насчет двух идентичных функций (одна с изменением высоты, другая - без) - это еще спорно. Имхо, я бы сделал одну функцию и проверку параметра в ней. 5. О bj (CosBJ, DistanceBetweenPoints) я молчу. 6. Вот такое встречается: Код:
7. Как только устранишь все вышеописанные проблемы - можешь со спокойной душой ставить период 0.025 (наиболее оптимальный период для движения снарядов) Советую залезть в Jass-библиотеку и почитать теоретическую информацию (особенно про оптимизацию кода) |
04.11.2008, 13:38 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
vdvMax
\\_Max_//
offline
Опыт:
4,123Активность: |
Цитата:
почему я сразу не додумался? Цитата:
мне лень было логическую переменную в кеш пихать Цитата:
а это вообще чё? =) Цитата:
не люблю я массивы, потому что, там лимит есть Цитата:
а как по другому двигать? |
|||||
04.11.2008, 13:46 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ShadoW DaemoN
offline
Опыт:
37,078Активность: |
1. Не знаю.
2. Лень маст дай. 3. Грубо говоря, функции-посредники, вызывают другие функции. Использование таких функций тормозит процесс. 4. Очень маловероятно, что у кого-либо по карте будет летать больше 8190 москитов. 5. Двигаешь ты правильно, нужно изменить метод получения координат: Код:
6. Замечу, что если значение локальной переменной используется менее трех раз, следует инлайнить ее (подставить значение вместо названия функции). Что-то вроде такого: Код:
Автор, читай теор. инфу, она для того и лежит, чтобы неопытные джассеры учились и набирались уму-разуму) |
04.11.2008, 14:05 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Korneliy
DMF
offline
Опыт:
23,593Активность: |
было же такое на конкурсе старом геройском. |
04.11.2008, 14:09 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
vdvMax
\\_Max_//
offline
Опыт:
4,123Активность: |
Вышла новая версии см. Первый пост
Переписал весь код - теперь таймер создаётся на кастере, а не на каждом моските К сожелению оставил кешь У меньшил утечки Просьба проверить на утечки - Всё ещё актуальна Korneliy да я помню, герой вроде еретик назывался. Hадо пойти посмотреть тамошний код(там тоже вроде кеш используется) vdvMax добавил: Выяснил что утечки есть при около штук 100 москитов начинает тормозить. Прошу подскажите где утечки! |
05.11.2008, 08:11 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ShadoW DaemoN
offline
Опыт:
37,078Активность: |
Утечек "почти" нету, зато медленные или просто лишние конструкции везде и всюду. Как исправить - читай статьи (ссылка выше). Если сейчас тебе скажут, где ненужные вещи в твоем коде, ты сразу же исправишь их, не особо вникая в суть отличий. Разве не приятно, когда выкладываешь чистенькую опрятную систему, довольны и кодеры, и простые игроки? Имхо, пора повышать кодерские навыки, чтобы делать тру вещи.
Цитата:
Ну, во-первых, там кеш не используется, только параллельные массивы, во-вторых, в коде Адольфа трудно разобраться. |
|
05.11.2008, 08:34 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
vdvMax
\\_Max_//
offline
Опыт:
4,123Активность: |
Цитата:
можешь хотябы намeкнуть? Мне кажется, ты имел ввиду, что я не правельно использую такие нативки как Atan2, SquareRoot и вопрос: Что быстрее set x1 = x1 + speed * Cos(a*bj_DEGTORAD) set y1 = y1 + speed * Sin(a*bj_DEGTORAD) или set x1 = x1 + speed * CosBJ(a) set y1 = y1 + speed * SinBJ(a) vdvMax добавил: Цитата:
я вообще-то про героя Сергея подумал http://xgm.guru/files.php?id=910 |
||
05.11.2008, 11:56 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,762Активность: |
первое конечно быстрее... |
05.11.2008, 11:59 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Van Damm
wait... what?
offline
Опыт:
22,268Активность: |
а еще лучше вместо bj_DEGTORAD юзать 0.017, но мне кажется ты не совсем там копаешь (карту не смотрел), хотя от бж избавляться надо =) |
05.11.2008, 12:35 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
vdvMax
\\_Max_//
offline
Опыт:
4,123Активность: |
мне кажеться надо использвать ForGroup
» или вариант Адольфа Код:
|
05.11.2008, 13:53 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
zer0ne
offline
Опыт:
11,119Активность: |
я всегда ползуюсь вариантом адольфа, он для меня понятней и удобнее, ну и он явно оптимизированный |
05.11.2008, 13:56 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ShadoW DaemoN
offline
Опыт:
37,078Активность: |
vdvMax,
1. У тебя каждый раз создается и удаляется группа, 2 (ненужных вызова функции) * 100 (снарядов) / 0.05 (период таймера) = 4000 вызовов функций в секунду. Естественно, перечисление с условием (aka GroupEnum) быстрее всего пикает юнитов. К тому же, не нужно создавать/удалять группу, что дает прирост к производительности. 2. Очевидно, что возврат значения переменной быстрее, чем функции (тем более bj). Для дальнейшего ускорения следует использовать переменные для хранения значений х, у, фейсинга, и в особенности числа снарядов, так как CountUnitsInGroup - жуткий тормоз. 3. Все-таки советую отказаться от кеша в пользу параллельных массивов, или хотя бы, на худой конец, от функций-оберток: Код:
|
05.11.2008, 15:01 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
vdvMax
\\_Max_//
offline
Опыт:
4,123Активность: |
Завтро начну делать на массивах. Пытался сделать с вариантом Адольфа, но не получилось (у меня вообще что-то ген пак глючит) буду делать с ForGroup |
05.11.2008, 19:04 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|