Das Zielen auf ein Fahrzeug mit bekannter konstanter Geschwindigkeit ist einfach und eine Kollision ist garantiert (siehe Vorhersage der feindlichen Position, damit ein Objekt sein Ziel führt , Finden des Treffpunkts von 2 Objekten in 2D, Kenntnis der (konstanten) Geschwindigkeit und Neigung ). Ungenaue KI kann durch Hinzufügen eines kleinen Fehlerfaktors modelliert werden.
Aber wie würde man ein Fahrzeug anvisieren, dessen Bewegungen komplexer sind? Vielleicht weicht es der KI oder einem anderen Spielobjekt aus.
Ich habe darüber nachgedacht, wie ich es selbst in einem FPS machen würde (in dem Kugeln eine endliche Geschwindigkeit haben) und denke, dass es mindestens einige Zielmodi geben muss, die auf der Bewegung des Ziels in der vorherigen Sekunde oder so basieren:
- Wenn es sich um ein lineares Ziel (Spitzenbeschleunigung in einem bestimmten Bereich) mit dem linearen Modell handelt
- Wenn es sehr unregelmäßig ist (vielleicht könnte die Größe des Begrenzungsrahmens der letzten Positionen verwendet werden?), Ziel auf einen Durchschnitt
Im Moment kann ich 2d Raum annehmen, KI ist stationär und Projektil ist ungelenkt und bewegt sich linear.
Antworten:
Zufällige Gedanken (kein Code) ...
Im wirklichen Leben zielt man auf ein Fahrzeug mit komplexer Bewegung ab, indem man versucht herauszufinden, was diese Bewegung ist, um sie zu antizipieren. Wenn Sie Code für die KI schreiben, um die KI als Ziel zu verwenden, sollten Sie eine Ziel-KI erstellen, die von der Ziel-KI abgeleitet ist. Wenn Ihr Ziel beispielsweise in der Nähe in Deckung geht, sollte die Ziel-KI in der Lage sein, diese Bewegung zu antizipieren.
Auf der anderen Seite wird es viel schwieriger, wenn Sie versuchen, Menschen mit KI anzugreifen. Zufälliges Targeting könnte funktionieren, sieht aber möglicherweise nur "zufällig" aus, was für Ihr Spiel möglicherweise ein Problem darstellt oder nicht.
Um eine Lösung zu finden, können Sie das Problem mental in die verschiedenen Teile des Versuchs, etwas zu schießen, aufteilen ...
Tracking-Fähigkeit
Um ein Ziel mit einem Zielgerät zu treffen, das sich bewegen kann, muss es in der Lage sein, das Gerät zu verfolgen und zu bewegen, um dem Ziel zu folgen. Der Zieler beobachtet, wie sich das Ziel bewegt, und bewegt sein Ziel, um zu folgen. Wenn ein Tracker nur eine begrenzte Bewegungsmenge hat, wird seine Verfolgungsfähigkeit beeinträchtigt und es kann schwierig sein, einige Dinge zu verfolgen. Wenn der Tracker jedoch über eine große Verfolgungsfreiheit verfügt, kann er möglicherweise viele Dinge verfolgen. Denken Sie an den Unterschied zwischen einem Panzerturm und dem Zeigen auf etwas mit dem Finger.
Verfolgungsgeschwindigkeit
Ein weiterer Faktor ist, wie schnell der Tracker verfolgen kann. Wenn es sehr langsam ist (denken Sie an "Panzerturm"), kann es kein Ziel verfolgen, das sich schnell bewegt. Stattdessen muss es sich auf die Vorwegnahme des Zielpfades verlassen. Andererseits kann sich ein Tracker mit "schneller" Geschwindigkeit schnell zum neuen Standort eines Ziels bewegen.
Reaktionszeit verfolgen
Ein dritter Faktor bei der Verfolgung ist die Reaktionszeit der Verfolgung. Das heißt, wenn das Ziel die Richtung ändert, wie schnell kann der Tracker reagieren? Der ultimative Tracker ist einer mit schneller Tracking-Geschwindigkeit und sofortiger Reaktionszeit - er kann jede Änderung verfolgen.
Zielerkennung
Wie gut kann der Zieler ein Ziel erkennen? Wenn ein Ziel in einer komplexen Umgebung verfolgt wird, kann es vorkommen, dass der Zieler das Ziel nicht erkennt oder "verliert". Je schneller der Zieler ein Ziel erkennen kann, desto besser wird es. Je weniger wahrscheinlich es ist, ein Ziel zu verlieren, desto besser wird es.
Reaktionszeit beim Schießen
Nur weil das Ziel für einen kurzen Moment im Fadenkreuz erscheint, bedeutet dies nicht, dass ein Schuss ausgeführt wird. Kann der Tracker schnell genug reagieren, um den Abzug zu betätigen? Wirklich schlechte Tracker mit wirklich schlechter Reaktionszeit treffen nichts. Wirklich gute Tracker mit wirklich guter Reaktionszeit treffen alles, weil sie nur die geringste Zeit auf dem Ziel benötigen.
Bewegung antizipieren
Die Antizipation von Bewegung ist ein weiterer Faktor. Dies ist der Unterschied zwischen dem Versuch, zu verfolgen, wo sich das Ziel jetzt befindet, und dem Verfolgen, wo sich das Ziel Ihrer Meinung nach befindet. Wenn ein Tracker antizipieren kann, kann er das Ziel besser verfolgen und mehr Chancen erhalten, das Ziel im Fadenkreuz zu haben, und somit seine Fähigkeit verbessern, basierend auf seiner Reaktionszeit einen Schuss abzugeben. Zero-Antizipations-Tracker würden das Ziel unabhängig von den Aktionen des Ziels automatisch auf das Ziel zubewegen. Der schlimmste Fall ist ein Tracker, dessen Geschwindigkeit langsam ist und ohne Vorfreude versucht, ein einfaches sich bewegendes Ziel zu verfolgen. Stellen Sie sich ein Ziel vor, das nur alle paar Sekunden nach links und dann nach rechts tritt. Ein langsamer Tracker würde das Ziel immer wieder hin und her hüpfen lassen, niemals schnell genug, um das Ziel zu erreichen.
Modellierung der Zielbewegung
Wie oben erwähnt, kann der Tracker das Ziel antizipieren, indem er seine Bewegung modelliert, was nicht unbedingt so schwierig ist. Wenn ein Fahrzeug mit einer bestimmten Geschwindigkeit fährt, gibt es eine begrenzte Anzahl von Stellen, an denen sich das Fahrzeug in der nächsten Sekunde befinden kann, und sie sind im Wesentlichen wie ein Dreieck vor ihrer Bewegung angeordnet. Je schneller sie fahren, desto enger ist das Dreieck. Je schneller sie sich drehen können, desto breiter ist es. Ein wirklich schnelles Fahrzeug, das sich kaum drehen kann (wie eine Rakete), hat einen sehr kleinen schmalen Potentialweg. Ein langsamer, der sich sehr gut drehen kann, hat einen viel breiteren potenziellen Pfad. Es ist wie bei diesen Rückfahrkameras einiger Autos, die Linien überlagern, die Ihnen zeigen, wohin Ihr Auto fährt, wenn Sie so weiterfahren, wie es jetzt ist, und wohin Sie möglicherweise fahren könnten, wenn Sie das Rad mehr drehen würden.
In diesem Sinne sollten Sie Ihr Feld "potenzieller Zielraum" in diesen potenziellen Pfadraum einfügen. Wenn Sie wissen, dass Ihr Ziel dazu neigt, von einer Seite zur anderen zu wechseln, muss Ihre Zielbox breit genug sein, um alle möglichen Bewegungen zu erfassen. Wenn Ihr Ziel in seiner Bewegung ziemlich linear ist, können Sie Ihre Zielbox viel kleiner und zentriert auf den erwarteten Bewegungsort machen. Ich denke, diese Art des Denkens wird Ihnen helfen, eine einzige Lösung für das Tracking zu finden, die nicht wirklich zwischen linearer und nichtlinearer Antizipation unterscheidet. Die lineare Verfolgung ist einfach eine Antizipation mit einem höheren Konfidenzniveau (kleineres Zielfeld), während das zufällige Tracking ein geringes Konfidenzniveau (größeres Verfolgungsfeld) ist.
Dies wird natürlich schwierig, wenn das Ziel stillsteht, da es das Potenzial hat, sich in jede Richtung zu bewegen. Aber wenn es noch zu lange sitzt, ist es natürlich auch für den langsamsten Tracker ein leichtes Ziel.
Zielpsychologie
Überlegen Sie, was Sie tun würden, wenn plötzlich Schüsse zu Ihrer Linken landen würden. Würdest du auf sie losrennen? NEIN! Du würdest nach rechts rennen. Oder vielleicht würden Sie in Deckung gehen. Aber dann schießt der Zieler vielleicht gezielt auf die Deckungsposition, damit Sie nicht darauf losrennen.
Lernfähigkeit
Möglicherweise kann Ihr Zieler aus Erfahrung lernen. Angenommen, sie haben zunächst keine Ahnung von der möglichen Bewegung des Fahrzeugs. Sie wissen nicht, wie schnell es gehen kann oder wie schnell es sich drehen kann. Wenn Sie es jedoch in Aktion beobachten, lernen Sie, was dies ist. Das bedeutet, dass sie beim ersten Versuch, einen zu verfolgen, möglicherweise nicht sehr gut abschneiden. Aber sie lernen das Bewegungsverhalten und machen es bei nachfolgenden Versuchen besser.
Weiterführende Literatur
Ein bisschen googeln nach dem Schreiben führte zu diesem Handbuch für Gewehrschießerei ...
http://www.globalsecurity.org/military/library/policy/army/fm/3-22-9/c07.htm
Könnte ein paar Ideen sein, wie eine reale Person zielen und verfolgen würde / sollte / könnte.
quelle