Fahrer-KI im Rennspiel


17

Ich bin gespannt, wie ich Autos in einem Rennspiel steuern kann.

Sollte mein KI-Agent sein Auto mit Befehlen wie "Gas auf 0,35, Lenkrad auf 0,5 rechts, Bremse auf 0,0" steuern? Oder sollte ich lieber eine Kurve vorberechnen, an der sich das Auto hält, und Grafiken wie das Drehen der Vorderräder sollen nur dafür sorgen, dass alles konsistent aussieht? Oder gibt es einen anderen Weg?


4
Die Strategie "An der idealen Kurve festhalten" funktioniert nur, solange keine Interferenzen auftreten. In dem Moment, in dem KI-Agenten anfangen, mit anderen Autos zu interagieren (ihnen auszuweichen oder gerammt zu werden), müssen sie improvisieren.
Philipp

1
Ja, so etwas wie Knoten entlang der Strecke mit Boids-Lenkung.
MichaelHouse

1
Hier ist ein Artikel über AI in Colin McRae's Rallye 2.
gre_gor

@gre_gor, das ist ein sehr hilfreicher Artikel, danke!
Dargemir

Antworten:


16

Wir können sagen, dass das Spiel auf einer bestimmten Ebene einem vorberechneten Pfad folgt. Da die Strecken des Rennspiels (meistens) sowieso eine vorberechnete Strecke sind.

Selbst wenn wir über das zufällige Erzeugen der Tracks sprechen, muss das Spiel den aktuellen Teil der Tracks für den Moment berechnet haben, in dem das Auto dort ankommt.

Das war einfach. Sonst noch etwas?

Beides, einem vorberechneten Pfad zu folgen und das Auto systematisch zu steuern, hat in der Spielebranche Verwendung gefunden. Die Antwort ist, beides zu benutzen.

Zunächst möchte ich erwähnen, dass "Berechnen einer Kurve" zwei Dinge bedeuten kann:

  • Erstellen von Funktionen, die die Position auf der Kurve ausgeben und als Parameter angeben, wie weit sie abgefragt werden soll.

  • Erstellen eines Pfads, der als Liste der zu befolgenden Punkte (oder Anweisungen und anderer Steuerungsinformationen) verstanden wird.

Ersteres kann für Vorhersagen oder in einigen physikalischen Simulationen nützlich sein. Wenn wir jedoch über das Steuern eines Objekts sprechen, ist letzteres der empfohlene Ansatz.

