23
FEB
Что лучше использовать?
globals
conditionfunc condFAST = null
endglobals
function DamageFunc takes nothing returns boolean
set uENUM = GetFilterUnit()
if not IsUnitType(uENUM, UNIT_TYPE_STRUCTURE) and IsUnitEnemy(uENUM, GetOwningPlayer(uCAST)) and IsAlive(uENUM) then
call DamageUnit(uCAST, uENUM, LReal("Damage"), ATTACK_TYPE_NORMAL, DAMAGE_TYPE_UNIVERSAL)
endif
return false
endfunction
set condFAST = Condition(function DamageFunc)
call GroupEnumUnitsInRange(gFAST, x,y, 100, condFAST)
call DestroyCondition(condFAST)
или
call GroupEnumUnitsInRange(gFAST, x,y, 100, null)
loop
set uENUM = FirstOfGroup(gFAST)
exitwhen SysUnit == null
if not IsUnitType(uENUM, UNIT_TYPE_STRUCTURE) and IsUnitEnemy(uENUM, GetOwningPlayer(uCAST)) and IsAlive(uENUM) then
call DamageUnit(uCAST, uENUM, 10, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_UNIVERSAL)
endif
call GroupRemoveUnit(uENUM,gFAST)
endloop
Лучший ответ:
Ну болекспры побыстрее, но разницы на глаз вы не увидите. Я вот хз че вы там велосипеды изоьритаете, нет классической способ - groupenumunitsinrange, с фильтром,куда глобалками передаём аргументыесли нужно, ну и for group для группы,ждля мгновенных действий где не надо хранить группу и где не вызывают я события триггеров ющающие эту группу,то можно юзать одну глобальную группу, быстрее ваших локальных чудес. . .
Views: 61
Like +1
- 0
XGM Bot
XGM Bot
ScopteRectuS
ScopteRectuS
Блог
LainMikoroso
LainMikoroso
ScopteRectuS
ScopteRectuS
Блог
Второй метод хорош тем, что не нужно переносить локалки в глобалки, но опять же, если действий очень много, то поток может оборваться.
LainMikoroso
LainMikoroso
А по поводу:"нет разницы", есть большая ошибочка, т.к. на луа, быстрейшим способом является впихивание в условие, т.к. не приходится вытаскивать юнита из группы, а в сравнении с BlzUnitAtGroup не приходится чистить группу после использования
ScopteRectuS
ScopteRectuS
Блог
LainMikoroso
LainMikoroso
У меня жесткий абьюз глобалок во всех таймерах, выгружаемых с хеша, спонтанный новый поток буквально уничтожит весь код, хэх
Bergi_Bear
Bergi_Bear
Блог
Проекты:
WarCraft 3 Reforged
Robot Defense
Наследие Альянса
Гильдия «Черамор»
TcX
XGM Staff
Альфа тест
WarMake
Просто все эти "быстрее" реально не быстрее, каждый раз когда вам кто-то говорит, что вот это работает быстрее чем вон то - шлите его на фиг.
LainMikoroso
LainMikoroso
У меня система сталкивания и замедления для каждого объекта в карте, если бы я думал с "о байтодрочерстве не стоит думать в 2021", то я так и дальше бы имел 20 фпс при 90 единовременных снарядах в мапе.
Bergi_Bear
Bergi_Bear
Блог
Проекты:
WarCraft 3 Reforged
Robot Defense
Наследие Альянса
Гильдия «Черамор»
TcX
XGM Staff
Альфа тест
WarMake
ScopteRectuS
ScopteRectuS
Блог
LainMikoroso
LainMikoroso
Ну не знаю, мне доставляет абузить глобалки, делает код супер компактным. Главное чтобы новый поток начинался только тогда, когда я вызываю таймер, либо когда тик таймера заканчивался
ScopteRectuS
ScopteRectuS
Блог
LainMikoroso
LainMikoroso
все прекрасно читается, не знаю о чем ты.
Bergi_Bear
Bergi_Bear
Блог
Проекты:
WarCraft 3 Reforged
Robot Defense
Наследие Альянса
Гильдия «Черамор»
TcX
XGM Staff
Альфа тест
WarMake
Тоже самое в рефордже сейчас благодаря анонимкам я делаю потом внутри потока на периодике внутрипериодика, вся на ультра малых периодах. И каким бы не был громоздким код - я ничего не теряю в производительности ну никак.
Всё что отбирает у вас производительность это юниты, декорации и доады
Я это написал в одном сообщении 3 раза, потому что реально, ну не факт перебора тут важен. И я это знаю уже 10 лет, и Назар это доказал, хоть какими-то бенчмарками, а то бы мне так никто бы и не верил
LainMikoroso
LainMikoroso
Если делать простое движение юнитов, то да, влияет больше модель, чем лишние 2-3 тика в цикле движения. Но когда ты добавляешь сталкивание этих снарядов(с проверкой), когда у каждого снаряда разная скорость, и прочее, то тут уже на производительность влияет количество, т.к. количество операций увеличивается в несколько раз(в геометрической прогрессии)
Из-за табуляции, не заметил 0.032 таймера
ScopteRectuS
ScopteRectuS
Блог
Vlod
Vlod
quq_CCCP
quq_CCCP
Проекты:
LainMikoroso
LainMikoroso
Ну я так и думал в принципе, про глобалку на группу, я так и делаю