Muster für das Verhalten von Renn-KI

9

Nehmen wir also an, Sie haben eine Spline-basierte Renn-KI. Angenommen, es kann bereits die Grundlagen des Bremsens und Lenkens auf der Strecke beherrschen.

Wie würden Sie Kollisionsvermeidung, Überholen, Zeichnen, Blockieren und andere Verhaltensweisen strukturieren und implementieren, damit Ihre Autos wettbewerbsfähig bleiben, aber interessante Rennen fahren?

Links zu Papieren / Implementierungen wären fantastisch.

Tenpn
quelle
welche Art von Motor Sie verwenden,
Harshal Benake

Antworten:

7

Haben Sie Lenkverhalten für autonome Zeichen gesehen ? Ich würde einen " CrowdPathFollowing" -Algorithmus in Betracht ziehen , um auf der Strecke zu bleiben und Kollisionen zu vermeiden. Möglicherweise können Sie ein "Flow Field Following" -Verhalten zum Zeichnen, Übergeben und Blockieren einmischen. Lassen Sie das Flow-Feld dem vergangenen und projizierten Pfad des Spielers folgen, teilen Sie es jedoch um seinen aktuellen Standort auf.

      /-------------\
 ----<  [playerCar]  >-----
      \-------------/

Das sollte dazu führen, dass die KI dazu neigt, direkt hinter ihm zu folgen und sich direkt vor ihm zu bewegen, um zu blockieren, aber saubere Pässe zu fördern.

AShelly
quelle
1
Ich bin mir der Boids bewusst, aber es ist eine gute Referenz. Ich habe ein bisschen Angst vor vielen, vielen Verhaltensweisen (bleiben Sie auf der Rennlinie, vermeiden Sie Autos, Blockieren, Zugluft usw.), die auf eine Weise interagieren, die zu komplex ist, um sie abzustimmen, und die gelegentlich zu Kollisionen mit Kantenfällen führt. Dies ist in Ordnung für Fußgänger, aber katastrophal für Rennwagen, die in Bewegung bleiben müssen.
Tenpn
Ich habe mit der OpenSteer-API gearbeitet, die viele dieser Dinge implementiert. Ich fand es ziemlich einfach zu stimmen. In Ihrem Fall würde ich das Gewicht von "SteerToAvoidCollision" sehr hoch machen. Ich weiß nicht, mit welchen Fahrzeugen Sie fahren, aber ich würde denken, dass, wenn Sie es in den allermeisten Fällen richtig machen, die verbleibende gelegentliche Beule oder Bash aufgrund eines Randfalls wahrscheinlich ziemlich realistisch ist ....
AShelly
War das Lenkfahrzeuge oder etwas anderes? Ich habe Angst vor Situationen, die Probleme verursachen, z. B. zwei Fahrzeuge links von Ihnen und eines rechts von Ihnen. Der durchschnittliche Vektor würde zu einer Bewegung nach rechts führen, obwohl Sie dadurch möglicherweise mit dem rechten Fahrzeug in Kontakt kommen.
Tenpn
Ich habe hauptsächlich mit Fußgängern gearbeitet, daher kann ich nicht schwören, dass es funktionieren wird. Eine Sache, an die man sich erinnern sollte, ist, dass es keine Mischung von Verhaltensweisen sein muss - es kann eine Hierarchie sein. So kann die Kollisionsvermeidung Vorrang vor allem anderen haben. In dem von Ihnen beschriebenen Fall würde das Auto nur so lange nach rechts fahren, bis der vorhergesagte Pfad den Pfad des rechten Autos kreuzt. Zu diesem Zeitpunkt wird das Vermeiden dieser Kollision zur übergeordneten Kraft. Sie können auch spezielle Bedingungen hinzufügen: Wenn beispielsweise in N Frames kein sicherer Pfad gefunden wird, fügen Sie eine harte Bremsung hinzu.
AShelly
2

Auf der diesjährigen AI Game Dev-Konferenz in Paris gab es teilweise eine Sitzung darüber. Die Folien und eine Zusammenfassung finden Sie hier:

http://aigamedev.com/open/coverage/paris10-report/#session9

Limette in Scheiben geschnitten
quelle
1
Der Link zum ppt ist 404.> _ <
tenpn
@tenpn: Es ist ein pptx: files.aigamedev.com/coverage/GAIC10_PaoloManinetti.pptx
Firas Assaad
ta - sein Ansatz ist interessant, aber der Code, mit dem ich gerade arbeite, ist tatsächlich fortgeschrittener!
Tenpn
1

Anti-Pattern: Gegner passen ihre Geschwindigkeit an

Leider kann ich Ihnen keine Muster geben, aber ich möchte ein Anti-Muster nennen. Bitte versuchen Sie nicht, die Geschwindigkeit der KI-Treiber an die des menschlichen Spielers anzupassen. Die Idee dahinter ist, faire Rennbedingungen für Amateure und Profis zu schaffen und die Notwendigkeit mehrerer Schwierigkeitsgrade (und deren Umsetzung) aufzugeben.

Was sich auf dem Papier gut anhört, erweist sich jedoch in der Praxis als schrecklich, und die MotoGP-Serie hat dieses Verhalten kläglich nicht umgesetzt. Es endete damit, dass die Gegner mit 5 MP / h fuhren, als Sie ein paar Sekunden still standen und nicht feststellen konnten, ob Sie sich im Spiel verbessert haben (sehr schlechtes Feedback).

Dave O.
quelle
Vielen Dank. Ich spreche hier speziell über interessante Rennverhaltensweisen anstatt über Ausgleichs- oder Schwierigkeitsgrade, aber ich werde es berücksichtigen.
Tenpn
5
Fast alle Rennspiele enthalten irgendeine Form von Gummibändern, um den Spieler in der Action zu halten oder die KI in der Nähe eines guten Spielers zu halten. Der Trick besteht darin, subtil damit umzugehen und zu wissen, wann es ausgeschaltet werden muss. Sobald der Spieler bemerkt, dass er sich betrogen fühlt.
Wkerslake
Die MotoGP-Situation klingt eher nach einem Problem, zu weit zu gehen, als nach einem Problem mit Gummibändern im Allgemeinen. Es ist nicht unangemessen, dass die Fahrer vorne vorsichtiger fahren und die Autos hinten verzweifelter versuchen, die Lücke zu schließen, und ich denke, es ist sinnvoll, sie so zu modellieren und dem Spieler transparent darzustellen.
Jibb Smart
Dies ist ein interessanter Beitrag zum Thema: gamasutra.com/view/feature/3920/… Grundsätzlich werden Sie in 3 Gruppen von KI-Rennfahrern eingeteilt, sodass Sie im Verlauf des Rennens von Gruppe zu Gruppe vorrücken können.
Felsir