Судя по графике игра работает на движке starcraft II.
Судя по тайловой природе террейна - не похоже на чистый ск2 движок, у него совсем другой террейн. А если подразумевается поддержка старых карт, то движок ск2 просто отпадает, ему такое практически невозможно скормить. Вполне возможно, что они поменяли рендер на современный, оставив начинку прежней.
Если даже джасс обертку и оставят, либо запилят конвертер, то половина карт отпадает, из-за того что половина Фитч в кастомках реализуется на костылях и багах, но это все можно пережить я думаю, так же как это было с ретурн багом.
Если у вас есть функция, по которой изменяется высота точек между центром кратера и его окончанием, то буду очень признателен.
Я имею ввиду проходиться минимальным радиусом, захватывая по одной вершинке, тогда проблем не будет, однако долго, для больших карт.
кстати получалось еще создавать почти идеальные круглые горки-плато
(вот /||||||||||\ такой формы).
С начало спавниш кратер вверх, затем вниз в той же точке, но меньшего радиуса. ( r2 = r1*0.8,d2 = d1*0.4 ) Такие горки могут быстро покрывать большие области, в отличие от обычных холмов, которые смешиваются непредсказуемо, периодически образуя горы до небес, превышая лимиты высот и образуя "черные дыры" .
а пока что на ровном местое генерировать через наработку xgm.guru/p/wc3/dungeongenerator на разные этажи хоть криво но терпимо.
Кстати, если карта в итоге должна представлять из себя некие этажи данжей, то тогда почему бы вообще не сделать готовые модель блоки типа "мост" и не мучать террейн?
К примеру делаешь модель которая имеет N анимаций.
Каждая анимация показывает разный тип блока который включает в себя пол и стены. Всю карту заполняешь блоками , затем через анимацию генеришь различные комнаты. Блоки это "не разрушаемая" декорация ( избавит от проблем рендера, когда центр декорации не попадает в камеру ).
Высота и текстура путей задается невидимыми "разрушаемыми" декорациями типа "мост" .
Vlod:
Почему неизвестна? Она поднимает или опускает попавшие в радиус вершинки на указанную высоту. Если пройтись по рельефу и сохранить высоты, то рельеф можно воссоздать. Единственная проблема это скорость.
Но на небольшом террейне вполне можно попытаться.
и генерирует которые есть данные и создает а не рандомный...
Даже в рандомном террейне можно по хорошему указать статичные ключевые точки: лагеря монстров, поселения людей и прочее.
К примеру реки и дороги в моем проекте хоть и рандомные но строятся между опорных точек, которые также спавняться рандомно, но учитывая нужные условия. Но ничего не мешает установить их фиксировано.
читать данные прямо в jass и генерировать например типо блокнотом
Ну теоретически можно пройтись по всей карте триггером, с проверками высоты и тайла, затем выгрузить это в текстовик. (получиться что то вроде карты высот)
Но для 100 процентной четкости нужно пройтись по каждому полику. Такая генерация займет много времени уже на средней карте. Но 32x32/64x64 можно попытаться.
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 раза. Но раз уж ты моделиш сам, с нуля, то не майся фигней, качай анриал, или уж юнити на крайняк, и радуйся жизни.
Ред. Jack-of-shadow
» WarCraft 3 / Blizzcon: Анонсирован WarCraft III Reforged (remaster)
Ред. Jack-of-shadow
» WarCraft 3 / Как копировать данные ландшфат?
(вот /||||||||||\ такой формы).
С начало спавниш кратер вверх, затем вниз в той же точке, но меньшего радиуса. ( r2 = r1*0.8,d2 = d1*0.4 ) Такие горки могут быстро покрывать большие области, в отличие от обычных холмов, которые смешиваются непредсказуемо, периодически образуя горы до небес, превышая лимиты высот и образуя "черные дыры" .
Каждая анимация показывает разный тип блока который включает в себя пол и стены. Всю карту заполняешь блоками , затем через анимацию генеришь различные комнаты. Блоки это "не разрушаемая" декорация ( избавит от проблем рендера, когда центр декорации не попадает в камеру ).
Высота и текстура путей задается невидимыми "разрушаемыми" декорациями типа "мост" .
000 000 001 001 000 001
000 111 111 001 101 101
+ те же блоки с подъемами, лестницами и прочими вариациями.
Например:
Ред. Jack-of-shadow
» WarCraft 3 / Как копировать данные ландшфат?
Почему неизвестна? Она поднимает или опускает попавшие в радиус вершинки на указанную высоту. Если пройтись по рельефу и сохранить высоты, то рельеф можно воссоздать. Единственная проблема это скорость.
Но на небольшом террейне вполне можно попытаться.
» WarCraft 3 / Как копировать данные ландшфат?
К примеру реки и дороги в моем проекте хоть и рандомные но строятся между опорных точек, которые также спавняться рандомно, но учитывая нужные условия. Но ничего не мешает установить их фиксировано. Ну теоретически можно пройтись по всей карте триггером, с проверками высоты и тайла, затем выгрузить это в текстовик. (получиться что то вроде карты высот)
Но для 100 процентной четкости нужно пройтись по каждому полику. Такая генерация займет много времени уже на средней карте. Но 32x32/64x64 можно попытаться.
» WarCraft 3 / Как копировать данные ландшфат?
Ред. 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?