Tôi đang cố tạo trò chơi phòng thủ tháp bằng Javascript.Dọn dẹp hàng loạt astar
Đó là tất cả tiến triển tốt ngoài pathfinding ..
Tôi đang sử dụng mã ASTAR từ trang web này: http://www.briangrinstead.com/blog/astar-search-algorithm-in-javascript trong đó sử dụng một đống nhị phân (mà tôi tin là khá tối ưu)
Vấn đề tôi có là tôi muốn cho phép mọi người chặn đường dẫn của "kẻ tấn công". Điều này có nghĩa là mỗi "kẻ tấn công" cần có khả năng tự tìm đường thoát (vì ai đó có thể chỉ cắt đứt một "kẻ tấn công" đơn lẻ và nó sẽ cần phải tìm đường thoát riêng). Bây giờ 5/6 kẻ tấn công có thể pathfind tại bất kỳ một thời gian không có vấn đề. Nhưng nói rằng con đường bị chặn cho 10 + kẻ tấn công, tất cả 10 người trong số họ sẽ cần phải bắn tập lệnh pathfinding của nó cùng một lúc mà chỉ cần giảm FPS đến khoảng 1/2 mỗi giây.
Đây phải là một vấn đề thường gặp đối với bất kỳ ai có nhiều thực thể xâm nhập vào bất cứ lúc nào, vì vậy tôi tưởng tượng phải có cách tốt hơn cách tiếp cận của tôi.
Vì vậy, câu hỏi của tôi là: Cách tốt nhất để thực hiện thuật toán dẫn đường hàng loạt cho nhiều "bot" theo cách hiệu quả nhất là gì.
Cảm ơn,
James
Dường như 'findGraphNode' trong mã mà sẽ đưa tuyến tính thời gian, trong khi nó phải được dành thời gian liên tục (với một bảng băm), do đó việc triển khai đó là tối ưu. –
Tôi sẽ xem xét xem tôi có thể tăng tốc độ một chút không. Nhưng tôi nghĩ ngay cả với việc tìm đường đi hiệu quả hơn tôi vẫn sẽ kết thúc với các framerate chậm nếu tôi cố gắng và pathfind các chương trình .. Tôi bắt đầu nghĩ rằng đặt cược tốt nhất của tôi thực sự là pathfinding toàn bộ bản đồ một lần mỗi khung sau đó thiết lập một hướng trên mỗi khối có thể vượt qua để bot theo dõi .. – james
@james nếu đây là bất kỳ thứ gì giống như hầu hết các tháp phòng thủ, với giá trị bản đồ và không có các collisons phức tạp (tức là bot không va chạm với nhau hoặc các vật thể di chuyển khác, hoặc bạn xử lý điều này một cách riêng biệt) sau đó có tôi sẽ nghĩ rằng tính toán đường dẫn cho toàn bộ bản đồ sẽ là tốt nhất.Trong thực tế, có lẽ bạn thậm chí không cần phải tính toán lại toàn bộ bản đồ mỗi khung hình. Nếu bạn cẩn thận trong việc xây dựng một thuật toán, bạn sẽ có thể xác định các nút nào bị ảnh hưởng bởi thay đổi của người dùng và chỉ tính toán lại 'ngược dòng' từ các nút đó. Nghe có vẻ thú vị! – Tim