Làm thế nào để thực hiện tìm đường starcraft?


8

Tôi đã cố gắng tìm ra cách triển khai thứ gì đó như tìm đường trong Starcraft 2. Tôi không tìm kiếm tất cả các tính năng phức tạp như đổ xô, xếp hàng, v.v. Thực tế tôi thích cách Starcraft 1 các đơn vị sẽ can thiệp vào nhau khác Nhưng tôi muốn một công cụ tìm đường tốt hơn so với sử dụng trong Starcraft 1.

Từ các tìm kiếm của Google, tôi đã thực hiện các câu trả lời khác nhau có liên quan đến A * qua lưới điều hướng và / hoặc xử lý một số loại "biểu đồ khả năng hiển thị". Nhưng tôi đã nhận được một số câu trả lời mâu thuẫn hoặc không rõ ràng về những gì tôi nên làm.

Một điều tôi đọc được có liên quan đến việc thực hiện A * trên các đỉnh của lưới tam giác (lưới điều hướng). Và sau đó bằng cách nào đó "đi thẳng ra con đường" mà tôi không biết làm thế nào. Nhưng điều đó không đảm bảo sự tối ưu phải không?

Một câu hỏi khác mà tôi có là làm thế nào để tìm đường dẫn starcraft 2 đối phó với thực tế là các đơn vị là các đĩa có bán kính hữu hạn và không phải là điểm khi xử lý các góc? Và làm thế nào để đối phó với các chướng ngại vật năng động như các đơn vị nhàn rỗi hoặc thậm chí các đơn vị di chuyển khác.

Tôi đang tìm kiếm một số giải thích chi tiết nghiệt ngã và không phải là tổng quan siêu cấp chung chung mà điển hình trong kết quả tìm kiếm.

Nếu nó quan trọng tôi đã xem Ghi chú của Amit về Tìm kiếm đường dẫn . Tôi đã nghe nói nhưng chưa đọc Hình học tính toán: Thuật toán và ứng dụng . Và một bài đăng trên blog về một bài thuyết trình điều hướng AI tại GDC 2011 đã đề cập rằng Starcraft 2 sử dụng phép tam giác delaunay bị ràng buộc cho một điều hướng. Mặc dù bài đăng trên blog có đề cập đến việc điều khiển Boids và "phân tích đường chân trời", nhưng nó không đề cập chính xác cách thức tìm đường cốt lõi được thực hiện trên navmesh.


các đơn vị khác bị đẩy ra khỏi đường, bạn sẽ thấy chúng va vào nhau và trượt dọc theo nhau khi chúng cố gắng đạt đến điểm tiếp theo
ratchet freak

3
Tôi nghĩ rằng hầu hết các câu hỏi của bạn sẽ được trả lời nếu bạn kiểm tra cột liên quan ở bên phải. Ví dụ: gamedev.stackexchange.com/questions/20392/ trên gamedev.stackexchange.com/questions/54361/ trên gamedev.stackexchange.com/questions/28041/ . Về cơ bản, nghiên cứu thêm một chút sẽ làm sáng tỏ mọi thứ cho bạn.
MichaelHouse

Câu trả lời:


10

Nếu bạn đã cài đặt Starcraft 2, hãy mở trình chỉnh sửa bản đồ và chuyển đổi đường dẫn . Bạn sẽ có thể thấy lưới hải quân được xây dựng như thế nào khi bạn đặt các tòa nhà và các chướng ngại vật khác xung quanh.

Thực tế tôi thích làm thế nào trong Starcraft 1, các đơn vị sẽ giao thoa với nhau. Nhưng tôi muốn một công cụ tìm đường tốt hơn so với sử dụng trong Starcraft 1.

Không nên là một vấn đề - việc tìm đường của Starcraft 1 thật ngớ ngẩn. Bài đăng blog này của một trong những lập trình viên nói về nó.

Một điều tôi đọc được có liên quan đến việc thực hiện A * trên các đỉnh của lưới tam giác (lưới điều hướng). Và sau đó bằng cách nào đó "đi thẳng ra con đường" mà tôi không biết làm thế nào. Nhưng điều đó không đảm bảo sự tối ưu phải không?

Đó là về việc làm cho AI không bị câm nhiều hơn tối ưu. Các đơn vị của bạn kết thúc với chuyển động zig-zag giữa các nút nếu bạn không áp dụng một chút làm mịn.

Khi thực hiện lập kế hoạch đường đi, bạn sẽ có một giai đoạn sàng lọc trong đó bạn xem xét các nút mà đơn vị của bạn cần đi qua để đạt được mục tiêu của họ và sau đó bạn bắt đầu loại bỏ các nút dư thừa ở giữa đường mà chúng ta không cần theo, tức là chúng ta có thể trực tiếp đi từ nút A đến nút C qua B mà không có xung đột tĩnh, vì vậy bỏ qua B hoàn toàn.

Điều này kết thúc thẳng ra con đường.

Tôi đang tìm kiếm một số giải thích chi tiết nghiệt ngã và không phải là tổng quan siêu cấp chung chung mà điển hình trong kết quả tìm kiếm.

Nếu bạn muốn một lời giải thích chắc chắn, điều này đã được trình bày độc đáo trong sách (với mã trò chơi đang hoạt động, thậm chí). Vì vậy, nếu bạn có một số tiền để đốt, hãy xem Lập trình trò chơi AI theo ví dụ và / hoặc Trí tuệ nhân tạo cho các trò chơi . Cả hai đều thảo luận về những chủ đề này rất sâu sắc.

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.