Jack-of-shadow, свет буду печь я, только на отдельную карту теней,а то одних текстур будет мегабайт 200. Только я за созданием моделей засиделся, возможно с конкруса вылечу, отдельно выложу тогда
Второй ув сет mdx вроде как не держит, но можно конечно запечь текстуру теней низкого разрешения и заблендить в материале.
Но тогда нужно избегать повторение деталей на развертке
PT153
Немного поэкспериментировал с boolexpr, получилось создать массив функций для баффов через них, не используя даже кэш, раньше делал массив функций через массив триггеров с экзекутом + кеш, для прокачки и использования триггерных спеллов.
Есть конечно ограничение по кол-ву юнитов, но мне больше и не нужно.
Для непериодических баффов у меня были обычные жасовые функции с изменением нужных переменных героя, и аттач эфекта с таймером удаления.
Для остальных юзалась другая логика. В общем, не то что бы прям мешанина была, для большинства я тупо копировал шаблон и менял атрибуты.
Но столкнулся с проблемой что бафф может быть наложен дважды, и получался просто стак. Но минус в том что висели лишние эффекты.
А простая проверка на имеющийся бафф требовала нахождения таймера который уже мог быть запущен, то бишь нужно было хранить его хендл, а там еще всякие коллизии начинали возникать.
Поэтому захотелось все таки покурить структуры и придумать более изящный вариант.
Дык ты уже рассписал какраз все что тебе нужно. Юнит на которого применена способность - это GetSpellTargetUnit() или "Реакция на событие - Target unit of ability being cast" в триггерах.
Имеется ввиду шрифт на лоадскрине? Если руки дойдут то я картинку другую запилю в 1.03.
Последнее время очень редко удается добраться до варика, по этому релиз слегка затянулся. Но все же работа над улучшением проекта не стоит на месте. ссылка
да, игре похер, какой путь до модели, объект создается всегда
блин как то раньше об этом не задумывался, получается локальные спецефекты через пустую строку плодят утечки у остальных игроков..хмм
а хотя нет. эфект же всеравно будет удаляться потом (ну если по хорошему), тогда и у остальных удалиться как раз если не будет проблем с пустой строкой.
Dezard:
Кривой перевод как всегда. Мне как раз кстати обратный эффект нужен был, что бы подходя к деревьям вплотную можно было видеть противника дабы устраивать засады.
Dezard:
ну вот например тут на карте генерится 30 к декора и тормоза идут только от объектов в камере.
Кстати да, самый жесткий декор это тот по которому можно ходить, уже 100 объектов могут вызывать тормоза и ломать поиск путей у юнитов. Из-за этого пришлось целую систему проверки высот писать.
Кстати есть такая тема, что у декора анимации проигрываются только когда ты на них смотришь. Тобишь если ты хайдиш 12 к декора анимацией "death", и потом летаешь камерой по карте, то только в момент когда ты на них посмотришь анимация "death" и проиграется. По этому после сокрытия будут тормоза при первом попадении в камеру.
вот тут 22 к флагов насажал. И после сокрытия очень хорошо видно, что хайдится они начинают только при попадении в камеру.
С террейном тоже самое. Если сгенерировать терейн то будут черные дыры на каждом полике, пока один раз не попадут в камеру и не отрендерятся.
Разницы с видимым декором вообще никакой. Такие же просадки фпс начинаются.
По идее не должно. В примере 2 к флагов в одной точке вызывают жуткие лаги. После скрытия все тормоза пропадают. Возможно проблема в анимации твоих моделей. (например если в анимации объект скрывается только прозрачностью материала)
Я своем проекте как раз использую сокрытие мелкого декора и источников освещения, как настройку для занижения графики. Прирост производительности получается довольно ощутимый.
DracoL1ch:
Разве локальное проигрывание анимаций вызывает десник у декора? Всегдаж работало вроде, исключение декор с галочкой "можно пройти" при триггерной проверке высоты на нем.
Нет, есть лимит. И даже если каким то волшебством его удастся превысить, то скорее всего у юнитов будут проблемы с поиском путей. В конце концов можно уменьшить модели в 2-3 раза. Но раз уж ты моделиш сам, с нуля, то не майся фигней, качай анриал, или уж юнити на крайняк, и радуйся жизни.
поправочка, I2S забыл. теперь вроде должно сработать. Для сохранения нужно включить доступ к локальным файлам и указать переменные : YourHash YourBdHandle YourFolderPath
Ред. Jack-of-shadow
» Crazy Dwarf Race / Crazy Dwarf Race
Аххах мда, я тот ещё грамматей, с обновлением поправлю)
Ред. Jack-of-shadow
» Crazy Dwarf Race / Crazy Dwarf Race
» WarCraft 3 / Конкурс ландшафтов - XGM [Halloween]
Но тогда нужно избегать повторение деталей на развертке
» WarCraft 3 / Конкурс ландшафтов - XGM [Halloween]
Ред. Jack-of-shadow
» Crazy Dwarf Race / Crazy Dwarf Race
Ред. Jack-of-shadow
» Crazy Dwarf Race / Crazy Dwarf Race
WarCraft_Font
Snap_ITC_Font
» WarCraft 3 / Триггерный бафф
Немного поэкспериментировал с boolexpr, получилось создать массив функций для баффов через них, не используя даже кэш, раньше делал массив функций через массив триггеров с экзекутом + кеш, для прокачки и использования триггерных спеллов.
globals
constant integer BMax = 50 Макслимальное бафов, 8192/UntitMax = BMax
boolexpr array BCode Функция бафа
timer array BTimer Таймер бафа
integer array BUnitIdArray ид юнита прикрепояемый к тайммеру
integer array BBuffIdArray ид бафа прикрепояемый к бафу
integer array BEffectArray ид эффекта прикрепояемого к бафу
boolean BDestroy = true аттрибут_функции_Удаления бафа
integer BUnitId = 0 аттрибут_функции_Ид юнита
force BForce = CreateForce()
endglobals
timer t = GetExpiredTimer( )
integer i = R2I(TimerGetRemaining(t)+0.5)
BUnitId = BUnitIdArray[i]
BDestroy = true
ForceEnumPlayers(BForce, BCode[BBuffIdArray[i]])
DestroyTimer (t)
}
t = CreateTimer()
TimerStart(t, I2R(b), false, null)
PauseTimer(t)
TimerStart(t, d, false, function BuffEnd )
ForceEnumPlayers (BForce, BCode[BBuffIdArray[b]])
}
integer id = unitid*BMax+buffid
BDestroy = false
BUnitId = unitid
BUnitIdArray [id] = unitid
BBuffIdArray [id] = buffid
BTimerEx(BTimer[id],id,time)
}
endlibrary
if BDestroy {
Msg("Buff1_Destroy"+" for unit "+I2S(BUnitId))
}else{
Msg("Buff1"+" for unit "+I2S(BUnitId))
}
return false
}
if BDestroy {
Msg("Buff2_Destroy"+" for unit "+I2S(BUnitId))
}else{
Msg("Buff2"+" for unit "+I2S(BUnitId))
}
return false
}
BuffIni(1,function Buff1)
BuffIni(2,function Buff2)
}
» WarCraft 3 / Триггерный бафф
Для остальных юзалась другая логика. В общем, не то что бы прям мешанина была, для большинства я тупо копировал шаблон и менял атрибуты.
Но столкнулся с проблемой что бафф может быть наложен дважды, и получался просто стак. Но минус в том что висели лишние эффекты.
А простая проверка на имеющийся бафф требовала нахождения таймера который уже мог быть запущен, то бишь нужно было хранить его хендл, а там еще всякие коллизии начинали возникать.
Поэтому захотелось все таки покурить структуры и придумать более изящный вариант.
Ред. Jack-of-shadow
» WarCraft 3 / Как сделать чтобы триггер узнавал на кого действует способность?
Ред. Jack-of-shadow
» Crazy Dwarf Race / Crazy Dwarf Race
» WarCraft 3 / Как повернуть кость Bone_Root
Ред. Jack-of-shadow
» WarCraft 3 / Вращение свечения героя
» WarCraft 3 / Респаун разрушаемых декораций
Ред. Jack-of-shadow
» WarCraft 3 / Где можно найти хорошие предметы?
Profit!
Ред. Jack-of-shadow
» WarCraft 3 / Удаление спецэффекта с null'евым путем к моделе
» WarCraft 3 / Видимость через декорацию
Кривой перевод как всегда. Мне как раз кстати обратный эффект нужен был, что бы подходя к деревьям вплотную можно было видеть противника дабы устраивать засады.
Ред. Jack-of-shadow
» WarCraft 3 / Оптимизация карты при большом количестве декораций
ну вот например тут на карте генерится 30 к декора и тормоза идут только от объектов в камере.
Кстати да, самый жесткий декор это тот по которому можно ходить, уже 100 объектов могут вызывать тормоза и ломать поиск путей у юнитов. Из-за этого пришлось целую систему проверки высот писать.
вот тут 22 к флагов насажал. И после сокрытия очень хорошо видно, что хайдится они начинают только при попадении в камеру.
Ред. Jack-of-shadow
» WarCraft 3 / Оптимизация карты при большом количестве декораций
» WarCraft 3 / Оптимизация карты при большом количестве декораций
Разве локальное проигрывание анимаций вызывает десник у декора? Всегдаж работало вроде, исключение декор с галочкой "можно пройти" при триггерной проверке высоты на нем.
Ред. Jack-of-shadow
» WarCraft 3 / Карта размером в 2048х2048?
Ред. Jack-of-shadow
» WarCraft 3 / Система спавна по ID юнита (Пример ID:hfoo(Пехотинец)
Ред. Jack-of-shadow
» WarCraft 3 / Система спавна по ID юнита (Пример ID:hfoo(Пехотинец)
YourHash
YourBdHandle
YourFolderPath
Ред. Jack-of-shadow
» WarCraft 3 / Система спавна по ID юнита (Пример ID:hfoo(Пехотинец)
Либо закинуть всех нужных юнитов на карту. Выбрать группу и для каждого Сохранить прелоадом в текстовик.
тип того:
Preload ("SaveInteger (hash,BdNameHandle,StringHash("unitname"),"unitid")" )
}
unit u = GetFilterUnit()
PreloadAddString (GetUnitName(u), I2S(GetUnitId(u)))
}
ForGroupBJ( GetUnitsInRectAll(GetPlayableMapRect()), function SaveUnitName )
PreloadGenEnd (path)
PreloadGenClear()
}
» WarCraft 3 / Генерация случайных предметов (Мемхак)
Тут кратко расписывал принцип генерации как раз по типу дьябло для HoV
Ред. Jack-of-shadow
» Хочу домой забрать! / Тизер Silent Hill X