Jak wdrożyć formacje grupowe w 3D RTS?


14

Udało mi się znaleźć pracę nad wyszukiwaniem ścieżki dla pojedynczej jednostki i udało mi się uniknąć kolizji agent-agent, ale teraz muszę mieć możliwość wysłania grupy agentów do pewnej lokalizacji.

Oto moja konfiguracja do tej pory:

  • Określanie ścieżki do punktu
  • Minimalna odległość między dwoma węzłami jest nieco większa niż największy promień kuli granicznej dozwolony dla agenta.
  • Agenci unikają kolizji z innymi agentami, wykonując pewne działania sterujące oparte na clearpath

Więc teraz muszę wysłać moich agentów gdzieś w grupie. Przeczytałem kilka postów mówiących, że sposobem na to jest stworzenie lidera grupy i przesunięcie innych jednostek na jego pozycję.

Ale problem polega na tym, co się stanie, jeśli nie uda się utworzyć grupy? np. chcesz utworzyć prostokąt, ale w pozycji docelowej znajduje się struktura, która uniemożliwia utworzenie układu prostokąta.


2
Jestem w pracy, więc nie mam czasu, aby napisać poprawną odpowiedź, ale oto mój punkt zerowy dwa centy: użyj algorytmu flokowania Boids, a następnie reprezentuj przeszkody jako obiekty, z których Boids są odpychane.
Nailer

@Nailer on algorytm flokowania będzie działał tak długo, jak się poruszają, ale w jaki sposób miałbym wykryć, czy ich ostateczna pozycja jest „w porządku” i powiadomić ich, że mogą przestać się poruszać? Nie martw się, mogę poczekać na twoją odpowiedź;)
xcrypt

Odpowiedzi:


13

W Gamasutra jest całkiem fajny artykuł na ten temat. I obejmuje takie tematy, jak formacje i rozwiązywanie kolizji:

wprowadź opis zdjęcia tutaj

I kolejny artykuł od nich na ten sam temat, który jest nieco krótszy, ale zawiera więcej przykładów pseudokodu:

wprowadź opis zdjęcia tutaj

Wreszcie, fajną rzeczą do przemyślenia przy wdrażaniu twojego systemu jest pomysł, że użył tego Supreme Commander 2 „Flow Field” ; Opiera się na badaniach Crowd Flows w Washington State University .


Dzięki, widziałem, jak ciągłe tłumy szukają rzeczy od najwyższego dowódcy, ale myślę, że będę trzymać się tego, co mam. Spróbuję tego, kiedy dostanę trochę więcej exp, ponieważ tak, wygląda naprawdę
fajnie

2

Myślę, że możesz mieć niewidzialną „trzodę”, która jest szefem formacji, i sprawić, aby inne stworzenia ustawiły się względem tej istoty. Jeśli ten element może się obracać, wówczas pozycja względna również się obróci.

... oopos .. już to robisz.

A co z tym:

Dlaczego nie możesz obliczyć nowych pozycji dla zderzających się podmiotów? Nie muszę być fantazyjny, może po prostu ustaw linię od pożądanego pierwotnego punktu i lidera i przenieś pożądaną pozycję na środek tej linii. Sprawdź ponownie, czy nie ma kolizji.


Cóż, tak
właściwie

Przepraszam !, Zaktualizowałem odpowiedź o nowy pomysł.
Tei

Nie rozumiem, po prostu zmniejszysz o połowę wielkość wektora przesunięcia i sprawdzasz, czy jest to pozycja wolna od kolizji? To najprawdopodobniej
zawiodłoby
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.