Một số thuật toán lý tưởng cho thế hệ ngục tối 2D giống Rogue là gì? [đóng cửa]


47

Một số tài nguyên tốt liên quan đến việc tạo nội dung thủ tục trong bối cảnh tạo ngục tối là gì?

Bài viết gần nhất tôi có thể tìm thấy là Thuật toán để tạo ra một mê cung 2d , không hoàn toàn là thứ tôi đang tìm kiếm. Các tính năng, chẳng hạn như phòng và hành lang kết nối, là lý tưởng.

Cảm ơn!


1
Ngoài ra, hãy xem thế hệ mê cung .
Anthony

1
Có một số bài viết về chủ đề này tại RogueBasin
PATRY Guillaume

Câu trả lời:


27

Điều này đã được trả lời ít nhiều trước đây. Điểm dừng đầu tiên của bạn phải là http://pcg.wikidot.com/

Vì tôi đã bị buộc tội vì đây không phải là một câu trả lời hữu ích (thực sự? Ai đó hỏi về một tài nguyên và tôi đăng một liên kết đến wiki liên quan đến chủ đề này? ), trang này trên wiki đề cập cụ thể đến các trình tạo Dungeon và liên kết đến các bài viết khác nhau về chủ đề này.
http://pcg.wikidot.com/pcg-alerskym: dungeon-

generation Tôi vẫn khuyên bạn nên duyệt toàn bộ wiki, vì việc tạo nội dung theo thủ tục chỉ là một cách tiếp cận rất sáng tạo và mọi ý tưởng đều hợp lệ. Đó là một thách thức tư duy bên - và một niềm vui ở đó.


+1 cho "tất cả các ý tưởng là hợp lệ", nhưng tôi muốn làm rõ về điều đó: Tất cả các ý tưởng đều hợp lệ, nhưng một số ý tưởng sẽ hoạt động tốt hơn những ý tưởng khác. Ý tưởng <máy tính mơ hồ của bạn ở đây> sẽ hoạt động , và có thể là những gì bạn muốn, nhưng có nhiều cách khác để thực hiện nó sẽ hiệu quả hơn, ngẫu nhiên hơn, gắn kết hơn, tùy biến hơn hoặc bất kỳ sự kết hợp nào, trừ khi bạn là thực sự tốt hoặc thực sự may mắn
Nic Hartley

20

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.

nhập mô tả hình ảnh ở đây

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.


10

Nếu bạn thích đọc mã và có thể phân tích cú pháp C #, tôi có thể đề xuất trình tạo dungeon mà roguelike Amaranth của tôi sử dụng không? Nó đây rồi . Nó xử lý các phòng được kết nối, các tính năng mở rộng và một số nội dung hay khác.

Nếu bạn kéo xuống và xây dựng toàn bộ dự án, sẽ có một công cụ độc lập sẽ tạo và vẽ các ngục tối để bạn có thể điều chỉnh nó và xem nó hoạt động như thế nào.


1
Tôi đã chạy qua Amaranth giống như nhiều tháng trước, nhưng tôi đã quên tên khi tôi bước vào thế hệ ngục tối. Cảm ơn các liên kết!
Gabriel Isenberg

2
Bài viết của bạn tại journal.stuffwithstuff.com/2014/12/21/rooms-and-mazes là thực sự tốt quá, tôi sử dụng một phiên bản sửa đổi điều đó với một vài tính năng bổ sung như hành lang khác nhau gen động cơ, vv
Tobsta

3

Tất cả đều là những ý tưởng tuyệt vời. Tôi đã lấy một ít từ RogueBasin và pcg.wikidot.com, và đã viết bài thực hiện của riêng tôi trong C #.

Tôi thực sự thích vẻ ngoài 'tự nhiên' của các cấp độ giống như hang động có thể được tạo ra bằng cách sử dụng phương pháp automata di động. Để hiểu ý của tôi về phương pháp automata di động, hãy tưởng tượng Trò chơi cuộc sống của Conway. Mã của tôi sử dụng phương thức được gọi là phương pháp 4-5, có nghĩa là một ô sẽ trở thành một bức tường nếu nó là một bức tường và 4 hoặc nhiều hơn chín hàng xóm của nó là các bức tường, hoặc nếu nó không phải là một bức tường và 5 hoặc nhiều hàng xóm trở thành các bức tường. Tôi bắt đầu bằng cách lấp đầy bản đồ một cách ngẫu nhiên bằng các bức tường hoặc không gian, sau đó truy cập từng vị trí x / y lặp đi lặp lại và áp dụng quy tắc 4-5. Để giúp giảm bớt vấn đề hình thành các hang động bị cô lập, sau khi lấp đầy bản đồ một cách ngẫu nhiên, tôi xóa một đường ngang trên bản đồ, đặt từng ô vào một khoảng trống thay vì một bức tường, trước khi áp dụng quy tắc 4-5 cho mỗi ô.

Bạn có thể xem mã cho lớp trình xử lý bản đồ của tôi và mọi cải tiến tôi thực hiện ở đây

hoặc một phiên bản lưu trữ ở đây .


2
Câu hỏi này có rất nhiều phiếu bầu và sẽ tốt hơn, nếu bạn có thể mở câu trả lời này thêm một chút nữa. Liên kết có xu hướng chết, cuối cùng, vì vậy hãy cố gắng trả lời, vì vậy không cần phải nhấp vào liên kết. Làm thế nào mà làm việc? Ý chính là gì? Nó khác với các thuật toán khác như thế nào?
Katu

1
Các liên kết thực sự đã chết.
htmlcoderexe

2

Tôi nghĩ rằng nơi trực tiếp nhất để tìm thấy điều này là thực sự nhìn vào mã nguồn. Hai người chơi chính trong lĩnh vực này, Angband và Nethack, đều là nguồn mở.


3
Mặc dù nguồn mở, từ những gì tôi nhớ lại không phải là nguồn tài liệu cực kỳ tốt hoặc nguồn minh bạch hoặc nguồn được viết để học hỏi từ nguồn. Nhìn chung, chúng rất dễ bị hack, nhưng khó hơn nhiều để tìm kiếm tổng thể.
Tom Hudson

Có thể bản gốc không phải là tài liệu tham khảo tuyệt vời, nhưng có một số lượng lớn các biến thể, một số trong đó là tuyệt vời. Ví dụ, nhà phát triển UnAngband đã thực hiện một số cải tiến cho thế hệ ngục tối và viết một loạt các bài đăng blog tuyệt vời , vì vậy bạn chắc chắn có thể sử dụng các ý tưởng nếu không phải là mã.
congusbongus

Nguồn NetHack nổi tiếng là khó hiểu. Trình tạo dungeon (MỘT trong số chúng) được trải đều không dưới BA tệp C và khoảng 15 chức năng
Élektra
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.