Gần đây tôi bắt đầu phát triển một nguyên mẫu trò chơi có thể tạo ra các ngục tối được tạo theo thủ tục bằng cách sử dụng một bộ sưu tập các loại phòng. Để đảm bảo các lối đi ở hành lang giữa các phòng này sẽ luôn được kết nối, tôi đã triển khai thuật toán tìm đường dẫn A * theo bản đồ lát của các phòng được đặt ngẫu nhiên.
Tuy nhiên, vấn đề với việc này là tôi không nhất thiết phải cố gắng tìm con đường ngắn nhất giữa các phòng mà trong hầu hết các trường hợp sẽ là một đường chéo. Vì theo chủ đề là một 'ngục tối', tôi muốn chúng xoay và xoay ở góc 90 độ. Bằng cách sử dụng khoảng cách Manhattan cho heuristic, tôi đã xoay sở để có được hình dạng như mong muốn nhưng tôi đã kết thúc với một vấn đề cuối cùng mà tôi đến với những người tốt bụng để giúp tôi với :).
Mặc dù bây giờ sử dụng các góc 90 độ để di chuyển đường dẫn, nhưng nó tiết kiệm khi chạy đến cuối đường dẫn (Xem hình bên dưới). Điều này làm cho toàn bộ mọi thứ ở một khoảng cách cảm thấy chật chội ở những nơi thay vì sử dụng tất cả không gian một cách hiệu quả. Xem cách đơn giản thay đổi heuristic từ khoảng cách sang khoảng cách Manhattan đã tạo ra sự khác biệt cho câu hỏi của tôi, liệu có một hàm chi phí nào tôi có thể thực hiện để đưa ra kết quả mong muốn của con đường không thông thường này không? Bất kỳ câu trả lời sẽ được đánh giá cao, cảm ơn bạn.
Ghi chú: Thuật toán cũng có quyền truy cập vào hướng thông thường của mục tiêu bắt đầu và kết thúc.