2008-09-20 37 views
5

Tôi đang làm việc trên một trò chơi nhiều người chơi đơn giản, trong đó 2-4 người chơi được đặt tại các điểm nhập riêng biệt trong mê cung và cần đạt được điểm mục tiêu. Tạo ra một mê cung nói chung là rất dễ, nhưng trong trường hợp này, mục tiêu của trò chơi là đạt được mục tiêu trước mọi người khác và tôi không muốn thuật toán thế hệ quyết định ưu tiên người chơi hơn người khác.Thuật toán tạo mê cung tối ưu nhiều người chơi

Vì vậy, tôi đang tìm một thuật toán tạo mê cung trong đó đường dẫn tối ưu cho mỗi người chơi từ điểm bắt đầu đến mục tiêu không quá 10% bước so với đường dẫn trung bình. Bằng cách này, các cầu thủ có nhiều hơn hoặc ít hơn một sân chơi bình đẳng. Bất cứ ai có thể nghĩ ra một thuật toán như vậy?

(Tôi đã có một ý tưởng như nó đứng, nhưng nó không phải cũng nghĩ ra và dường như ít hơn so với tối ưu -. Tôi sẽ đăng nó như là một câu trả lời)

Trả lời

7

Một giải pháp thay thế cho câu trả lời của freespace là tạo ra một mê cung ngẫu nhiên, sau đó gán cho mỗi ô một giá trị đại diện cho số lần di chuyển của mê cung (bạn có thể làm cả hai cùng một lúc nếu bạn quyết định rằng bạn đang bắt đầu từ 'kết thúc'). Sau đó chọn một khoảng cách (có lẽ là điểm cao nhất với n điểm ở khoảng cách đó?) Và đặt các cầu thủ vào ô vuông với giá trị đó.

+0

Điều này là hoàn toàn hoàn hảo - chính xác loại điều cần thiết . Cảm ơn rất nhiều! :) –

0

Giải pháp đơn giản nhất tôi có thể đưa ra với việc tạo ngẫu nhiên toàn bộ mê cung như bình thường, sau đó chọn ngẫu nhiên điểm bắt đầu và điểm bắt đầu của trình phát. Khi việc này được thực hiện, hãy tính đường đi ngắn nhất từ ​​mỗi điểm bắt đầu đến mục tiêu. Tìm trung bình và bắt đầu 'làm mịn' (loại bỏ/di chuyển các rào cản - không biết làm thế nào điều này sẽ làm việc) các đường dẫn được đáng kể ở trên nó, cho đến khi tất cả các đường dẫn nằm trong lề thích hợp. Ngoài ra, nó có thể có khả năng để có những cái thấp hơn đáng kể mức trung bình và chèn thêm các rào cản.

1

Điều gì về lần đầu tiên chọn vị trí của người chơi và mục tiêu và đường dẫn bằng nhau và sau đó xây dựng một mê cung tôn trọng đường dẫn đã xác định? Nếu các con đường không giao cắt thì dễ dàng làm việc, tôi giả sử

+0

Đây là câu trả lời hay, và có, freespace's rất giống :) Tôi nghĩ đây có thể là cách phù hợp để thực hiện. Cảm ơn vì đầu vào của bạn. –

1

Tôi sẽ tiếp cận điều này bằng cách đặt mục tiêu và điểm vào của mỗi người chơi, sau đó tạo các đường có độ dài tương tự cho mỗi mục tiêu. Sau đó, tôi sẽ bắt đầu thêm các nhánh giả dọc theo các đường dẫn này, cẩn thận để tránh liên kết với các đường dẫn của người chơi khác, hoặc có một nhánh kết nối trở lại đường dẫn. Vì vậy, về cơ bản mỗi chi nhánh là một kết thúc chết.

Bằng cách này, bạn đảm bảo các đường dẫn có độ dài tương tự nhau. Tuy nhiên, nó sẽ không cho phép người chơi tương tác với nhau. Tuy nhiên, bạn có thể đặt điều này vào, bằng cách tạo liên kết giữa các nhánh sao cho các điểm vào nhánh trên một trong hai con đường ở một khoảng cách tương tự cách xa mục tiêu. Và trên nhánh này, bạn có thể chia nhánh nhiều đầu chết hơn cho vui và lợi nhuận :-)

+0

heh, chúng tôi đều đều câm! :-) –

+0

Hmm, tôi thích điều này. Không chắc nó sẽ hoạt động như thế nào, nhưng tôi nghĩ nó đáng để bắn.Cảm ơn :) –

+0

@Vinko Vrsalovic không thấy phản ứng của bạn khi tôi bắt đầu nhập, xin lỗi: P Như họ nói, thiên tài nghĩ như nhau, và kẻ ngu không bao giờ khác nhau: P – freespace

0

Chọn điểm xuất cảnh của bạn ở đâu đó ở giữa

Bắt đầu con đường N của bạn từ đó, thêm 1 cho mỗi con đường mỗi vòng lặp, cho đến khi họ được miễn là bạn muốn họ được.

Có N điểm bắt đầu của bạn và tất cả đều có cùng độ dài.

Thêm các nhánh bổ sung ngoài đường kẻ cho đến khi mê cung đầy.

Các vấn đề liên quan