Cấu trúc dữ liệu để thể hiện các kết nối giữa các quốc gia trên bản đồ


9

Trong một trò chơi tôi đang phát triển cho một khách hàng, một khái niệm trò chơi quan trọng liên quan đến việc di chuyển trên bản đồ. Trong trường hợp này, kích thước và hình dạng và các quốc gia khác nhau là không liên quan: di chuyển từ một quốc gia sang một quốc gia lân cận được tính là một bước duy nhất.

Tôi đang cố gắng tìm ra cấu trúc dữ liệu tốt nhất để thể hiện nội bộ các kết nối giữa các quốc gia. Đối với một quốc gia nhất định, trò chơi cần biết quốc gia nào liền kề, cả hai để biết người chơi có thể di chuyển theo cách nào cũng như cho phép AI của trò chơi vạch ra các tuyến đường, xác định đường đi có thể từ quốc gia này sang quốc gia khác. AI cũng cần đánh giá một quốc gia được kết nối tốt như thế nào, không chỉ với các nước láng giềng liền kề mà còn với các nước láng giềng của các quốc gia đó, v.v.

Tôi đã tìm ra một vài khả năng nhưng chúng có vẻ vô duyên và kém hiệu quả. Bởi vì AI sẽ cần tính toán một loạt các tuyến đường có thể để đưa ra quyết định tốt về chuyển động của nó, "không hiệu quả" là rất có vấn đề.

Tôi nghi ngờ rằng đây là một câu đố CS khá phổ biến và có một giải pháp chung, nhưng tôi không thể tìm thấy nhiều bằng cách tìm kiếm. Mọi góp ý đều được chào đón.


Nếu tôi nên hỏi điều này trên GameDev.StackExchange, hãy cho tôi biết. Tôi đang hỏi ở đây bởi vì tôi chắc chắn rằng loại điều này là cần thiết cho tất cả các loại vấn đề phát triển và tôi không cần trợ giúp về phía "trò chơi" của nó, chỉ là phần lập kế hoạch tuyến đường.
Matthew Frederick

Bạn cần một biểu đồ hoặc ma trận kết nối (rất tiện lợi, vì việc đóng cửa rất dễ tính toán). Có lẽ bạn cần cả hai. Tìm họ.

2
Có một cái nhìn về các cấu trúc và thuật toán dữ liệu đồ thị: en.wikipedia.org/wiki/Graph_%28data_structure%29

1
Điều này không nhìn vào chủ đề với tôi. Nó nên có trên GameDev hoặc Stack Overflow, vì đây là một chủ đề quá khách quan ở đây.

Câu trả lời:



6

Chắc chắn là một đồ thị. Kiểm tra nó ở đây Lý thuyết đồ thị , về cơ bản bạn có các nút và các cạnh. Một nút có thể chứa 0 hoặc nhiều cạnh cho các nút khác.

Có rất nhiều thuật toán để tính toán con đường ngắn nhất (bước nhảy hoặc khoảng cách), kiểm tra các hạt (nhiều hơn một cách để đạt được một cái tôi), v.v.

Bây giờ, để có thể thực hiện các giải pháp hiệu quả, điều đó phức tạp hơn một chút, nhưng như mọi khi, có nhiều cách.


Tuyệt vời cảm ơn bạn. Bạn có bất cứ đề nghị cho nơi để tìm các thuật toán như vậy? Tôi không cần con đường ngắn nhất rất nhiều, nhưng những thứ như kiểm tra vòng tròn, v.v. sẽ rất tiện dụng.
Matthew Frederick

2

Như đã đề cập, bạn sẽ cần một biểu đồ biểu thị tất cả các kết nối có thể có giữa các quốc gia. Mỗi kết nối cũng sẽ giữ khoảng cách giữa hai quốc gia.

Sau đó, một thuật toán tìm đường như A * có thể được sử dụng để xác định đường đi ngắn nhất giữa hai quốc gia.

Ngoài ra còn có một số cuốn sách hay về game ai: Game AI bằng ví dụ của Mat Buckland http://www.ai-junkie.com/books/toc_pgaibe.html

hoặc loạt Trí tuệ lập trình trò chơi AI. http://www.aiwisdom.com/ Cuốn sách đầu tiên có một vài chương về tìm đường.


Tuyệt vời, cảm ơn bạn cho con trỏ cuốn sách. Dường như có rất nhiều sách về AI và các đề xuất cá nhân tốt hơn nhiều so với kết quả rộng lớn mà tôi đã nhận được từ việc tìm kiếm.
Matthew Frederick
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.