Еслиб не пользовательское ограничение на полигонах и разрешение текстур то получался бы полностью готовый контент. А пока это решается генерацией отдельных частей и склейкой.
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. Спавним ассет стены (с условиями: тип стены, тип крыши, тип дверей). На поворотах башня, на прямой лини стена. Используем доп. условия. Например можно поставить ворота?, какой тип крыши? итд. К каждой стене снаружи и внутри может быть заспанен пропс. У пропров есть параметры: шанс спавна, шанс на повторение в следующем блоке стены, особый поворот или офсет и прочие.
Освободил немного места в карте под новые ассеты. Добавил в камеру систему для коллизий с крупными объектами. Когда доделаю генератор думаю получиться эпично.
Префабы для лагерей разбойников собирал в редакторе записывая в хп декораций нужную информацию. А тут подумал что зачем мучаться если можно более универсально сделать это в UE
» 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 / Главная страница
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 / Главная страница
Это придаст вариативности фигурам.
Теперь строка описывает весь замок вот так:
» XGM Team / Обновление способностей 2024
Отредактирован Jack-of-shadow
» Hunter or Victim / Главная страница
Отредактирован Jack-of-shadow
» Hunter or Victim / Главная страница
Update 1.03c Eng
Отредактирован Jack-of-shadow
» 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 и спавним дом (или палатки или тенты) или два дома влево вправо, либо делаем пропуск.
Спавним со сдвигом влево или вправо забор.
Спавним со сдвигом влево или вправо фонари бочки или другие пропсы.
Спавним ассет стены (с условиями: тип стены, тип крыши, тип дверей).
На поворотах башня, на прямой лини стена.
Используем доп. условия. Например можно поставить ворота?, какой тип крыши? итд.
К каждой стене снаружи и внутри может быть заспанен пропс.
У пропров есть параметры:
шанс спавна, шанс на повторение в следующем блоке стены, особый поворот или офсет и прочие.
Отредактирован Jack-of-shadow
» Hunter or Victim / Главная страница
Хотелось бы. Объем работ слишком велик. Разве что если нейронки запрячь.
Если бы я доковырял UE тулзу для понятного и удобного общего пользовния то был бы смысл)
В итоге разные типы замков будут описаны примерно вот так:
Отредактирован Jack-of-shadow
» Hunter or Victim / Главная страница
Отредактирован Jack-of-shadow
» Администрация XGM / Расскажите о вашем опыте использования XGM
Отредактирован Jack-of-shadow
» Hunter or Victim / Главная страница
Отредактирован Jack-of-shadow
» WarCraft 3 / Как сделать модели не кликабелиной
Отредактирован Jack-of-shadow
» XGM — Премия года / Hunter or Victim - обзор в рамках премии 2023 года
» WarCraft 3 / Как сделать модели не кликабелиной