Đường cong 2D được tạo theo thủ tục trên bản đồ


9

Tôi đã thử nghiệm các thuật toán để tự động tạo bản đồ đường cho trò chơi tôi đang làm việc.

Tôi đang sử dụng các trò chơi " Kingdom Rush " làm điểm tham chiếu vì chúng có một số bản đồ đẹp mắt.

Ví dụ về bản đồ đường bộ từ trò chơi "Kingdom Rush"

Tôi chưa quen với việc tạo nội dung theo thủ tục và đã tự hỏi liệu có ai ở đây có bất kỳ gợi ý nào không. Tôi đã thử nghiệm tạo các cấu trúc liên kết đường ngẫu nhiên, ví dụ một vài nút nguồn / nút nguồn, một số nút bên trong (ngã ba và hợp nhất) và một số nút chìm thoát, sau đó sử dụng thuật toán bố trí biểu đồ để tạo bản đồ đường thực tế dựa trên thông tin này.

Đây là một ví dụ sử dụng thuật toán Fruchterman-Reingold để bố trí đường:

Bản đồ do PCG tạo 1

Biểu đồ màu xanh sử dụng một số điểm điều khiển Bézier được tạo ngẫu nhiên để làm cho các cạnh trông bớt thẳng hơn.

Đây là một ví dụ khác được tạo bằng cùng một thuật toán nhưng các số ngẫu nhiên khác nhau:

Bản đồ do PCG tạo 2

Vấn đề là hầu hết các kết quả cuối cùng trông khá giống nhau và tôi không chắc mình có thể thêm quy tắc nào để cải thiện khả năng kiểm soát và tính đa dạng của các bản đồ được tạo theo thủ tục.

Mọi lời khuyên đánh giá cao.


Câu hỏi tuyệt vời. Các hình ảnh tham khảo giúp ích rất nhiều, bao gồm cả những thứ bạn đã thử cho đến nay. Bạn có thể giải thích thêm một chút về ý nghĩa của 'khả năng kiểm soát' không? Có rất nhiều thứ bạn có thể kiểm soát; một số ví dụ sẽ giúp.
Pikalek

Chào! Cảm ơn vì sự trả lời. Theo khả năng kiểm soát, ý tôi là có thể viết một số quy tắc nhất định (ví dụ: không đặt các giao điểm gần nhau hơn một khoảng cách nhất định; không cho phép các góc sắc nét hơn x độ) và thuật toán tạo có tôn trọng các ràng buộc này không? Ngoài ra, các quy tắc này không nên cản trở khả năng của thuật toán để tạo ra một loạt các bản đồ thú vị. Sự khích lệ của bạn là rất nhiệt tình Tôi đã bắt đầu nản lòng với các chi tiết để làm việc này!
SixTwoOne

Câu trả lời:


2

Đường ví dụ của bạn có các đường cong trên các đoạn giữa các giao lộ nơi đường được tạo của bạn không có. Bạn đã thử thêm nhiều điểm kiểm soát "dư thừa" trên đường chưa?

Làm thế nào về việc có số vòng lặp là một tham số thế hệ? Ngoài ra "độ cong" (số điểm kiểm soát dự phòng) Số lần thoát sẽ là một số khác.

Tôi nghĩ bạn cũng có thể kết thúc những con đường khi chúng chạm vào giao lộ bằng cách cho chúng điểm kiểm soát kép. Điều đó sẽ làm cho các giao lộ trông tốt hơn.


Tôi nghĩ rằng đề nghị điểm kiểm soát trung gian là tốt! Thuật toán bố trí đồ thị mà tôi đang sử dụng hiện tại chỉ tạo ra các đường thẳng, nhưng tôi có thể đặt một nút "uốn cong" ở đâu đó giữa hai nút khác và sử dụng một heuristic để đặt các điểm kiểm soát gần đó trông sẽ đẹp hơn. Tôi chắc chắn cần phải xem xét điều này nhiều hơn, vì nó cũng liên kết với việc tạo ra các giao lộ đẹp hơn.
SixTwoOne
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.