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.

xcrypt
źródło
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 .

MichaelHouse
źródło
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.

Tei
źródło
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