В данной статье рассмотрим способ процедурной генерации подземелий, с помощью рекурсивную функцию. Сам проект будет 2D с видом сверху. Комната будет занимать всё окно игры. У меня комната занимаем весь дисплей и имеет размеры 800x800, display соответственно тоже.  Какой вообще алгоритм, сначала создадим двумерный массив состоящий из 0(как написано в документации к Godot, лучше использовать словарь векторов, так и сделаем). Дальше в центр этого массива ставим 1-ку(если 0 комнаты нет, если 1, то комната есть) и для всех соседних элементов массива вызываем функцию которая возможно поставит 1-ку(создаст комнату), а возможно нет. Дальше для всех элементов в которых функция поставила 1-ку, опять вызываем эту функцию(рекурсивно).  Создайте сцену главным узлом выберите Node2D. И добавьте скрипт. Для начала объявим несколько переменных, куда без них: Пояснять что-то не вижу смысла. Для начала напишем функцию, которая будет создавать комнату в заданных координатах массива, если это возможно: Теперь у нас есть функция, которая создаёт в заданных координатах комнату и возвращает их( в виде вектора, тк используем словарь), либо возвращает вектор (-1,-1), именно такой вектор, потому-что мы сами не будет создавать вектора с координатами меньше, чем (0,0). Дальше напишем функцию, которая будет вызывать функцию создания комнаты для 4 соседних координат, в качестве аргумента будем принимать координаты. После будет вызывать сама себя, для созданных комнат: Теперь давайте создадим функцию, которая будет генерировать изначальный массив( состоящий из 0), ставить первую комнату и запускать рекурсию: На этом генерация подземелья закончена. Дальше мы создадим наши комнаты на сцене игры и добавим комнатам двери. Для начала создайте несколько сцен комнат, примерно, как должно быть: 4 маркера: Door1...Door4 - это местоположения возможных дверей, так-же в маркерах стоит выставить угол поворота двери. StaticBody2D и CollisionShape2D, нужны чтобы будущий игровой персонаж не ходил по стенам. Скрипт комнаты: Скрипт самый базовый, нам просто нужна комната и ничего большего. Таких комнат следует сделать несколько. Дверь должна выглядеть примерно так: Когда игрок соприкасается с collisionShape2D, то он переходит в следующую комнату. Скрипт Двери: Тут тоже всё понятно. Всё наконец-то с небольшими приготовлениями закончили. Для начала напишем пару функция для создания массива с прелоадами сцен: Теперь у нас есть массив с прелоадами сцен. Дальше напишем функции для полного создания подземелья. Давайте немного обсудим функцию add_one_door, конкретно аргумент n, что это вообще такое. Это порядковый номер потомка дерева сцены. Как это выглядит у меня: потомок с индексом 0- Sprite2D, следующие 4 потомка как раз наши маркеры, в которых записано местоположение и поворот двери, Door1 - потомок с индексом 1, указываем на положение верхней двери. Door2 - потомок с индексом 2, указывает на положение правой двери и т.д. по часовой. У всех сцен комнат должны быть одинаковые индексы у Marker. В функции _ready() следует вызывать функции в следующем порядке: Теперь у нас генерируется подземелье, но на него никак не посмотреть. Добавьте к дереву сцены игры Camera2D. В InputMap добавьте clickright - ПКМ и clickleft - ЛКМ. добавьте функцию _process к имеющемуся скрипту: При ПКМ камера отдаляется, при ЛКМ приближается. и задаём изначальное местоположение камеры в центре карты: Я для наглядности сделал сцены просто разным цветом, вместо комнат с какими-то декорациями. Маленькие подземелья: Средние подземелья: СЛИШКОМ огромные подземелья: Как можно заметить, чем больше подземелья, тем интереснее его форма. По времени работы не сказал бы, что генерация занимаем много времени, то-есть пустые комнаты генерируются крайне быстро, но лучше загружать какой-нибудь загрузочный экран, при входе  в подземелье сгенерированное таким образом. Но точно не самый быстрый и лучший способ, но как вариант для какого-нибудь проекта будучи сильно ограниченным во времени его реализации, подойдёт. Давайте на последок создадим простого персонажа, который будет ходить по нашему подземелью.  Дерево элементов: Самое стандартное дерево, ничего большего не надо. Скрипт персонажа: Тоже ничего не обычного, просто перемещаемся в 8-ми направлениях и обрабатываем коллизию с дверью(у двери есть эта функция). Теперь на камеру главной сцены тоже добавьте скрипт, немного изменим поведение камеры, чтобы она следовала за персонажем: при переходе в другую комнату камера будет тоже перемещаться в центр этой комнаты. Измени функцию _ready сцены с картой: Теперь можно побегать по этой карте. Ну вот, примерно такой алгоритм можно использовать для генерации подземелья, конечно чтобы получались более интересные подземелья алгоритм нужно дорабатывать под конкретные нужды.