цитата И что не так с uv швами, если они не влияют на производительность?
Влияют. Разрез на ювихе == дополнительный верткес. Плюс при таком кол-ве разрезов суммарная площадь паддинга занимает в разы больше места чем на адекватной развертке, как итог получаются потери по текселю.
Проверять паффинг в точке (не сработает, потому что +- миллиметр может зарешать)
Заспавнить юнита, и сравнить его координаты с координаторами спавна (если изменились больше чем на 32 значит застрял в текстурах)
Застрявшего смещаешь циклом в любую сторону, пока не встанет нормально (у цикла лучше сделать счетчик на 100, чтобы не зациклился намертво если место так и не найдется. И опять же границы карты чекай чтобы не улетел).
Еслиб не пользовательское ограничение на полигонах и разрешение текстур то получался бы полностью готовый контент. А пока это решается генерацией отдельных частей и склейкой.
Vlod, Я не стал делать генерацию областей, дабы не нагружать варик чрезмерными вычислениями, скармливаю ему уже готовый результат где области и путь стен уже заранее определен.
Изначально в карте я использовал пресеты. Например для лагерей разбойников я сохранял трансформ и тип каждого ассета. В рамках города это получалось бы около 2000 строк на каждый пресет.
А щас нужно только две строки: описание областей и путь стен.
100 вариаций городов займут 200 строк.
Возможно сделаю генератор областей, но только на строне UE.
Makeba, в мдливсе обычно ювиха съезжает когда оптимайз нажимаешь потому что он флоаты обрезает походу после запятой и точка уезжает в край. Плюс поскольку паддинга на картах нет, разблюренный пиксель с обратной стороны лезет. А при переключении мип мап это еще сильнее вылезает.
EugeAl, Декор делался специально для карты. И в нем есть много нюансов. Он использует "не выделяемый" материал (это нужно для шифт системы) и использует анимации для переключения вариаций. Также 60% декора в игре спавнится как спецэффекты (по этому имеют спецификации для наклонов и прочего). Из модели из коробки будут неюзабельны для других проектов.
На самом деле много кто просил декор. Если кто то займется я могу расшарить сами модели для переделки, потому что сам я врятле до этого доберусь.
Понял что для ИИ и эвентов мне понадобятся не только стены но и области.
По этому изменил подход к генерации.
Теперь стены генерируются по форме которую образуют расставленные области.
На выходе получаем 2 строки такого вида:
• Форма стен: D0B0A1B0D3C3D0D0B1C2C1A1C0A0D1C1A
• Области города: 24+6+12-16+8-24+8-12+2-12+26+6-10-20+26+
• Добавил шанс на разрушение стены.
• Линии строений теперь не нужно сохранять в строку, они будут автоматически заполнять области если позволяет размер.
• Также расширил вариации для построек, теперь поддерживаются дополнительные ассеты.
• 1.Ищем все связанные с выбранным объектом области.
• 2.Проходимся по клеткам найденных областей и создаем таблицу. Клеткам на углах области присваиваем значение 3, остальным 1, при пересечении областей складываем сумму.
• 3.Строим путь. Начинаем от первой клетки, проверяем шаг влево, вправо, вверх и вниз и двигаемся вперед. 0 и 2 это пересечение областей либо не размеченная область. 1,3,6 можно сделать шаг. Сохраняем полученный путь Линия (A,B,C,D) + Поворот (0,1,2,3): Пример пути: B0D3C3D0D0B1C2C1A1C0A0D1C1A2A1B2
• 4.Сохраняем координаты областей MinX+MinY+MaxX+MaxY: Пример областей: 24+6+12-16+8-24+8-12+2-12+26+6-10-20+26+1 Для экономии сохраняются координаты деленные на 192.
Логика для генератора
• 1.Спавним области читая строку CityRect
• 2.Спавним постройки по областям. Если размер области позволяет то будем спавнить дома. Находим большую сторону области и относительно нее указываем направление для линии домов. Рандомайзим длину линии. Двигаемся вперед с шагом 192 и спавним дом (или палатки или тенты) или два дома влево вправо, либо делаем пропуск. Спавним со сдвигом влево или вправо забор. Спавним со сдвигом влево или вправо фонари бочки или другие пропсы.
• 3.Спавним стены читая CityWalls. Спавним ассет стены (с условиями: тип стены, тип крыши, тип дверей). На поворотах башня, на прямой лини стена. Используем доп. условия. Например можно поставить ворота?, какой тип крыши? итд. К каждой стене снаружи и внутри может быть заспанен пропс. У пропров есть параметры: шанс спавна, шанс на повторение в следующем блоке стены, особый поворот или офсет и прочие.
» Гильдия «Черамор» / DevStream 04 - делаем выживалку на Unigine, а потом WarThunder
Ред. Jack-of-shadow
» WarCraft 3 / Генератор декораций.
Ред. Jack-of-shadow
» Hunter or Victim / Hunter or Victim
Ред. Jack-of-shadow
» Game Dev / Lumalabs.ai - текст в 3D
Ред. Jack-of-shadow
» Game Dev / Lumalabs.ai - текст в 3D
Ред. Jack-of-shadow
» WarCraft 3 / Точка за пределами камеры
Ред. Jack-of-shadow
» WarCraft 3 / Точка за пределами камеры
» Game Dev / Lumalabs.ai - текст в 3D
Ред. Jack-of-shadow
» Game Dev / Lumalabs.ai - текст в 3D
Ред. Jack-of-shadow
» Game Dev / Lumalabs.ai - текст в 3D
» Game Dev / Lumalabs.ai - текст в 3D
Ред. Jack-of-shadow
» WarCraft 3 / Шахматы варкрафт 3
Ред. Jack-of-shadow
» Hunter or Victim / Hunter or Victim
100 вариаций городов займут 200 строк.
» Classic Asset Kit Extention / Мастерская
Ред. Jack-of-shadow
» WarCraft 3 / Избавляемся от швов
» JackCraft / XGM Logo
Ред. Jack-of-shadow
» WarCraft 3 / XGM логотип - иконка Reforged
» Hunter or Victim / Hunter or Victim
» Hunter or Victim / Hunter or Victim
» Hunter or Victim / Hunter or Victim
Это придаст вариативности фигурам.
Теперь строка описывает весь замок вот так:
» XGM Team / UP: Обновление способностей 2024
Ред. Jack-of-shadow
» Hunter or Victim / Hunter or Victim
Ред. Jack-of-shadow
» Hunter or Victim / Hunter or Victim
Update 1.03c Eng
Ред. Jack-of-shadow
» Hunter or Victim / Hunter or Victim
По этому изменил подход к генерации.
• Форма стен:
D0B0A1B0D3C3D0D0B1C2C1A1C0A0D1C1A
• Области города:
24+6+12-16+8-24+8-12+2-12+26+6-10-20+26+
• Линии строений теперь не нужно сохранять в строку, они будут автоматически заполнять области если позволяет размер.
• Также расширил вариации для построек, теперь поддерживаются дополнительные ассеты.
Логика для редактора
Клеткам на углах области присваиваем значение 3, остальным 1, при пересечении областей складываем сумму.
Начинаем от первой клетки, проверяем шаг влево, вправо, вверх и вниз и двигаемся вперед.
0 и 2 это пересечение областей либо не размеченная область.
1,3,6 можно сделать шаг.
Сохраняем полученный путь Линия (A,B,C,D) + Поворот (0,1,2,3):
Пример пути: B0D3C3D0D0B1C2C1A1C0A0D1C1A2A1B2
Пример областей: 24+6+12-16+8-24+8-12+2-12+26+6-10-20+26+1
Для экономии сохраняются координаты деленные на 192.
Логика для генератора
Если размер области позволяет то будем спавнить дома.
Находим большую сторону области и относительно нее указываем направление для линии домов.
Рандомайзим длину линии.
Двигаемся вперед с шагом 192 и спавним дом (или палатки или тенты) или два дома влево вправо, либо делаем пропуск.
Спавним со сдвигом влево или вправо забор.
Спавним со сдвигом влево или вправо фонари бочки или другие пропсы.
Спавним ассет стены (с условиями: тип стены, тип крыши, тип дверей).
На поворотах башня, на прямой лини стена.
Используем доп. условия. Например можно поставить ворота?, какой тип крыши? итд.
К каждой стене снаружи и внутри может быть заспанен пропс.
У пропров есть параметры:
шанс спавна, шанс на повторение в следующем блоке стены, особый поворот или офсет и прочие.