2010-10-30 27 views
11

Trong trò chơi như Warcraft 3 hoặc Age of Empires, cách mà đối thủ AI có thể di chuyển về bản đồ có vẻ gần như vô hạn. Các bản đồ rất lớn và vị trí của những người chơi khác liên tục thay đổi.Làm thế nào để tạo đường dẫn trong các trò chơi video RTS hoạt động?

Cách tìm đường AI trong các trò chơi như thế này hoạt động như thế nào? Các phương thức tìm kiếm đồ thị tiêu chuẩn (như DFS, BFS hoặc A *) dường như không thể thực hiện được trong một thiết lập như vậy.

+3

câu hỏi hay. Có lẽ nó sẽ tốt hơn để đăng nó trên http://gamedev.stackexchange.com/ –

Trả lời

2

Đây là một chút của một ví dụ đơn giản, nhưng nó cho thấy rằng bạn có thể làm cho những ảo ảnh của AI/Indepth Pathfinder từ một tập phi phức tạp của các quy tắc: Pac-Man Pathfinding

Về cơ bản, nó có thể cho AI để biết thông tin địa phương (gần) và đưa ra quyết định dựa trên kiến ​​thức đó.

1

A* là thuật toán phổ biến. Đây là một chủ đề phát triển trò chơi phổ biến - bạn sẽ có thể tìm thấy nhiều sách và trang web chứa thông tin.

16

Thực hiện những điều sau đây bằng một hạt muối, vì tôi không có kinh nghiệm đầu tiên về hướng dẫn đường đi.

Điều đó đang được nói, có khả năng là các cách tiếp cận khác nhau, nhưng tôi nghĩ các phương pháp tìm kiếm đồ thị tiêu chuẩn, đáng chú ý (các biến thể của) A * là hoàn toàn hợp lý cho các trò chơi chiến lược. Hầu hết các trò chơi chiến lược tôi biết dường như dựa trên hệ thống lát gạch, nơi bản đồ bao gồm các ô vuông nhỏ, dễ dàng được ánh xạ tới biểu đồ. Một ví dụ sẽ là StarCraft II (Screenshot), mà tôi sẽ tiếp tục sử dụng làm ví dụ trong phần còn lại của câu trả lời này, bởi vì tôi quen thuộc nhất với nó.

Trong khi A * có thể được sử dụng cho các trò chơi chiến lược thời gian thực, có một vài nhược điểm đó phải được khắc phục bằng việc tung ra các thuật toán cốt lõi:

  1. A * là quá chậm

    Vì RTS là do định nghĩa "thời gian thực", việc đợi tính toán kết thúc sẽ làm hỏng trình phát, bởi vì các đơn vị sẽ bị trễ. Điều này có thể được khắc phục bằng nhiều cách. Một là sử dụng Multi-tiered A*, tính toán một khóa học thô trước khi có những trở ngại nhỏ hơn vào tài khoản. Một sự tối ưu hóa rõ ràng khác là các nhóm đơn vị hướng đến cùng một điểm đến trong một trung đội và chỉ tính toán một đường cho tất cả chúng. Thay vì cách tiếp cận ngây thơ của việc làm cho từng viên gạch một nút trong biểu đồ, người ta cũng có thể xây dựng navigation mesh, có ít nút hơn và có thể tìm kiếm nhanh hơn - điều này đòi hỏi phải tinh chỉnh thuật toán tìm kiếm một chút, nhưng nó vẫn sẽ là A * ở cốt lõi.

  2. A * là tĩnh

    A * hoạt động trên một đồ thị tĩnh, vì vậy phải làm gì khi những thay đổi cảnh quan? Tôi không biết làm thế nào điều này được thực hiện trong các trò chơi thực tế, nhưng tôi tưởng tượng con đường được thực hiện nhiều lần để đối phó với những trở ngại mới hoặc những trở ngại bị loại bỏ. Có thể họ đang sử dụng incremental version of A* (PDF).

    Để xem minh họa về StarCraft II đối phó với điều này, hãy truy cập 7:50 trong this video.

  3. A * có thông tin hoàn hảo

    Một phần của nhiều trò chơi RTS là địa hình chưa được khám phá. Vì bạn không thể nhìn thấy địa hình, các đơn vị của bạn không nên biết đi đâu, nhưng thường thì chúng vẫn hoạt động.Một cách tiếp cận là để phạt đi bộ qua địa hình chưa được khám phá, vì vậy các đơn vị miễn cưỡng hơn để tận dụng lợi thế của sự toàn trí của họ, một cách khác là lấy đi toàn bộ và chỉ cho rằng địa hình chưa được khám phá là có thể đi được. Điều này có thể dẫn đến các đơn vị vấp ngã vào các ngõ cụt, đôi khi những người rõ ràng đối với người chơi, cho đến khi cuối cùng họ khám phá một con đường đến đích.

    Sương mù của chiến tranh là một khía cạnh khác. Ví dụ, trong StarCraft 2 có những trở ngại phá hủy trên bản đồ. Nó đã được chỉ ra rằng bạn có thể đặt một đơn vị để di chuyển đến căn cứ của đối phương, và nó sẽ bắt đầu xuống một con đường khác nếu chướng ngại vật đã bị phá hủy bởi đối thủ của bạn, do đó cung cấp cho bạn thông tin bạn không nên thực sự có.

Để tóm tắt: Bạn có thể sử dụng thuật toán chuẩn, nhưng bạn có thể phải sử dụng chúng một cách khéo léo. Và như là một tiền thưởng cuối cùng: Tôi đã tìm thấy Amit’s Game Programming Information thú vị liên quan đến đường dẫn. Nó cũng có liên kết để thảo luận thêm về vấn đề này.

0

Kiểm tra biểu đồ hiển thị. Tôi tin rằng đó là những gì họ sử dụng để tìm đường.

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