SiT3D
offline
Опыт:
1,514Активность: |
Что же всё таки выгоднее.
В общем 2-3 простых вопроса.
|
25.08.2013, 03:38 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MpW
offline
Опыт:
50,219Активность: |
SiT3D,
1-3 четкого ответа не существует, смотря как ты строишь алгоритм. Надо смотреть на ситуации, так не не могу сказать. Можешь код в показать,. там, где у тебя подлагивает. Steal nerves добавил: SiT3D, я вот делал так 2) Если триггер совершает работу периодически, то делал так. Если работа постоянна, то объявил две глобалки типа группа, создал группы. И с ними манипулировал. Перебирал тех, кто в первой группе через цикл, выбирал во вторую группу всех, кто находится рядом с юнитами из первой группы. То есть не нужно каждый раз объявлять локалку типа группа и заново создавать группу. Хватает и этого, лишние операции (объявление локалок, создании удаления групп). иначе если работа не постоянна (работает в конкретных случаях, например при касте) бы я бы отключал, когда не нужно это. Хотя я массивы не люблю и из-за перебора цикла. Если брать массивы (пусть даже двойные), то там каждый раз идет перебор через цикл (если не знать от чего брать элементы массивов). сравниваешь есть, нет и так далее. Но я не говорю, что группы лучше, смотря по ситуации. Отредактировано Steal nerves, 25.08.2013 в 04:23. |
25.08.2013, 04:15 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
кое кто днище, структуры это и есть параллельные массивы.
что весит больше, килограмм гвоздей или килограмм гвоздей? |
25.08.2013, 05:45 | #3
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
SiT3D
offline
Опыт:
1,514Активность: |
Спасибо. Диод я это и хотел выяснить. не надо ругаться) не в переборе массива не подлагивает только если двигаю сразу юнитов 60 70 чуть начинается мне просто было интересно можно ли улучшить ситуацию.
SiT3D добавил: можно закрывать пасяб |
25.08.2013, 14:36 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
если у вас алгоритм отстрой то лагать будет всё равно, хоть массивы, хоть структуры... |
25.08.2013, 15:04 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
SiT3D
offline
Опыт:
1,514Активность: |
Ну не только отстойность алгоритма решает =))) я 100 юнитов перемещаю им. Вот и лагает тогда. Думал можно 200 перемещать одновременно, но таких высот варик не даст |
25.08.2013, 15:26 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
iZetox
offline
Опыт:
7,067Активность: |
SiT3D:
перемещал 200 тел в 3d с небольшой физикой на старом компе, особо не лагало. а у тебя 100 лагает. делай выводы |
25.08.2013, 16:30 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
SiT3D
offline
Опыт:
1,514Активность: |
Лол чёт мне с трудом верится, чтобы ты перемещал 200 юнитов каждые 0.02 сек ... и у тебя не было лагов. |
25.08.2013, 17:38 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
У меня 400 снарядов в 3д которые сталкивались друг с другом не лагали типа... У кого-то кривые рученьки. |
25.08.2013, 18:28 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
SiT3D
offline
Опыт:
1,514Активность: |
А ну дайте эти чудесные коды
SiT3D добавил:
Я не понимаю, в чём там вообще может быть кривость... SiT3D добавил:
В общем подправил кое что, напрямую стал таймер удалять, теперь меньше лагает. Теперь лаги начинаются на 150-200 юнитах. Они не сильные но мышка чтановится чуть чуть медленее в движении. SiT3D добавил:
Проблема в том что у меня функция огромная, много сравнений и прочего. Надо её разбить на участки, и юзать только нужные, а не проверять всё каждый раз, оно конечно влияет. + желательно походу избегать вызовы некоторых функций других. SiT3D добавил:
Потому как закомментировал большую часть кода, оставил только ту где само движение, но и там можно было бы сравнения закоментить некоторые то получил % 20 быстрее стало работать... но лаги не такие что прям слайды... вы там не думайте ))) SiT3D добавил:
Ещё сократил время с 0.02 до 0.04 но это не гут конечно. SiT3D добавил:
Однако есть проблема, если я розобью функцию, на кусочки, то мне возможно не хватит 1 таймера на юнита. Потому что нужно будет выполнять ещё другие функции. SiT3D добавил: Правда используя мод движения Где оно уставливается через UnitSetX и UnitSetY лаги на 350 юнитах, такие же как при SetUnitPosition но 200 юнитах не сильные но немного замедляется мышка. Отредактировано SiT3D, 25.08.2013 в 19:33. |
25.08.2013, 19:28 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
А у вас на каждого юнита свой таймер что-ли? |
25.08.2013, 19:36 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
SiT3D
offline
Опыт:
1,514Активность: |
В общем спс, надо будет ещё чтото в ней подправить.
Ну да на каждого юнита. В нём ID записан юнита.
SiT3D добавил:
Можно 1 таймер, а внутри цикл по всем ID пробегать, потому как в массиве всё равно только юниты на которых воздействует движение. SiT3D добавил: но это разве лучше? |
25.08.2013, 19:44 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
Намного.
ADOLF добавил: Тут как-раз то самое узкое место, где оптимизация может быть уместна. |
25.08.2013, 19:47 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MpW
offline
Опыт:
50,219Активность: |
SiT3D, когда много таймеров одновременно работает - подлагивает. Там еще помимо созданных, работают близовские стандартные таймеры, и еще где-то твои в других кодах, и получается очень много. Не только из-за утечек и больших кол-во объектов лаги бывают.
|
25.08.2013, 19:48 | #14
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
SiT3D
offline
Опыт:
1,514Активность: |
Ок попробую сделать на 1 таймер... большое спасибо, всё таки пиз***ля двигатель прогресса =)) щас посуду мыть потом отпишусь =)
SiT3D добавил:
хз хз переделал на 1 таймер и цикл, чёт не сказал бы что лучше работать стало. Правда заметил что ещё подлагивает даже изз того что просто много юнитов стоит, 300 создаётся, если камера в стороне, то норм, а как юнитов видно то подлагивает. SiT3D добавил:
Ааххаха красиво получилось =))))) В общем если на них не смотреть, вообще не лагает, 400 создал, и пока до меня долетели всё пучком было. SiT3D добавил:
Но с другой стороны появился баг или он и был, когда не все почему то двигаются. Щас гляну. Нет кажись порядок, но вот фаталка иногда вылетет, когда юниты за игровую карту вылетают походу. А так всё хорошо работает. Остаось подправить функции высоты и фирулясных движений =) дякую усим за допомогу =) SiT3D добавил: Итог:
При 400 юнитах, нет лагов. Только если смотреть на них. Спасибо всем за помощь. Больше не ставил. Отредактировано SiT3D, 25.08.2013 в 20:52. |
25.08.2013, 21:05 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
Поток может умирать, разбивайте тогда на несколько вызовов с помощью ExecuteFunc.
Создайте константы или макроопределения, в которые забейте размер карты. При движение проверяйте, не выходит ли новая позиция юнита за границы карты. |
25.08.2013, 22:10 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|