Маппинг процедурных комнат¶
Чтобы создавать новые комнаты, у вас должен быть поднят локальный сервер на котором вы можете работать.
1. Открытие маппинг атласа¶
Первое что вам нужно сделать, это открыть маппинг-атлас уровня который вы хотите редактировать:
MossyTemple является как раз одной из таких карт-атласов, которую мы хотим отредактировать.
Вы окажетесь на нижнем слое маппинга. znetwork все таки является связкой из несколльких z-уровней.
вы можете использовать кнопки перехода вверх и вниз для редактирования нижнего декоративного слоя и верхнего геймплейного.
2. Визуализация зарегестрированных комнат¶
Следующая полезная команда - dungen_atlas_visualize, позволяет включать и выключать отображение границ зарегестрированных комнат для определенной карты. Так как мы находимся на MossyTemple, то команды следующие:
dungen_atlas_visualize MossyTemple- чтобы включить визуализациюdungen_atlas_visualize- чтобы выключить
Все прототипы комнат для этой карты хранятся в ..\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, yheight:Высота комнаты. В z-этажах. Пока что всегда 2.zLevelMap:На какой карте-атласе расположена эта комната.offset:Координаты нижнего-левого угла комнаты.weigth:Вероятность спавна этой комнаты в данже. По умолчанию 1. 0 = Никогда не будет спавнится. 2 = Будет появляться в 2 раза чаще остальных комнат.
Координату определенного тайла можно узнать следующим образом:
1) Нажмите F3 для включения дебаг-оверлея
2) Наведите курсор на тайл который вас интересует
3) Смотрите сюда:
Если ваш локальный сервер собран в конфигурации Debug или Tools - Вы можете менять значения в файлах прототипах и в реальном времени видеть изменения на маппинг-атласе:
3. Непосредственно, маппинг¶
Придумайте идею вашей комнаты. Она должна - Быть достаточно унивкальна чтобы не повторяться с существующими комнатами. - Вписываться в эстетику уровня.
Расположите комнату на атласе. Я группирую комнаты по типам:
Маркеры соединений комнат¶
Обязательно расположите маркеры соединений CERoomPasswayMarker:
Располагайте их на границах комнат, развернув наружу. В этих местах комнаты будут соединяться друг с другом.
Маркеры бездн¶
Бездны пока что сделаны в виде CEChasm маркеров
Не забывайте ставить их, иначе игроки смогут ходить по воздуху в этих местах.
Лут и противники¶
Не располагайте статичного лута и противников!
Весь лут и опасности создаются внутри генерации процедурно.
Вы можете ставить CESpawnerRandomDungeonProp для мест, где будут появляться горшки, сундуки и другие предметы, либо любые столы. На столах будут процедурно создаваться ключи, зелья и другой ценный лут.
Сохранение¶
После того как вы замаппили ваши случайные комнаты, сохраните вашу работу командой znetwork-save [ID] MossyTemple:
обязательно вводите тоже самое название (в нашем случае MossyTemple) чтобы файлы были проименованы корректно.
Если ошибок нет, вы получите сообщения:
Затем, вы сможете найти папку с вашими сохраненными картами по пути:
..\bin\Content.Server\data\ZNetworkSaves\MossyTemple
Все что вам осталось - это скопировать эти файлы в
..\Resources\Maps\_CE\Dungeon\MossyTemple
Итог¶
Итого, чтобы добавить 1 комнату в процедурную генерацию, вам нужно добавить 1 прототип комнаты, и обновить маппинг-атлас.
Этого достаточно, чтобы даже не перезапуская игру сделать restartroundnow и пойти в данж чтобы поискать места где она сгенерировалась (можете временно повышать weigth чтобы увеличить шансы встретить)