Cossacks tìm đường


7

Cossacks (phát hành năm 2002) là một trò chơi RTS nơi bạn có thể xây dựng những đội quân khổng lồ (vài nghìn người trên mỗi người chơi) trên một bản đồ thực sự lớn. Hãy tưởng tượng Age of Empires 2 cho một vài người chơi trên bản đồ Ludikris không có độ trễ, với 8000 đơn vị trên bản đồ (hoặc bản đồ thậm chí lớn hơn với nhiều đơn vị hơn nữa!). Điều thú vị là thực tế là, nếu bạn gửi đội quân khổng lồ này đến góc khác của bản đồ ... trò chơi sẽ không bị đình trệ. Các đơn vị chỉ bắt đầu di chuyển về phía vị trí mục tiêu của họ. Có những chướng ngại vật trên đường đi, như đồi, tòa nhà, tường, v.v.

Tuy nhiên, có một vấn đề với việc tìm đường - đôi khi các đơn vị chỉ đi qua lại trên các ngọn đồi, do đó có thể chỉ ra rằng toàn bộ chiều dài đường dẫn được chia thành các phần nhỏ hơn và các đơn vị bị nhầm lẫn. Tuy nhiên, số lượng tính toán khổng lồ sẽ được thực hiện cho một đội quân vài nghìn người, thực sự ấn tượng.

Bạn có biết làm thế nào để tìm đường dẫn (về hiệu suất) trơn tru như vậy đã / có thể đạt được không?

Câu trả lời:


8

Tôi không biết kỹ thuật nào được sử dụng cụ thể trong Cossacks, nhưng tôi đoán bạn cũng quan tâm đến vấn đề nói chung. Trong thực tế, ngày nay, có nhiều cách để đạt được kết quả như vậy - mặc dù tất nhiên các kỹ thuật tiên tiến là cần thiết trong các kịch bản đòi hỏi khắt khe.

Nhìn chung, có hai điểm nghẽn chính khi triển khai tìm đường trong loại bản đồ mà bạn mô tả: số lượng tác nhân và kích thước của không gian cần tìm (tìm đường dẫn = tìm kiếm đường dẫn khả thi hoặc ngắn nhất).

  1. Cách tiếp cận số một trong tình huống như vậy là cố gắng giảm kích thước của vấn đề, tức là tìm kiếm ít hơn và tìm kiếm ở các khu vực thấp hơn.

    1a) Một mặt, để tìm kiếm ở các khu vực thấp hơn có nghĩa là giảm các đường dẫn có thể phải được đánh giá trong bước tìm đường. Cho rằng, phân vùng không gian thường được sử dụng. Cảnh được chia thành các khu vực để việc tìm đường có thể được thực hiện trong các không gian tìm kiếm nhỏ hơn tại một thời điểm. Ngoài ra, có các thuật toán tìm kiếm như HPA * và HAA * thực hiện việc tìm đường dẫn phân cấp, bằng cách phân vùng cảnh.

    1b) Mặt khác, tìm kiếm ít hơn có nghĩa là đảm bảo rằng chỉ một số tác nhân tìm kiếm đường dẫn tại một thời điểm. Một mẹo hữu ích ở đây là tạo ấn tượng về số lượng tác nhân tìm đường cao hơn so với thực tế. Ví dụ, trong một số trò chơi, có một đội gồm một số binh sĩ nhất định, trong đó việc tìm đường thực sự được thực hiện cho mỗi đội, không phải cho mỗi binh sĩ. Nếu bạn nghĩ về một đội hình gồm 10 binh sĩ, điều đó một mình làm giảm việc tìm đường bằng một mức độ lớn. Sau đó, một khi đường đi của đội được tìm thấy, điều cần thiết là mỗi người lính có thể tránh chướng ngại vật theo những cách - có nghĩa là tránh va chạm cho mỗi người lính.

  2. Tôi đã đề cập tránh va chạm ở trên. Lưu ý rằng rất có thể, hầu hết các hoạt động CPU thường xuyên của nhiều đơn vị trong tình huống mà bạn mô tả sẽ không phải là do tự tìm đường, mà là do tránh các chướng ngại vật trong giai đoạn theo đường dẫn. Nhưng đồi, tòa nhà và không bao giờ rất nhiều. Vấn đề thực sự phát sinh khi các tác nhân phải tránh nhau.

    Thật vậy, điều đó có thể làm tổn thương hiệu suất khi hàng ngàn tác nhân đang tránh va chạm với nhau cùng một lúc. Tuy nhiên, thủ thuật cũng có thể được sử dụng ở đây. Đầu tiên, các đại lý chỉ phải tránh các đại lý và các tòa nhà gần đó. Thứ hai, trong một số trò chơi (đặc biệt là các trò chơi đẳng cự), có thể có sự khoan dung với bao nhiêu tác nhân thực tế có thể va chạm (hoặc thậm chí chồng chéo) với nhau, vì góc camera ngụy trang nó. Trong một số trò chơi cũ hơn, các đơn vị chỉ đơn giản là có thể "đi ngang qua nhau" - có nghĩa là một tác nhân không hoàn toàn chặn đường đi của những người khác.

    Ngoài ra, các ứng dụng hiện đại có thể xử lý số lượng diễn viên khá ấn tượng tránh va chạm cùng một lúc. Ví dụ: https://www.youtube.com/watch?v=Hc6kng5A8lQ hoặc tải xuống và xem ví dụ thuật toán ORCA với 25000 tác nhân trong một đám đông thực sự lớn: http://gamma.cs.unc.edu/ORCA/ideo/ ORCA-3.wmv

  3. Trong các trò chơi có số lượng lớn các đơn vị chiến đấu, rất nhiều đơn vị chết. Và chết nhanh. Thường trước khối lượng của các đơn vị thậm chí phải tránh quá nhiều trở ngại.

  4. Hiện đại, một kỹ thuật gọi là Tìm đường dẫn dòng chảy đã được giới thiệu trong Chỉ huy tối cao 2 (2010), lần đầu tiên thực sự cho phép RTS kiểm soát số lượng lớn các tác nhân hành vi cá nhân: Làm thế nào để hoạt động tìm đường của Flow Field hoạt động?


Cảm ơn bạn vì câu trả lời. :) Tôi thực sự rất tò mò về cách nó được thực hiện cụ thể trong Cossacks (và muốn bắt chước hành vi này), nhưng dù sao tôi cũng sẽ kiểm tra các giải pháp khác. :) Như tôi nhớ, không tránh được các tác nhân khác (nếu hai đơn vị va chạm với nhau, họ sẽ điều chỉnh vị trí hiện tại của mình để vượt qua "chướng ngại vật" như vậy), vì vậy tôi nghĩ rằng 1b và 2 có thể bị loại bỏ vì điều đó lý do. 4 (và 2 cũng vậy) khá "mới" vì vậy tôi nghĩ rằng tôi cũng sẽ bỏ chúng đi, ít nhất là bây giờ. 1a dường như hữu ích nhất đối với tôi, vì vậy tôi sẽ bắt đầu với cái này.
Mithras
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.