Hunter or Victim - это мультиплеерная карта для Warcraft 3 соединившая в себе жанры стелс и выживания.
Огромный процедурно генерируемый мир сделает каждое ваше путешествие уникальным.
Используйте мастерство скрытности и навыки выживания, что бы устранить соперников или объедините усилия для победы над Древним Злом.
107 24 759
0
25
2 месяца назад
Отредактирован Jack-of-shadow
0
EugeAl, Декор делался специально для карты. И в нем есть много нюансов. Он использует "не выделяемый" материал (это нужно для шифт системы) и использует анимации для переключения вариаций. Также 60% декора в игре спавнится как спецэффекты (по этому имеют спецификации для наклонов и прочего). Из модели из коробки будут неюзабельны для других проектов.

На самом деле много кто просил декор. Если кто то займется я могу расшарить сами модели для переделки, потому что сам я врятле до этого доберусь.
0
18
2 месяца назад
0
Jack-of-shadow, у твоего проекта классные ассеты, особенно деревья и декор, судя по обзорам и скринам. Не планируешь ли выложить пак моделей из карты для использования?
0
25
2 месяца назад
Отредактирован Jack-of-shadow
0
Последние новости!

Update 1.03c Eng

Translation of the Map into English.
• Version 1.03c Eng
3
25
2 месяца назад
Отредактирован Jack-of-shadow
3
Последние новости!
Понял что для ИИ и эвентов мне понадобятся не только стены но и области.
По этому изменил подход к генерации.

Теперь стены генерируются по форме которую образуют расставленные области.

На выходе получаем 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.
Спавним ассет стены (с условиями: тип стены, тип крыши, тип дверей).
На поворотах башня, на прямой лини стена.
Используем доп. условия. Например можно поставить ворота?, какой тип крыши? итд.
К каждой стене снаружи и внутри может быть заспанен пропс.
У пропров есть параметры:
шанс спавна, шанс на повторение в следующем блоке стены, особый поворот или офсет и прочие.
0
37
2 месяца назад
Отредактирован ScorpioT1000
0
Jack-of-shadow, подумай про сериализацию во вложенный массив/объекты. Всегда полезно иметь возможность воссоздать весь уровень с нуля по нему без рандома, для тех же сохранений или чтоб раздать игрокам его с сервера по сети. Рандом лучше на первых стадиях генерации использовать
0
18
2 месяца назад
0
Честно говоря хотелось бы более подробное описание генератора, в плане логики генерирования, это самая интересная часть
0
25
3 месяца назад
Отредактирован Jack-of-shadow
0
Alan_Gu,
Хотелось бы. Объем работ слишком велик. Разве что если нейронки запрячь.

ScorpioT1000,
Если бы я доковырял UE тулзу для понятного и удобного общего пользовния то был бы смысл)

А так, сейчас генератор разбит на 2 части:
Часть первая (тулзлы и кнопочки):
  1. Создать линию из стен в указанном направлении <∧∨> с указанной или рандомной длинной.
  2. Отменить последнию линию.
  3. Очистить генератор.
  4. Пересобрать стены.
  5. Соединить линии между собой.
Сборка сохраняет действия в строку: "D11112222333300а00"

Часть вторая (чтение строки и спавн ассетов).
Тут вся генерация. Рандомизируются типы стен,крыш ворот и пропсов/домов прилегающих к стенам.

Следующий этап слегка прибраться в нодах и повторить генеративную часть на jass.
В итоге разные типы замков будут описаны примерно вот так:
раскрыть
 void SpawnCityType(int sity_type) {
 if      sity_type == 1 {                    //Пресет города 1
  CastleWall          ("D11112222333300а00") //Повороты стен и доп инфа
  CastleBuildingsLine (1,0,"8")              //Линии домов (x,y,длинна)
  CastleBuildingsLine (3,0,"5")
  CastleBuildingsLine (5,0,"5")
 }elseif sity_type == 2 {
  CastleWall          ("D11223300")
  CastleBuildingsLine (1,0,"5")
  CastleBuildingsLine (2,0,"5")
  CastleBuildingsLine (3,0,"5")
 }
0
37
3 месяца назад
0
Это офигенно, ждем детальные новости - готовы постить на главную)
0
15
3 месяца назад
0
Ландшафт впечатляет! Очень атмосферно!