Hinweis: Bei älteren Spielen (1980er Jahre) glichen die anderen Autos eher beweglichen Hindernissen. Sie waren für dich da, um ihnen auszuweichen und sie zu übertreffen. Wir reden nicht über diese.


  • Folgen Sie einem vorberechneten Pfad: Dies ist nützlich für Filmsequenzen oder wiederholbare Szenen. In GTA San Andreas zum Beispiel folgt die Verfolgungsjagd dem Verfolgungsziel, und alle Autos folgen einem vordefinierten Pfad (dies stellt sicher, dass das Verfolgungsziel den Verkehr vermeiden kann ※). Sobald Sie sie stören, fallen sie jedoch in die Kontrolle der KI zurück. In diesem Fall muss die KI einen Pfad finden, um dorthin zu gelangen, wo sie ihrem regulären Pfad folgen sollte.

    ※: In der Tat wurde es aufgezeichnet. Aufnahme und Wiedergabe war eine der neuen Funktionen der GTA SA-Game-Engine.

  • Kontrolliert von AI:

    Die KI in ihrer einfachsten Form ist eine Zustandsmaschine. Es prüft, in welchem ​​Zustand es sich befindet und führt abhängig davon eine Aktion aus. Ich werde mich auf diese Kombinationen von Zustand und Handlung als Verhalten beziehen. Die Aktionen müssen nicht mit dem Gamepad des Spielers übereinstimmen. Weder die Verhaltensweisen.

    Für ein einfaches Spiel benötigen Sie wahrscheinlich nur zwei bemerkenswerte Verhaltensweisen: 1) Wenn es sich auf der Strecke befindet, folgen Sie der Strecke und meiden Sie andere Autos und Hindernisse. 2) Wenn es sich nicht auf der Strecke befindet, kehren Sie auf die Strecke zurück.

    Zu diesem Zeitpunkt ist es nicht weit, einem Pfad (den Spuren) zu folgen. Da es sich bei den Strecken jedoch nicht wirklich um eine Linie handelt, geht es nicht darum, einem Pfad zu folgen, sondern in der Nähe zu bleiben (und dabei andere Autos und Hindernisse zu meiden). Das bedeutet, dass die KI „Lenken, Bremsen und Beschleunigen“ lösen muss.

    Für ein modernes Spiel wird das Auto auch einer Physiksimulation unterzogen (um Kollisionen aufzulösen und den Realismus zu erhalten). Aus diesem Grund wird das Auto bei jeder Iteration der Spielrunde auf der Grundlage seiner Geschwindigkeit und Beschleunigung aktualisiert. Außerdem wird "Lenken, Bremsen und Beschleunigen" (Geschwindigkeitsänderungen) angewendet, um dem aktuellen Verhalten zu folgen.

    Ich möchte auch erwähnen, dass moderne Spiele komplexere Verhaltensweisen haben können, zum Beispiel, dass die KI sich dafür entscheidet, ein anderes Auto zu schlagen oder ihnen den Weg zu versperren. Tatsächlich kann die KI basierend auf einer Form des maschinellen Lernens sogar auswählen, welche sie anwendet, aber ich schweife ab.

    Bedenken Sie schließlich, dass es auch nützlich sein kann, KI-Fahrzeuge außerhalb der Sicht des Spielers einfacher zu steuern. Entweder für die Leistung oder für das Gummiband (in diesem Fall bleiben KI-Autos in der Nähe des Spielers, um das Rennen interessant zu gestalten. Dies kann als KI-Betrug angesehen werden, wenn Sie keinen Gegner wirklich zurücklassen können).


Über Animation ist es normalerweise keine gute Idee, Physik für die Räder unabhängig zu simulieren. Wenn Sie dies tun, wird das Spiel möglicherweise realistischer, kostet jedoch Leistung. Normalerweise animiert das Spiel die Räder basierend auf dem Verhalten, anstatt das Verhalten in Bezug auf die Bewegung der Räder auszudrücken und die Konsequenzen zu simulieren.

Natürlich müssen Sie möglicherweise zusätzliche Überlegungen anstellen, ob sich die Räder in Bodenkontakt befinden oder nicht. Und vielleicht animierende Suspendierung.


Das ist einfach eine wundervolle Antwort, vielen Dank.
Dargemir

0

Ich empfehle nachdrücklich, das Fahrzeugphysik- / Zustandsmodell vom Autocontroller zu trennen und den AI-Agenten und den Player-Controller als zwei Arten von austauschbaren Controllern mit Befehlen auf hoher Ebene zu konfigurieren, wie Sie sie in Ihrer Frage vorgeschlagen haben.

Dies hat eine Reihe von schönen Effekten:

  • Sie können das Physik- / Zustandsmodell einmal für Spieler und KI implementieren und debuggen
  • Alle neuen Funktionen des Physik- / Zustandsmodells gelten sofort sowohl für den Spieler als auch für die KI
  • Spieler- und KI-Autos verhalten sich konstant auf der Strecke, was die wahrgenommene und tatsächliche Fairness erhöht. (Wenn Sie die Rennfahrer behindern möchten, können Sie dies natürlich tun, indem Sie die Parameter an den Autos ändern.)
  • Verschiedene Arten der Multiplayer-Unterstützung lassen sich wesentlich einfacher entwickeln.

Dies ist übrigens ein besonderer Fall der MVC-Trennung .


2
Ich mag diese Antwort, aber diese abschließende Aussage ist einfach absurd. Entfernen Sie es und Sie haben einen Punkt von mir. Trennung von Bedenken ? - Bestimmt. MVC gilt jedoch nicht für den Kontext Ihrer vollständigen Antwort.
Ingenieur

1
Abgesehen von der Tatsache, dass der Ansichtsaspekt in der Frage oder Antwort nicht erörtert wird, warum halten Sie es für absurd, dies als MVC einzurahmen?
Russell Borogove
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.