Hay muchas formas de ir dependiendo de cómo lo desee exactamente. Aquí hay un resumen de una forma que creo que se ajustará a su descripción:
Primero genera los canales. Luego comience a colocar casas al azar, para cada casa que coloque, coloque la carretera frente a ella y dibuje una carretera desde esa pieza hasta la red de carreteras existente, si no es posible o si coloca la carretera al frente da como resultado un feo bloque de 2x2 de Reposicionar la casa por carretera. Detecta algunos puntos de carretera que están cerca uno del otro pero muy separados siguiendo las carreteras existentes e intenta hacer algunos atajos para ellos.
Este tipo de cosas, sobre todo, requiere experimentación y experiencia. A menudo obtendrá buenos resultados haciendo algunos detalles de manera aleatoria, determine si cumple con algunos criterios y deshaga y vuelva a intentar si no lo hace.
Para esta tarea exacta, sin duda también necesitará una buena comprensión de la búsqueda básica de rutas, a menos que ya sea un experto, lea el tema. Y recuerde, la búsqueda de rutas no tiene que ser solo la ruta más corta, para la última parte de mi descripción es posible que desee dar algo de peso a la reutilización de rutas que ya están allí.
Esto no es una tarea fácil, si te quedas atascado, vuelve y muéstranos tu código y algunos resultados de ejemplo y explica en detalle cómo te gustaría que fuera diferente.