Skip to content

Маппинг процедурных комнат

Чтобы создавать новые комнаты, у вас должен быть поднят локальный сервер на котором вы можете работать.

1. Открытие маппинг атласа

Первое что вам нужно сделать, это открыть маппинг-атлас уровня который вы хотите редактировать:

image

MossyTemple является как раз одной из таких карт-атласов, которую мы хотим отредактировать.

Вы окажетесь на нижнем слое маппинга. znetwork все таки является связкой из несколльких z-уровней.

image

вы можете использовать кнопки перехода вверх и вниз для редактирования нижнего декоративного слоя и верхнего геймплейного.

image

image

2. Визуализация зарегестрированных комнат

Следующая полезная команда - dungen_atlas_visualize, позволяет включать и выключать отображение границ зарегестрированных комнат для определенной карты. Так как мы находимся на MossyTemple, то команды следующие:

  • dungen_atlas_visualize MossyTemple - чтобы включить визуализацию
  • dungen_atlas_visualize - чтобы выключить

image

Все прототипы комнат для этой карты хранятся в ..\Resources\Prototypes\_CE\Procedural\Levels\MossyTemple\_rooms.yml в виде прототипов:

- type: dungeonRoom3d
  id: MossyTemple_PillarsWideCrossroad
  roomType: MossyTempleGeneralRoom
  size: 15, 8
  height: 2
  zLevelMap: MossyTemple
  offset: 0, -10

поля прототипа:

  • id: Уникальный неповторяемый идентификатор. Используйте говорящие названия вместо цифр.
  • roomType: Ссылка на ..\Resources\Prototypes\_CE\Procedural\room_types.yml. Определяет тип комнаты (сокровищница, вход, выход).
  • size: Размер комнаты x, y
  • height: Высота комнаты. В z-этажах. Пока что всегда 2.
  • zLevelMap: На какой карте-атласе расположена эта комната.
  • offset: Координаты нижнего-левого угла комнаты.
  • weigth: Вероятность спавна этой комнаты в данже. По умолчанию 1. 0 = Никогда не будет спавнится. 2 = Будет появляться в 2 раза чаще остальных комнат.

Координату определенного тайла можно узнать следующим образом:

1) Нажмите F3 для включения дебаг-оверлея 2) Наведите курсор на тайл который вас интересует 3) Смотрите сюда: image

Если ваш локальный сервер собран в конфигурации Debug или Tools - Вы можете менять значения в файлах прототипах и в реальном времени видеть изменения на маппинг-атласе:

Анимация12

3. Непосредственно, маппинг

Придумайте идею вашей комнаты. Она должна - Быть достаточно унивкальна чтобы не повторяться с существующими комнатами. - Вписываться в эстетику уровня.

Расположите комнату на атласе. Я группирую комнаты по типам: image

Маркеры соединений комнат

Обязательно расположите маркеры соединений CERoomPasswayMarker: image Располагайте их на границах комнат, развернув наружу. В этих местах комнаты будут соединяться друг с другом.

Маркеры бездн

Бездны пока что сделаны в виде CEChasm маркеров Не забывайте ставить их, иначе игроки смогут ходить по воздуху в этих местах. image

Лут и противники

Не располагайте статичного лута и противников! Весь лут и опасности создаются внутри генерации процедурно. Вы можете ставить CESpawnerRandomDungeonProp для мест, где будут появляться горшки, сундуки и другие предметы, либо любые столы. На столах будут процедурно создаваться ключи, зелья и другой ценный лут.

Сохранение

После того как вы замаппили ваши случайные комнаты, сохраните вашу работу командой znetwork-save [ID] MossyTemple: image обязательно вводите тоже самое название (в нашем случае MossyTemple) чтобы файлы были проименованы корректно.

Если ошибок нет, вы получите сообщения: image

Затем, вы сможете найти папку с вашими сохраненными картами по пути: ..\bin\Content.Server\data\ZNetworkSaves\MossyTemple

Все что вам осталось - это скопировать эти файлы в ..\Resources\Maps\_CE\Dungeon\MossyTemple

Итог

Итого, чтобы добавить 1 комнату в процедурную генерацию, вам нужно добавить 1 прототип комнаты, и обновить маппинг-атлас. Этого достаточно, чтобы даже не перезапуская игру сделать restartroundnow и пойти в данж чтобы поискать места где она сгенерировалась (можете временно повышать weigth чтобы увеличить шансы встретить)