Есть много способов пойти в зависимости от того, как именно вы этого хотите. Вот примерный план того, как, по-моему, подойдет ваше описание:
Сначала сгенерируйте каналы. Затем начните размещать дома случайным образом, для каждого дома, который вы размещаете, разместите дорогу перед ним и нарисуйте дорогу от этого участка до существующей дорожной сети, если это невозможно или если размещение дороги впереди приводит к уродливому блоку 2x2 дорога переместить дом. Определите некоторые дорожные точки, которые находятся близко друг к другу, но далеко друг от друга, следуя существующим дорогам, и попробуйте сделать несколько ярлыков для них.
Такие вещи больше всего требуют экспериментов и опыта. Часто вы получаете хорошие результаты, делая некоторые детали случайным образом, определяя, соответствует ли он некоторым критериям, и отменяйте, и повторяйте, если это не так.
Для выполнения этой конкретной задачи вам, безусловно, понадобится хорошее понимание базовых путей, если вы не являетесь экспертом, прочитайте эту тему. И помните, поиск пути не должен быть просто кратчайшим путем, поскольку в последней части моего описания вы могли бы придать вес повторному использованию путей, которые уже существуют.
Это совсем не простая задача, если вы застряли, вернитесь, покажите нам свой код и пример вывода и подробно объясните, как бы вы хотели, чтобы он отличался.