# Gruppenverhalten



## Eichelhäer (31. Mrz 2020)

Hallo,

hab ne Frage zum Gruppenverhalten. Ich hab ne Gruppe aus Einheiten (dargestellt als Kreise radius 32 auf dem Bildschirm) die sich abhängig von einem vector anders verhalten wie z.B. einem Pfad folgen, einem Leader folgen oder sich einfach nur auf ein Ziel(maus) zubewegen und dort ankommen. Die einzelnen Verhaltensmuster lassen sich je nach implementierung beliebig kombinieren. Das ganze funktioniert bei mir in Ansätzen ganz gut, allerdings bring ich nachdem z.B. der leader sein ziel abhängig von seinem Pfad erreicht hat den rest der Gruppe nicht zum stehenbleiben. Es scheint als ob jedes Mitglied der gruppe das Ziel des leader anpeilt und versucht genau dorthin zu kommen. Ich möchte eig. keine Formationen der Gruppe implementieren, dort ist es ja klar jedem Gruppenmitglied, nachdem der leader sein Ziel erreicht hat abhängig von diesem den anderen die jeweiligen Formationspositionen zuzuweisen, sondern einfach einen zufälligen Haufen aus Einheiten, die sich nach Erreichen des Ziels nicht mehr so unkoordiniert bewegen. Die andere Möglichkeit die ich bereits versucht habe ist nach jedem update der einzelnen einheiten den Geschwindigkeitsvektor mit 0 zu multitplizieren was aber nur minimale veränderungen erzielt hat.

Ums mal runterzubrechen ich habe 10 Einheiten, die ein Ziel(Maus) anpeilen(arriveMethode) und nachdem die erste Einheit dasselbe erreicht hat, bleibt die erste kurz am Ziel stehen bis alle nachgerückt sind und schließlich schwirren wieder alle weiter herum. Wie verhindert man das "Herumschwirren"?

Grüße Eichelhäer


----------



## kneitzel (31. Mrz 2020)

Also ganz ohne Details zu kennen, ist die Antwort darauf: Indem Du die Einheiten einfach auch stoppst, sobald das Stop-Kriterium erfüllt ist.

Dazu gehört halt generell eine Methode, die Bewegung zu stoppen. Einfach nur den Bewegungsvektor mit 0 zu multiplizieren mag die Lösung sein, so dies dann entsprechend verarbeitet wird, aber das kann auch schlicht Unfug sein, wenn dann ständig die Einheiten von der Game-Engine weiter bewegt werden - auch wenn es nur die Geschwindigkeit 0 ist. So unnötige Berechnungen möchte man ja nicht haben....


----------



## Eichelhäer (31. Mrz 2020)

Nein möchte man nicht. Du sprichst von einem Stopkriterium. Naja da fallen mir zei Sachen ein. Wenn der erste am Ziel ist und stoppt, dann sollen die übrigen im Abstand der addierten Radien stoppen. Muss ich dann für jede beteiligte Einheit das jeweilige Ziel berechnen?


----------



## kneitzel (31. Mrz 2020)

Ich weiss nicht, was im Detail deine Absicht ist oder was du für Strukturen hast. 

Wenn man sich gewisse Spiele anschaut, dann findet man oft:
- Du befehlst einer Gruppe ein Ziel - also alle haben genau dieses Ziel.
- Die Bewegung bricht ab, wenn z.B. der Weg versperrt ist, man nah am Ziel ist, ggf. wenn ein "Feind" gesichtet wurde und bekämpft werden soll oder wenn ein Fein einen angreift ...

Generell ist sehr viel denkbar. Aber ich würde immer überlegen, was wie kompliziert ist und was Sinn macht. Es kann durchaus Sinn machen, Formationen bei zu behalten. Dann sind z.B. gepanzerte Einheiten vorn und Distanzkämpfer hinten. Und man will ja nicht, dass leichte Bogenschützen an langsamen gepanzerten Einzelkämpfen vorbei laufen. Sowas kann man durchaus aufnehmen. Aber kompliziert wird es dann z.B. an Engstellen. Und wie bauen sich die Truppen auf, wenn die benötigte Aufstellfläche nicht komplett frei ist? Das ist aber alles eine Frage des Designs des Spieles. Und das ist ja mit mein Kernpunkt: Ohne genaue Details können wir keine Lösung erstellen. Das ist jetzt maximal sowas wie ein "Brainstorming", was uns so an Optionen einfällt.


----------



## Eichelhäer (31. Mrz 2020)

Denk drüber nach. Melde mich nochmal danke erstmal.


----------



## Eichelhäer (4. Apr 2020)

So, hallo nochmal. 
Also generell hab ich schon diverse Vorstellungen von dem was rein soll und was nicht. 
1. Die klassische bogenschützen hinter nahkämpfer Formation (also letztendlich abängig vom angriffsradius der jeweiligen Einheit) 
2.Möglichst alle (nur Militär Einheiten) in Formation halten also wenn kein nicht begehbare Feld in der Nähe ist
3.im Fall von Hindernisse möglichst dem Ziel angenähert aufstellen also nicht in Formation

Ich hoffe es ist etwas klarer was ich meine.
Mittlerweile habe ich sowas ähnliches wie Formationen. Ausgehend von einer Einheit mit der kürzesten Luftlinie zum Ziel berechne ich für die den Pfad die übrigen positionierte ich dann abermals ausgehend von der kürzesten Distanz und Zuweisung einer temporären Nummer inAbhängigkeit zur ersten Einheit. Ist noch nicht ganz fertig aber grungsätzlich funktioniert es.
Kann man das besser umsetzen?


----------

