Các thuật toán cho lượng mưa + tạo sông trong địa hình được tạo theo thủ tục


52

Gần đây tôi đã bị mê hoặc bởi những điều có thể được thực hiện với địa hình thủ tục và đã bắt đầu thử nghiệm xây dựng thế giới một chút. Tôi muốn có thể tạo ra những thế giới giống như pháo đài Người lùn với quần xã sinh vật được tạo ra từ việc ghép các bản đồ khác nhau lại với nhau.

Vì vậy, bước đầu tiên đã được thực hiện. Sử dụng thuật toán hình vuông kim cương, tôi đã tạo ra một số hình ảnh đẹp. Bước tiếp theo là tôi muốn thêm một số tính năng nước và chúng được tạo ra một cách thực tế với lượng mưa. Tôi đã đọc về một vài cách tiếp cận khác nhau, chẳng hạn như bắt đầu từ các điểm cao của bản đồ và "bước" xuống điểm lân cận thấp nhất, gộp / xói mòn khi nó đi xuống mực nước biển.

Có bất kỳ thuật toán tài liệu với điều này hoặc chúng là nhiều hơn ra khỏi vòng bít?

Sẽ thích bất kỳ lời khuyên / suy nghĩ.


Tôi đã triển khai các bit và phần từ thuật toán được mô tả trong bài viết này .
hỗn loạn Kỹ thuật viên

Câu trả lời:


39

Amit Patel, một người dùng của trang web này, đã tạo ra một nguồn thông tin tuyệt vời về thế hệ ngẫu nhiên chắc chắn sẽ được sử dụng cho bạn.

Hơn nữa có một số câu hỏi / câu trả lời tuyệt vời về việc tạo thủ tục trên trang web này.

Tạo đường / sông trên bản đồ lưới 2d

Thế hệ thủ tục định hướng vào các tính năng chơi trò chơi

Làm thế nào tôi có thể tạo ra các hồ và sông ngẫu nhiên trong trò chơi của mình?

Tạo bản đồ ngẫu nhiên


35

Quay lại khi tôi thử nghiệm loại điều này (cuối những năm 1990), tôi đã đọc một số bài báo và sách để tìm hiểu về dòng nước, nhưng tôi đã không ghi lại những gì tôi đã xem. Cuối cùng tôi đã làm việc của mình vì tôi muốn xử lý xói mòn. Tôi muốn các con sông sản xuất hẻm núi và vùng ngập nước. Tôi muốn các hồ chứa đập để lấp đầy trầm tích. Tôi muốn các dòng sông tạo ra các hiệu ứng như uốn khúc và hồ oxbow. Tôi muốn kênh rạch để tưới và dẫn nước. Tôi muốn lũ lụt để phá hủy các trang trại và nhà ở vùng đồng bằng ngập lụt.

Tôi giữ một số ghi chú (liên kết) trong phần Địa lý của trang này . Có một bài báo Jos Stam là phải đọc. Thật không may, tôi không bao giờ tổ chức các ghi chú. Thật không may, trò chơi dành cho OS / 2 vì vậy tôi không thể dễ dàng cung cấp cho bạn một chương trình thực thi có thể chạy được. Và thật không may, mã của tôi rất tệ, nhưng nếu bạn muốn xem, hãy xem water.cpp trong mã nguồn (zip).

Những điều tôi đã chơi trong mô phỏng của tôi (không phải tất cả thực tế):

  • Khu vực gần sông có đất ẩm; khu vực xa sông có đất khô. Độ ẩm thực vật bị ảnh hưởng. Thảm thực vật làm chậm dòng nước.
  • Mưa tạo ra nước ở tất cả mọi nơi, một số thời gian. Sau đó nó chảy xuống dốc. Sau đó nó bay hơi và được hấp thụ bởi mặt đất. Cơn mưa khắc những dòng sông.
  • Lò xo tạo ra nước mọi lúc, nhưng chỉ ở một vài địa điểm. Các suối giữ cho các kênh sông đầy. Tôi đã không mô phỏng các lớp đá hoặc dòng nước ngầm; Tôi chỉ đặt lò xo ngẫu nhiên trên núi.
  • Nước chảy có đà. Nếu tôi nhớ đúng, điều này rất quan trọng để tạo ra những dòng sông uốn khúc.
  • Nước di chuyển nhanh nhặt cặn lắng; tiền gửi nước chậm di chuyển trầm tích trước nó. Điều này khắc ra thung lũng sông.
  • Trong quá trình tạo bản đồ ban đầu, tôi đã tăng tốc dòng chảy và xói mòn; Trong quá trình chơi, nó chạy ở tốc độ bình thường.

Nhìn chung, kinh nghiệm của tôi là tất cả những thứ này khá thú vị để chơi, nhưng phải mất rất nhiều phương pháp phỏng đoán và điều chỉnh để làm cho nó hoạt động. Tôi chưa bao giờ đến mức có thể nói rằng việc tạo ra dòng sông cảm thấy tự nhiên và không thể tránh khỏi mà không cần điều chỉnh. Điều đó thật thú vị (cả với tư cách là một lập trình viên và một người chơi) mà tôi đã dành nhiều năm cho nó, và không bao giờ hoàn thành phần còn lại của trò chơi. :)


12
Đơn giản chỉ cần nói tên của anh ấy và anh ấy sẽ đến.
MichaelHouse

3
@ Byte56 Anh ấy giống như Nến của stackexcha ....
DampeS8N

2
Bạn đã truyền cảm hứng cho tôi để viết một bài cải tiến dựa trên bài viết lưới lục giác của bạn và bây giờ bạn truyền cảm hứng cho tôi một lần nữa!
Adam Arold

1

Hầu hết các triển khai tôi đã thấy hoặc là kết hợp một "bản đồ sông" (sử dụng một dải hẹp từ tiếng ồn Perlin hoặc một số phương pháp tương tự) hoặc phương pháp "hạt mưa" mà bạn đề cập.

Dưới đây là một vài điểm xuất phát:

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.