Làm cách nào để triển khai hình thành nhóm trong RTS 3D?


14

Tôi đã quản lý để có được công việc tìm đường cho một đơn vị, và tôi đã tránh được sự va chạm giữa đại lý, nhưng bây giờ tôi cần có thể gửi một nhóm đại lý đến một địa điểm nào đó.

Đây là thiết lập của tôi cho đến nay:

  • Tìm đường dẫn điểm
  • Khoảng cách tối thiểu giữa hai nút lớn hơn một chút so với bán kính hình cầu giới hạn lớn nhất được phép cho một tác nhân.
  • Đại lý tránh va chạm với các đại lý khác bằng cách thực hiện một số hành vi chỉ đạo tôi dựa trên sự rõ ràng

Vì vậy, bây giờ tôi cần phải gửi đại lý của tôi ở đâu đó trong nhóm. Tôi đã đọc một số bài viết nói rằng một số cách để làm điều đó là tạo ra một nhóm trưởng và cung cấp cho các đơn vị khác vị trí của mình.

Nhưng vấn đề là, nếu thành lập nhóm không thể đạt được thì sao? ví dụ: bạn muốn tạo một hình chữ nhật, nhưng tại vị trí đích có một cấu trúc gần đó ngăn bạn tạo một thiết lập hình chữ nhật.


2
Tôi đang làm việc vì vậy tôi không có thời gian để viết ra một câu trả lời thích hợp, nhưng đây là điểm không hai xu của tôi: Sử dụng thuật toán đổ xô của Boids và sau đó biểu thị các chướng ngại vật khi các Boids bị đẩy lùi.
Thợ làm móng

@Nailer thuật toán đổ xô của anh ta sẽ hoạt động miễn là họ đang di chuyển, nhưng sau đó tôi sẽ phát hiện ra nếu vị trí cuối cùng của họ là "ổn" và thông báo cho họ rằng họ có thể ngừng di chuyển? Đừng lo lắng, tôi có thể đợi câu trả lời của bạn;)
xcrypt

Câu trả lời:


13

Thực sự có một bài viết khá hay về vấn đề này tại Gamasutra. Và bao gồm các chủ đề như hình thành và giải quyết va chạm:

nhập mô tả hình ảnh ở đây

một bài viết khác từ họ về cùng một chủ đề, ngắn hơn một chút nhưng có nhiều ví dụ mã giả hơn:

nhập mô tả hình ảnh ở đây

Cuối cùng, một điều tiện lợi cần suy nghĩ khi triển khai hệ thống của bạn là ý tưởng về Chỉ huy tối cao 2 "Dòng chảy" đã sử dụng điều này ; Và nó dựa trên nghiên cứu Crowd Flows của Đại học bang Washington .


Cảm ơn, tôi đã thấy các công cụ tìm đường đông đảo liên tục từ chỉ huy tối cao, nhưng tôi nghĩ rằng tôi sẽ gắn bó với những gì tôi có. Tôi sẽ thử điều đó khi tôi có thêm một chút exp, bởi vì nó trông rất tiện lợi; D
xcrypt

2

Tôi nghĩ rằng bạn có thể có một "thực thể bầy đàn" vô hình là ông chủ của đội hình, và làm cho các sinh vật khác định vị chính mình so với thực thể này. Nếu thực thể này có thể xoay, thì vị trí tương đối cũng sẽ xoay.

... Oopos .. bạn đã làm điều đó.

Cái này thì sao:

Tại sao bạn không thể tính toán vị trí mới cho các thực thể va chạm? Tôi không cần phải thích thú, có thể chỉ cần đóng một dòng từ điểm ban đầu mong muốn, và người lãnh đạo, và di chuyển vị trí mong muốn vào giữa dòng này. Kiểm tra lại va chạm.


Vâng, đó là khá nhiều những gì tôi đã nói trong câu hỏi của mình: D Phần khó khăn là làm thế nào để xử lý sự va chạm của đội hình với địa hình / chướng ngại vật / cấu trúc
xcrypt

Xin lỗi!, Tôi đã cập nhật câu trả lời của mình với một ý tưởng mới.
Tei

Tôi không hiểu, bạn sẽ giảm một nửa độ lớn của vectơ bù và tiếp tục kiểm tra xem đây có phải là vị trí không va chạm không? Điều đó rất có thể sẽ thất bại trong nhiều trường hợp
xcrypt
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.