Come posso implementare formazioni di gruppo in un 3D RTS?


14

Sono riuscito a ottenere il lavoro di ricerca di percorsi per una singola unità e sono riuscito a evitare la collisione agente-agente, ma ora devo essere in grado di inviare un gruppo di agenti in una posizione.

Questo è il mio set up finora:

  • Ricerca dei waypoint
  • La distanza minima tra due nodi è un po 'più grande del raggio maggiore della sfera limite consentito per un agente.
  • Gli agenti evitano le collisioni con altri agenti svolgendo un comportamento di guida basato sul clearpath

Quindi ora devo inviare i miei agenti da qualche parte nel gruppo. Ho letto alcuni post dicendo che un modo per farlo è quello di creare un capogruppo e dare alle altre unità compensazioni sulla sua posizione.

Ma allora il problema è, cosa succede se la formazione del gruppo non può essere raggiunta? ad esempio, si desidera formare un rettangolo, ma nella posizione di destinazione è presente una struttura nelle vicinanze che impedisce di creare un'impostazione di rettangolo.


2
Sono al lavoro, quindi non ho tempo di scrivere una risposta adeguata, ma ecco il mio punto zero due centesimi: utilizzare un algoritmo di floccaggio Boids e quindi rappresentare ostacoli come oggetti da cui vengono respinti i Boids.
Nailer,

@Nailer l'algoritmo di floccaggio funzionerebbe fintanto che si stanno muovendo, ma come potrei rilevare se la loro posizione finale è "ok" e avvisarli che possono smettere di muoversi? Non ti preoccupare, posso aspettare la tua risposta;)
xcrypt

Risposte:


13

In realtà c'è un bell'articolo a riguardo su Gamasutra. E tratta argomenti come formazioni e risoluzione di collisioni:

inserisci qui la descrizione dell'immagine

E un altro articolo da loro sullo stesso argomento, che è un po 'più breve ma ha più esempi di pseudo-codice:

inserisci qui la descrizione dell'immagine

Infine, una cosa elegante a cui pensare quando si implementa il sistema è l'idea di un Supreme Commander 2 "Flow Field" che ha usato questo ; E si basa sulla ricerca Crowd Flows della Washington State University .


Grazie, ho visto le folle di continuum che cercavano cose da comandante supremo, ma penso che rimarrò fedele a ciò che ho. Ci proverò quando avrò un po 'più di exp, perché sì, sembra davvero
elegante

2

Penso che tu possa avere una "entità gregge" invisibile che è il capo della formazione e far sì che le altre creature si posizionino rispetto a questa entità. Se questa entità può ruotare, anche la posizione relativa ruoterà.

... oopos .. lo stai già facendo.

Che dire di questo:

Perché non puoi calcolare nuove posizioni per le entità in collisione? Non ho bisogno di essere stravagante, forse basta tracciare una linea dal punto originale desiderato, e il leader, e spostare la posizione desiderata al centro di questa linea. Prova di nuovo per la collisione.


Bene, questo è praticamente quello che ho detto nella mia domanda: D La parte difficile è come gestire la collisione della formazione con il terreno / ostacoli / strutture
xcrypt

Siamo spiacenti! Ho aggiornato la mia risposta con una nuova idea.
Tei,

Non capisco, potresti dimezzare la grandezza del vettore offset e continuare a controllare se questa è una posizione libera da collisione?
Molto
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.