Tôi đã xoay sở để có được mức độ tìm kiếm hợp lý bằng cách sử dụng thuật toán sau, dựa trên lưới ô vuông:
Đầu tiên, tạo một bộ phòng. Thông số ngẫu nhiên sẽ xác định kích thước của phòng và số lượng của chúng. Một thuật toán thích ứng thậm chí có thể định nghĩa một số khu vực được tạo thành từ hành lang lớn và những khu vực khác có phòng rất nhỏ.
Sau đó, bạn cần đảm bảo rằng tất cả các phòng được kết nối với nhau. Đối với điều này, hãy chạy một đường dẫn để đào hành lang (giả sử, A *) ở giữa mỗi cặp phòng, tạo trọng lượng được chọn ngẫu nhiên cho các không gian hiện có (phòng hoặc hành lang khác) so với không gian chưa được khắc (các bức tường). Nếu chênh lệch về trọng lượng là nhỏ, thì việc đào hành lang mới sẽ có giá rẻ một cách hợp lý và thuật toán sẽ tạo ra nhiều hành lang ở giữa các phòng, với nhiều khả năng đi từ nơi này sang nơi khác. Nếu chênh lệch trọng lượng cao, thì thuật toán sẽ thích đi qua các phòng và hành lang hiện có, làm cho các đường đi trở nên quanh co hơn và có ít lựa chọn hơn để đến đích nhất định.
Điều này cho phép bạn, từ một số lượng nhỏ các tham số, tạo ra các mức độ nhìn rất khác nhau, từ các hội trường lớn thưa thớt với các hành lang nhỏ liên kết chúng với một mê cung trông như tổ ong của các buồng liên kết chặt chẽ.
Dưới đây là một ví dụ về mức độ được tạo ra.
Dựa trên thuật toán này, bạn có thể thêm trang trí tường phụ thuộc vào khu vực, làm cho hành lang nhỏ hơn hoặc lớn hơn, làm cho các phòng đặc biệt, v.v.