Das KI-Verhalten in rFactor

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Das KI-Verhalten in rFactor

      Ich habe mich immer schon gefragt, wie lässt sich das Verhalten der KI-Gegner verbessern.
      Für diesen Sommer ist von meiner Seite eine offline Saison der ALMS mit der Endurance Series Modifikation geplant.
      Gerade bei Multiclass-Racing lässt sich feststellen, dass schnellere Fahrzeuge gefühlte Ewigkeiten hinter
      langsameren festhängen. Folglich war jedes Rennen bei der ersten Überrundung gelaufen, es blieb einem nichts
      anderes übrig, als am gehemmten Kontrahenten vorbeizuziehen.
      Beim Anpassen der Gegnerstärke in der .AIW an meine Geschwindigkeit, damit durchgehend mit 100% die Rennen
      bestritten werden können, ist mir ein Passus aufgefallen. Versteckt im Bereich Waypoint, direkt vor den einzelnen
      WP-Position befinden sich "AIDraftStickiness". Standardmäßig ist ein Wert von 4.0 angegeben, bei einigen Strecken
      fehlt dieser Eintrag komplett. Aus der Logik erschließend habe ich diesen Wert nun gleich null gesetzt und
      einige Tests durchgeführt. Zu erst fiel auf, dass ein "sehr guter" Fastpath von Nöten ist, um ein Rennen nicht
      im völligen Chaos enden zu lassen. Also wurde für die erste Teststrecke, Road Atlanta von uzzi, eine neue
      (schnelle) Linie gezogen; siehe da, urplötzlich kommen die geführten Fahrer an ihren langsameren Kontrahenten
      ohne größe Schwierigkeiten vorbei.
      Ein Testrennen in Sebring zeigte mit diesem veränderten Parameter eine Show, die selbst das originale Pendant
      in den Schatten stellt. Ein kleiner Ausschnitt dieses Rennens habe ich im unten eingebetteten Video dargestellt.
      Weitere Tests auf LimeRock blieben aber ohne größere, erwartete, Veränderungen. Die KI behielt das Verhalten
      bei, bremsend dem Vordermann im Heck zu hängen.
      Die Frage, die sich mir nun stellt, ist: Waren die erlebten Verbesserungen rein subjektiver Natur bzw. welchen Ausmaß
      haben ein guter/schlechter Fastpath und generell die Steckenbreite?
      Ein Verdoppeln der "drivinglines" von 1 auf 2 ermöglichte gerade in LimeRock ein perfektes Nebeneinanderfahren,
      aber auf Kosten der Schnelligkeit bei Einzelfahrten, denn das Fahrzeug bewegte sich immer am linken Rand der Strecke.
      Damit diese Möglichkeit als Alternative aus, aber nur für Straßenkurse. Auf Superspeedways ist es typisch
      eine zweite Fahrspur zu eröffnen, leider meistens nur in Daytona und Talladega. Für einen, wie mich, der sich lieber
      in der CART-Ära aufhält, sind diese beiden Ovale nicht von Belangen. Eine Erweiterung auf Michigan und Fontana
      wäre eine Erfahrung wert, die ich wohl noch in den nächsten Wochen angehen werde.
      Ich würde mich über Feedback wünschen, welche Erfahrung ihr mit dieser Einstellung gemacht habt.

      Nicht vergessen, vor dem Ändern immer eine Sicherheitskopie machen!

      [video]http://www.youtube.com/watch?v=dY6UPgeERnA&feature=plcp[/video]
      Ich denke es wird ersichtlich, welches Risiko ich teilweiße eingehen musste, um dem Vordermann im Verkehr zu folgen.

      Update 16.06.2013
    • Ja also in deinem Video sieht man eigentlich die Bestätigung deines Eindrucks.
      Doch diese Geschichte ist ein ganz großes Problem bei rFactor und führt immer wieder zu Problemen bei Offline-Rennen. Ich habe festgestellt, dass die KI deutlich besser unterwegs ist, wenn man track-learning-Files (AI-Learning) und Talent-Files generiert. Bei den Track-Learnings ist besonders wichtig, dass man JEDES einzelne Fahrzeug über den Kurs im Trainingsmodus jagen muss und die Datei nach jedem Run in das Team-Verzeichnis packen muss - sonst gelten die Dateien für alle, also ist der letzte generierte File auch für alle gültig. Ist also doch schon ein wenig Arbeit, kann sich aber lohnen!
      Mit den Talent-Files ist das weniger kompliziert, wenn aber auch aufwendig. Zum Beispiel kann man mit dem Talent-Editor recht easy entsprechende Files anlegen und dadurch der KI ein wenig mehr Charakter einhauchen.

      Auf der anderen Seite ist dein Weg des AIW tunings auch absolut notwendig! Hilft ja weder Talent noch Streckenerfahrung wenn man wie auf Schienen hintereinander herfährt.

      Aber auch in der PLR-Datei gibt es noch Dinge zum Finetuning der KI. Ein Post zu diesem Thema findet man bei nogrip. Übrigens hat da unser weisschon auch sein Wissen zum Besten gegeben und wie wir wissen, hat die VLN Mod von NLC eine der bestfunktionierenden KIs überhaupt! Wichtig ist schlichtweg die Kombination aus allem: Einstellungen der Talente, Streckenerfahrung, AIW und PLR Einstellungen.

      Weiterhin gibt es auch bei nogrip ein Topic für die KI von GTR2. Vieles davon ließe sich sicher auch auf rF ummünzen und anwenden. Wäre sicher auch die Lektüre wert!

      Ich selber habe nich so sehr viel rumgespielt in der Sache KI. Doch hab ich für private Mods mit nur einem Fahrzeug immer ganz gute Ergebnisse erzielt, wenn die Talent-Files und das Tracklearning passten. Hinzu kommt natürlich dann auch die Wahl der richtigen Strecken. Alle haben eine AIW, doch die Qualität ist teilweise erschreckend unterschiedlich!
      "Beim Beschleunigen müssen die Tränen der Ergriffenheit waagerecht zum Ohr hin abfließen." - Walter Röhrl
    • Wichtig ist es auch, die erstellten Setups für die KI auch den Strecken zuzuweisen und erst DANN das Tracklearning auszuführen (ist die effektivste Methode), das bringt nicht nur bis zu drei Sekunden pro Runde (wodurch man auch die Aggressivität runterstellen kann, was auch den Vorteil von saubereren Aktionen hat) sondern verhindert, dass die KIs ständig am Über- und Untersteuern sind.

      Trotzdem hängt natürlich viel vom Trackmodding ab und einige Strecken die für GTs oder Tourenwagen ausgelegt sind, funktionieren ohne Trackmodding nicht mit Formel- oder LMPs, genausowenig wie es bei anderen Strecken umgekehrt der Fall ist.
      | PC | Intel Core i7 4770k @ 4,5 GHz | ASUS Maximus Hero VII | Palit GeForce GTX 1080 GameRock Premium | 16 GB Corsair DDR3 1600MHz |
      | SIM | Fanatec DD2 Base | Heusinkveld Sprint | SimLab P1-X |
    • Danke erstmal für die Antwort.
      Es stimmt natürlich, dass das Verhalten, beeinflussbar, aus diesen vier Komponenten besteht. Änderungen an der AIW sollten auch an letzter Stelle stehen, nicht nur auf Grund von möglichen Mismatches auf Servern. Gerade bei der Player-Datei ist mir aufgefallen, dass einige Änderungen doch einen positiven Effekt erzeugen, beim Wechsel zurück dieser Effekt aber weiterhin vorhanden
      ist; folglich fragt man sich zurecht, wie viel Einfluss kann man übrhaupt geben. Dennoch habe ich seit längerem zwei Spieler, einen für normale und einen speziellen rein für Ovale. Bei letzterem könnte ein Blick hierrein helfen: the Pits
      Als nächstes das Track-Learning; es ist absolut notwendig, um eine allgemeine Linie auf zig tausende Fahrzeuge zu zuschneiden. Ein GT-Fahrzeug kann nun mal nicht die gleichen Linien nehmen wie ein Prototyp, der sich aber im selben Rennen befindet, ansonsten müsste man in AIW-Editor einen unnötigen Kompromiss eingehen. Zum Glück sind im meinem Fall die Talente bereits verteilt, auch wenn ich mir die Arbeit spare, sie mit ihrem realen Vorbild zu vergleichen.
      Ein weiteres Thema wäre SetUps, diese halte ich im Grunde nur für nötig, wenn etwas signifikant falsch ist, z.B. die Getriebeübersetzung. Im Oval sieht das ganze etwas anders aus, aber dort hat man meistens eine geringe Anzahl an verschiedenen Fahrzeugen.
      Als letztes bleibt einem nur noch das Ändern der AIW übrig bzw. wenn man bereits weiß, dass man sie ändert, sollte man das Track-Learning natürlich erst später ausführen.
      In den meisten Fälle reicht es aus, einfach nur einen neuen Fastpath zu ziehen. Dazu ist es essentiell absolut sauber und geschmeidig zu fahren, ein kleiner Rutsch kann später bei der KI zu Drehern führen. Der Rest müsste normal nicht angerührt werden, außer es handelt gegebenenfalls um eine pre Beta Version. In der "neuen" AIW ändert man nun den Wert für AIDraftStickiness im ersten Versuch auf 0, darauf folgt ein längerer Testtag. Bei diesem Test vergleicht man die eigene Rundenzeit mit denen der Konkurrenz, achtet auf mögliche Ungereimtheiten in allen Klassen und schaut sich das Verhalten im Verkehr an. Sollte einem auffallen, dass bei einem Dreher nachfolgende Fahrzeuge auch in der Wiese landen, ist der Wert erstmalig auf 0.5 anzuheben. Wenn auf dieser Seite alles zu friedenstellend war, starten man die Track-Learning Routinen, ich denke, am besten bei 100% Stärke. Der wohl letzte Schritt wäre die Gegnerstärke in der AIW auf eben 100% so anzupassen, dass sie den eigenen Fähigkeiten entsprechen. Dass dieses nicht mit allen Mods auf einer Strecke funktioniert, sollte einleuchten.


      Grundlegend für die Gegnerstärke in der AIW sind folgende drei Einträge:

      WorstAdjust=(0.8000) // Stärke für 80%, hier 80
      MidAdjust=(1.0300) // Stärke für 100%, an mich angepasste 103%
      BestAdjust=(1.2000) // Stärke für 120%

      weitere Einträge:

      drivinglines=1 // auf Straßenkursen, bei Ovalen, je nach Größe und Fahrzeug, gerne auch 2 oder mehr
      slowwhenpushed=0.00 // auch ein Wert, der unnötigerweiße auf 1.0 steht, sollte definitiv auf 0 gesetzt werden
      LaneSpacing=4.50 // ist zu variieren, je nach Streckenbreite und wie nah sich die Fahrzeuge beim Nebeneinanderfahren kommen
      AIRange=(0.1000) // besagt, in wie weit die Fahrer ans Limit gehen; sollten vermehrt Fahrzeuge von der Strecke rutschen, ist dieser Wert zu reduzieren
      AISpec=(0.0000,0.0000,1.0000,0.0000) // Begrenzung der Beschleunigung, Höchstgeschwindigkeit, Kurvengeschw. und Bremsen
      AIDraftStickiness=(0.0000) // standardmäßig auf 4.0 oder garnicht implementiert, zu ersten Tests auf 0 setzten

      PS: Meine Änderungen mache ich speziell für eine Rennserie, wie Marcel gesagt hat, funktioniert nicht jede Linie mit allen Fahrzeugen.

      Update 16.06.2013

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Crashkid ()

    • Das erste Rennen ist gelaufen. So erfreulich das eigene Abschneiden ist, macht die KI auf deren Seite dennoch Sorgen. Im Qualy Rang 4 erreicht,
      wobei die Polezeit für mich nicht zu knacken ist. Das Rennen nach 2,5h mit über 1 Minute Vorsprung gewonnen. Es fiel auf, dass die Zeiten der KI
      in einem Stint einbrechen, dies war im kurzen Testrennen nicht ersichtlich. Den Vogel abgeschossen hat aber der eigentlich zweit Platzierte,
      in der letzten Runde ging er noch einmal an die Box, hier sei angemerkt, dass der Sprit sparende Motor den zweiten Stopp rauszögerte.
      Bei diesem Stopp bekam er frische Reifen und eine volle Ladung Treibstoff verpasst, um letzter in der Klasse zu werden.
      Auch die anderen waren nicht viel schlauer und haben für die verbleibenden 20 Minuten keine Supersoft-Reifen aufgezogen und entsprechend
      nicht weniger Benzin nachgefüllt, so dass eben gerade gegen Ende der Abstand noch einmal drastisch anstieg.

      So nun zu meiner Frage; welche Möglichkeiten gibt es, die KI-Stärke in das Rennen mitzunehmen bzw. sie klügere Strategien auswählen zu lassen?

      Update 16.06.2013
    • Sry, jetzt erst deinen Post gesehen...sowas!

      Eh, also das einzige was mir dazu einfällt ist, dass du der KI Setups verpassen kannst. Wie genau das geht, krieg ich grad nicht auf die Kette. Doch du brauchst halt strecken- und fahrzeugabhängige Setups, die die KI selbstständig anwendet. So weit ich mich erinner hatte CTDP beim F1 2006 einen ziemlich umfangreichen Gebrauch von dieser Technik gemacht. Vielleicht schaust mal da?
      "Beim Beschleunigen müssen die Tränen der Ergriffenheit waagerecht zum Ohr hin abfließen." - Walter Röhrl
    • Die Sache mit dem Setup ist technisch recht leicht.

      In jeder Strecken-GDB gibt es eine Zeile die da (Streckenentsprechend) lautet:

      -> SettingsAI = Silverstone2011.svm

      Das Setup für die KIs muss dann in den jeweiligen Fahrzeugordner. Das bringt auch wirklich viel, da Setups ja schon bei uns Menschen mehrere Sekunden pro Runde ausmachen können, bei der KI ist es mit den richtigen Settings und einer guten AI-Linie sogar noch viel effektiver.

      Eines der Probleme der spezialisierten Streckensetups ist, dass du zumindest im Groben für jede Fahrzeugklasse zwei Setups erstellen musst, da viele Autos sich mit den selben Einstellungen unterschiedlich verhalten. Bei einer Mod mit Einheitsphysik ist z.B. nur ein Setup erforderlich, welches man einfach für alle Fahrzeuge kopiert, wärend bei der Endurance-Series ein Peugeot mit 6 Gang-Getriebe anders abzustimmen ist wie der Audi mit seinem 5-Gang-Getriebe. Bei den GT1 muss man relativ wenig ändern, da diese sich alle sehr ähneln, bei den GT2 hingegen wird es schon wieder kritisch, da z.B. der Panoz eine ganz andere Basisphysik zu haben scheint als der Rest und auch der Porsche 996 mangels Leistung ein völlig anderes Getriebe braucht. Der Spyker hat beim Thema Differenzial den Faktor 80 im Verhältnis zu den anderen Autos, muss also komplett anders eingestellt werden um stabil durch die Kurven zu kommen. Das wäre eben sehr viel Aufwand für ein einziges Rennen, es sei denn man legt nur Wert darauf, dass sich dort z.B. nur die Ferrari und Porsche 997 balgen, denn die sind Setuptechnisch kaum unterschiedlich.


      Außerdem hast du bei einem gespeicherten Setup den Vorteil, dass die Strategie (Sprit) mit gespeichert wird und du mit ein wenig Berechnung so den letzten Stopp für die KI zumindest in Sachen Sprit eingrenzen kannst, Reifen wechseln werden die aber eigentlich immer, das kann man leider nicht unterbinden. Man muss aber auch bedenken, dass der Computer in der Regel sowohl reifen- als auch spritschonender fährt, als es ein Mensch kann, denn durch das ständige nachkalkulieren der Warscheinlichkeit von durchdrehenden Rädern oder Untersteuern kann die KI in Millisekunden entgegenwirken, wo ein Mensch nur reagieren kann und es dann sowieso schon zu spät ist.

      Der Witz bei der Story ist, dass es mit den Setups genau umgekehrt ist, denn die oben genannten Unterschiede zwischen z.B. den Gt2 Autos sind für den Menschen nicht so schlimm, da er sich selbst bei einem einheitlichen Setup für alle GT2 anpassen kann (ich fahre z.B. mit allen GT2 Autos das selbe Setup und habe zwischen den 5 Autos nie einen Zeitunterschied von mehr als 0,6 Sekunden), die KI jedoch versucht mit völlig verschiedenen Autos immer die AIW nachzufahren und das endet meistens im Chaos :D.
      | PC | Intel Core i7 4770k @ 4,5 GHz | ASUS Maximus Hero VII | Palit GeForce GTX 1080 GameRock Premium | 16 GB Corsair DDR3 1600MHz |
      | SIM | Fanatec DD2 Base | Heusinkveld Sprint | SimLab P1-X |