Berechnung der Flugbahn des Flugkörpers um die Umlaufbahnen vor dem Schießen

10

Ich baue ein Spiel mit Unity3D. Es ist ein Gravity Wars- Klon. Sowohl Spieler- als auch KI-Türme schießen Raketen aufeinander (wobei ein Winkel und eine Kraftvariable angegeben werden) und versuchen, Raketen auf Planeten nicht zum Absturz zu bringen. Aber hier ist meine Frage: Wie kann ich die KI dazu bringen, Kraft und Winkel zu berechnen, bevor ich auf seine Rakete schieße, auch unter Berücksichtigung der Schwerkraft eines Planeten?

Onofrio
quelle

Antworten:

5

Ein solches System mit mehreren Körpern wird chaotisch sein. Ich glaube nicht, dass Sie eine Gleichung dafür in Echtzeit lösen können. Das Beste, was Sie hoffen können, ist, mithilfe eines genetischen Algorithmus eine Lösung zu finden.

1: Erzeugen Sie eine Anzahl (z. B. 100) zufälliger Lösungen (Winkel, Potenzpaare).

2: simulieren Sie diese Lösungen.

3: Wenn einer von diesen das Ziel trifft (oder ausreichend nahe kommt), Fertig! Andernfalls fahren Sie fort.

4: Wählen Sie die 10 besten Lösungen aus (diejenigen, die dem Ziel am nächsten kommen).

5: Erstellen Sie aus diesen 10 Lösungen jeweils 10 Kinder, indem Sie ihren Winkel und ihre Kraft zufällig anpassen.

6: Jetzt haben Sie 100 neue Lösungen und sind zu Schritt 2 zurückgekehrt

Sie müssen die Anzahl der Iterationen begrenzen, falls keine Lösung gefunden werden kann oder die Suche zu lange dauert.

Selbst dieser Ansatz kann nicht garantiert eine gute Lösung finden, weil; 1. Lösung existiert möglicherweise nicht 2. In einem chaotischen System können kleine Änderungen an einer Lösung einen großen Einfluss auf das Ergebnis haben

Ken
quelle
1

Sie sollten in der Lage sein, eine Aufnahme zu simulieren, ohne sie zu zeichnen.

Dann könnten Sie sagen, simulieren Sie 10 Aufnahmen und nehmen Sie dann die nächste der 10.

jgallant
quelle
0

Da die Flugbahn der Rakete auf den Eingaben von Angleund basiert Power, sollten Sie in der Lage sein, eine inverse Gleichung zu lösen (eine genaue Antwort zu erhalten).

Die grundlegenden (Pseudo) AI-Schritte sind wie folgt:

  1. Wähle eine zufällige PowerEbene. Es spielt keine Rolle, wie hoch der genaue Wert ist (bis zu einem gewissen Grad), solange er in einen vernünftigen Bereich fällt.
  2. Lösen Sie die (vom tatsächlichen Pfad invertierte) Gleichung, um die genaue (also möglichst nahe bei Doppel) zu erhalten Angle.
  3. Wählen Sie einen (modifizierbaren) zufälligen Versatz aus Angle, um die ' Schwierigkeit ' der KI anzupassen .
  4. Feuern Sie die Rakete wie ein Spieler ab (zufällig) Powerund (berechnet) Angle.

Sie könnten natürlich die KI für beide Eingaben in zufälligen Stufen abfeuern lassen, was zu interessanten Ergebnissen führen könnte ...

Uhrwerk-Muse
quelle
Diese Methode ist absolut sinnvoll, wenn Sie nur die Schwerkraft gerade nach unten und einen konstanten Wind haben. Aber was verwenden Sie für eine "Gleichung, um das genaue zu geben Angle", wenn Sie mehrere Gravitationskörper in Ihrem Universum verstreut haben? Ihr Zug hängt von Ihrer aktuellen Position ab. Einige Aufnahmen sind möglicherweise nicht einmal möglich.
John McDonald
@John - Wenn ein Schuss völlig unmöglich ist (ohne Berücksichtigung einer schlechten Auswahl an Eingangsleistung), liegt ein ernstes Problem mit Ihrem Spielfeld vor. Bei diesen Arten von Spielen sollte jeder Spieler durch eine KI ersetzt werden können. Zugegeben, die Gleichungen werden komplizierter (und mit mehreren Körpern sehr schnell), aber es sollte immer noch möglich sein.
Uhrwerk-Muse
Fair genug. Aber wissen Sie, was Sie für eine Gleichung verwenden würden? Ich denke, deshalb wurde diese Frage gestellt.
John McDonald
John hat recht: Was ich suche, ist diese Gleichung.
Onofrio
@Onofrio - Entschuldigung, ich habe nicht die relevanten Gleichungen ... und es sieht so aus, als ob Sie einen Multi-Variablen-Kalkül benötigen, um dies "richtig" zu machen.
Uhrwerk-Muse
0

Wie wäre es, wenn Sie es realistisch machen, indem Sie sie nicht berechnen lassen, sondern mit einer Vermutung beginnen und sie entsprechend anpassen?

Als ich Gravity Wars gespielt habe, habe ich das getan. Beginnen Sie mit einer halbzufälligen Potenz und passen Sie sie entsprechend schrittweise an. Innerhalb weniger Aufnahmen kommen Sie ganz nah.

Asche999
quelle