Как я это вижу.
@AkyJla дело говорит. Сначала представь что у тебя все элементы - это кубики. Первым делом тебе нужно определить самое важно в здании:
- рандомно генерим где будет на "площадке" будет задние, и где будет у него вход
- после этого раскидываем второстепенные элементы: колонны, арки и т.д.
- для каждой проверяем что она не мешает основному зданию (не пересекает и не перекрывает вход и окна)
- если всё ОК, то генерим "этажность", добавляя лестницы
- после этого можно генерить "обвесы" (растительность, мелкие торчащие фигни и прочее)