User Tag List

Ergebnis 1 bis 8 von 8

Thema: [UE4] Massen-Fahrzeug-KI

  1. #1
    Stammgast Avatar von Josch
    Registriert seit
    19.06.2010
    Ort
    Dresden, Wunschheimat: Padua
    Beiträge
    1.257
    Renommee-Modifikator
    16

    [UE4] Massen-Fahrzeug-KI

    Hey Leute,

    ich wollte mal fragen, ob hier vielleicht jemand eine gute Idee hat, ein eher Coding-(Blueprints)-technisches Problem anzugehen
    Und zwar geht es um das GTA2-Remake, was ich in Unreal4 gerade angehe. Kurzer Einwurf: Falls noch jemand Lust hat, mitzumachen, einfach melden
    Ich habe in letzter Zeit sehr viel mit der Fahrphysik gespielt und jetzt einen Ansatz gefunden, der eigentlich ganz gut funktioniert. Muss noch etwas poliert werden, aber im Prinzip geht das glaube. Das Konzept ist, dass das Auto-Mesh letzlich über Kräfte über die Straßen geschoben wird bzw. über Drehmoment gedreht wird beim Lenken. Weitere Komponenten bringen Rollreibung und Seitenhalt der Räder ins Spiel.

    Das große Problem ist nun aber, dass ja nicht nur der Spieler mit einem Fahrzeug fahren können soll, sondern dass auch viele KI-Autos auf der Map rumfahren sollen. Und mit viele meine ich so... naja... ein paar hundert werden es bestimmt insgesamt schon sein?? Was mich schon zu meiner Frage bringt --> Wie setzt man das am besten auf???
    Sollte ich wirklich alle Fahrzeuge immer simulieren lassen? Oder lieber nur die, die in einem ungefähren Radius um den Spieler sind? (wenn ja, wie am besten?)

    Ich habe mir einen kleinen Test gebastelt mit einer rudimentären Fahrzeug-"KI" -> Also, ein System, wo das Auto einfach einer Spline folgt. Ich habe mir überlegt, dass ich meine Map mit WayPoints zupflastere, die immer an Straßenkreuzungen oder Kurven sind. Die Spline, der das Fahrzeug folgt, wird dann immer entsprechend zum nächsten Waypoint aktualisiert.
    Das funktioniert ganz gut; die Frage ist halt, ob das funktioniert, wenn ich davon ein paar hundert gleichzeitig laufen lasse

    Ich werde es bei Gelegenheit einfach mal testen, aber vielleicht hat ja jemand ein paar pfiffige Ideen, wie man es von vornherein geschickter und effekiver lösen könnte?

    Beste Grüße,
    Josch
    Nur Puffin schenkt mir die Kraft und Ausdauer, die ich brauche!

  2. #2
    Mapping-Profi Avatar von eMo
    Registriert seit
    10.12.2010
    Beiträge
    2.016
    Renommee-Modifikator
    18
    Du kannst in einer bestimmten Entfernung zum Spieler Autos mit einer gewissen Wahrscheinlichkeit generieren lassen. Diese Autos, sollten sie die Entfernung zum Spieler verlassen, werden von der Map entfernt.
    Die KI der Autos schaut immer nach vorne, wenn sie an einer Kreuzung angelangt, fährt sie mit 50% Wsk geradeaus, und je zu 25% nach links bzw. rechts. Dann halbierst du die Wsk des letzten genommenen Turns und addierst die Hälfte zu links/rechts, wenn geradeaus gefahren wurde, bzw 2/3 auf geradeaus und 1/3 auf die respektive Lenkung. Dadurch wird gewährleistet, dass die Autos nicht ständig im Kreis fahren. Gleichzeitig beschleunigen die Autos, wenn vor ihnen die Straße frei ist und bremsen je nach dem, wie nah ein anderes Ding im Sichtfeld ist.

    Probleme mit diesem Ansatz:
    1.) Es kann keine Einbahnstraßen oder Sackgassen geben
    2.) Ich habe nicht definiert, wie gelenkt wird
    3.) Spurwechsel sind noch nicht definiert

    Definitiv solltest du nicht alle Autos gleichzeitig simulieren!
    Ein kreativer Geist findet immer eine Möglichkeit, sich auszuleben.

  3. #3
    Mapping-Profi Avatar von eXi
    Registriert seit
    21.06.2010
    Ort
    Solingen
    Alter
    25
    Beiträge
    2.547
    Renommee-Modifikator
    26
    Ich hab irgendwann mal angefangen ein Traffic System Plugin zu schreiben, allerdings keine Zeit gehabt das zu Ende zu bringen.
    Ich hatte mich größten Teils hier nach gerichtet: http://www.artifactgames.de/Resume/DA_JanKrassnigg.pdf (Ab Kapitel 3 sieht man dann Straßen usw.)

    Es geht da zwar um das Simulieren einer Stadt und das automatische Generieren der Straßen, aber letzten Endes sind die Ideen wie man Straßen (mehrspurig), Parkplätze, Fußgänger usw. definiert, ganz gut.
    Ansonsten ja, die Autos nicht alle simulieren. Die Fahrzeuge müssen auch nicht unbedingt irgendeinem Ziel folgen. Einfach wie eMo beschrieben hat total zufällig umher fahren lassen und sobald sie aus der Reichweite sind despawnen.

  4. #4
    Moderator Avatar von Campeòn
    Registriert seit
    20.06.2010
    Ort
    Bielefeld
    Beiträge
    2.143
    Blog-Einträge
    1
    Renommee-Modifikator
    17
    Jo, kennt man ja aus den GTA Teilen, wenn Autos zu lange aus dem Sichtfeld raus sind und man sie dann einholt, dass sie dann verschwunden sind.

    Würde mich auf jedenfall aber auch interessieren, wie man diese zweie Teile aufbaut. 1. Das man ein Straßennetz hat dem die Autos folgen. Und 2. dass die Autos aber eine richtige KI haben, mit denen Sie Dingen ausweichen können und die standard Manöver bewältigen, wie an Kreuzungen anhalten, die Vordermann nicht auffahren usw.
    @Josch:
    Vielleicht könnten wir uns ma nächste Woche oder so in Teamspeak treffen und darüber quatschen, bzw. du zeigst mir deinen bisherigen Code.
    Because we do not know when we will die, we get to think of life as an inexhaustible well, and yet everything happens only a certain number of times ... And a very small number really. How many more times will you remember a certain afternoon of your childhood ... an afternoon that is so deeply a part of your being that you can't even conceive of your life without it? Perhaps four or five times more. Perhaps not even that. How many more times will you watch the full moon rise? Perhaps 20. And yet it all seems limitless.

  5. #5
    Stammgast Avatar von Josch
    Registriert seit
    19.06.2010
    Ort
    Dresden, Wunschheimat: Padua
    Beiträge
    1.257
    Renommee-Modifikator
    16
    Hey, ich danke euch für die Ideen
    Cool - im Unreal-Forum hat niemand irgendwas geschrieben und hier kommen gleich guter und konstruktiver Input

    Aaaalso..

    Zitat Zitat von eMo Beitrag anzeigen
    Du kannst in einer bestimmten Entfernung zum Spieler Autos mit einer gewissen Wahrscheinlichkeit generieren lassen. Diese Autos, sollten sie die Entfernung zum Spieler verlassen, werden von der Map entfernt.
    Ja, ich denke fast auch, dass das am sinnvollsten ist. Muss mir dann halt irgendein System zusammenstecken, das schaut, ob ein Player gerade in der Nähe ist und dann dort entsprechend Autos spawned. Ich denke, es ist sinnvoll, die zu entfernen, wenn sie eine gewisse Zeit nicht im Sichtfeld waren.

    Zitat Zitat von eMo Beitrag anzeigen
    Die KI der Autos schaut immer nach vorne, wenn sie an einer Kreuzung angelangt, fährt sie mit 50% Wsk geradeaus, und je zu 25% nach links bzw. rechts. Dann halbierst du die Wsk des letzten genommenen Turns und addierst die Hälfte zu links/rechts, wenn geradeaus gefahren wurde, bzw 2/3 auf geradeaus und 1/3 auf die respektive Lenkung. Dadurch wird gewährleistet, dass die Autos nicht ständig im Kreis fahren. Gleichzeitig beschleunigen die Autos, wenn vor ihnen die Straße frei ist und bremsen je nach dem, wie nah ein anderes Ding im Sichtfeld ist.

    Probleme mit diesem Ansatz:
    1.) Es kann keine Einbahnstraßen oder Sackgassen geben
    2.) Ich habe nicht definiert, wie gelenkt wird
    3.) Spurwechsel sind noch nicht definiert
    Jep, ein ähnliches System habe ich bisher. Jedes Auto hat quasi eine Spline vor sich, die bis zur nächsten Kreuzung/Kurve geht. Dort angekommen, schaut das Auto, ob es nur in eine Richtung lenken muss (Kurve), oder ob von dem Punkt aus mehrere Optionen gibt (Kreuzung). In letzterem Fall wird zufällig eine Option gewählt und die Spline dann geupdate.
    Die Steuerung des Autos ist dann recht simpel: Gas geben, bis Höchstgeschwindigkeit erreicht ist (50 km/h, z.B.), Bremsen, falls ein Hindernis erkannt wird (oder eine Ampel rot ist), und lenken, um parallel zur Spline zu bleiben.
    Spurwechsel und Sackgassen habe ich jetzt nicht eingeplant, aber ich denke, die braucht es auch nicht zwangsläufig

    Zitat Zitat von Campeòn Beitrag anzeigen
    Jo, kennt man ja aus den GTA Teilen, wenn Autos zu lange aus dem Sichtfeld raus sind und man sie dann einholt, dass sie dann verschwunden sind.
    Ist denn das bei den neueren Teilen immer noch so?
    Bzw. müsste ich echt nochmal bei GTA2 gucken, wie das eigentlich war.. Extrem krass war es ja in ViceCity...

    Zitat Zitat von Campeòn Beitrag anzeigen
    Würde mich auf jedenfall aber auch interessieren, wie man diese zweie Teile aufbaut. 1. Das man ein Straßennetz hat dem die Autos folgen. Und 2. dass die Autos aber eine richtige KI haben, mit denen Sie Dingen ausweichen können und die standard Manöver bewältigen, wie an Kreuzungen anhalten, die Vordermann nicht auffahren usw.
    Ich kann bei Gelegenheit (wohl eher erst nach den Feiertagen) mal ein paar Screenshots vom aktuellen Systemansatz hochladen. Oben hab ich es ja kurz geschrieben und denke, dass es eigentlich funktionieren müsste. Ist halt etwas gefriemel, weil die Eckpunkte der Straße und deren weitere Verknüpfungen händisch gesetzt werden müssen...

    Zitat Zitat von Campeòn Beitrag anzeigen
    @Josch:
    Vielleicht könnten wir uns ma nächste Woche oder so in Teamspeak treffen und darüber quatschen, bzw. du zeigst mir deinen bisherigen Code.
    Bei Gelegenheit sehr, sehr gern!
    Im Moment muss ich aber noch etwas Arbeit reinstecken, um zu gucken, ob es wirklich so funktioniert, wie ich mir das denke...
    Aso, und ich arbeite nicht mit Code, sondern mit Blueprints :/


    Zitat Zitat von eXi Beitrag anzeigen
    Ich hab irgendwann mal angefangen ein Traffic System Plugin zu schreiben, allerdings keine Zeit gehabt das zu Ende zu bringen.
    Ich hatte mich größten Teils hier nach gerichtet: http://www.artifactgames.de/Resume/DA_JanKrassnigg.pdf (Ab Kapitel 3 sieht man dann Straßen usw.)
    Cool, da lese ich dann während der Zugfahrt mal rein! Danke für den Link!!
    Nur Puffin schenkt mir die Kraft und Ausdauer, die ich brauche!

  6. #6
    Moderator Avatar von Campeòn
    Registriert seit
    20.06.2010
    Ort
    Bielefeld
    Beiträge
    2.143
    Blog-Einträge
    1
    Renommee-Modifikator
    17
    Zitat Zitat von Josch Beitrag anzeigen
    Bei Gelegenheit sehr, sehr gern!
    Im Moment muss ich aber noch etwas Arbeit reinstecken, um zu gucken, ob es wirklich so funktioniert, wie ich mir das denke...
    Aso, und ich arbeite nicht mit Code, sondern mit Blueprints :/
    Hab ich bisher auch nur mit gearbeitet in Unreal. Ist ja aber auch nichts anderes als visueller code.^^ Und kein stress, ich hab eigentlich auch zu viele andere Dinge zu tun, aber mich reizt es dann doch immer zu sehr.^^ Bist du in Steam öftern anzutreffen? Dann könnte man sich darüber absprechen für ein Treffen irgendwann.
    Because we do not know when we will die, we get to think of life as an inexhaustible well, and yet everything happens only a certain number of times ... And a very small number really. How many more times will you remember a certain afternoon of your childhood ... an afternoon that is so deeply a part of your being that you can't even conceive of your life without it? Perhaps four or five times more. Perhaps not even that. How many more times will you watch the full moon rise? Perhaps 20. And yet it all seems limitless.

  7. #7
    Mapping-Profi Avatar von eMo
    Registriert seit
    10.12.2010
    Beiträge
    2.016
    Renommee-Modifikator
    18
    Oh, was mir gerade kommt, wenn du die Autos sowieso nur in einer bestimmten Entfernung zum Spieler sind, kannst du sie auch über die Map selbst verwalten und einer Liste hinzufügen. Die Liste wird in jedem x-ten Tick durchlaufen, und überprüft, ob das Auto aktuell in der Render-Distanz zum Spieler ist, innerhalb derer es gespawnt werden darf. Ist es das nicht, löscht du das entsprechende Auto von der Map und aus der Liste. Sollte es in der Entfernung sein, kannst du seinen nächsten Anlaufknoten kalkulieren
    Ein kreativer Geist findet immer eine Möglichkeit, sich auszuleben.

  8. #8
    Stammgast Avatar von Josch
    Registriert seit
    19.06.2010
    Ort
    Dresden, Wunschheimat: Padua
    Beiträge
    1.257
    Renommee-Modifikator
    16
    Zitat Zitat von Campeòn Beitrag anzeigen
    Hab ich bisher auch nur mit gearbeitet in Unreal. Ist ja aber auch nichts anderes als visueller code.^^ Und kein stress, ich hab eigentlich auch zu viele andere Dinge zu tun, aber mich reizt es dann doch immer zu sehr.^^ Bist du in Steam öftern anzutreffen? Dann könnte man sich darüber absprechen für ein Treffen irgendwann.
    Ja, in Steam bin ich gelegentlich mal - da können wir auch mal bisl quatschen

    Zitat Zitat von eMo Beitrag anzeigen
    Oh, was mir gerade kommt, wenn du die Autos sowieso nur in einer bestimmten Entfernung zum Spieler sind, kannst du sie auch über die Map selbst verwalten und einer Liste hinzufügen. Die Liste wird in jedem x-ten Tick durchlaufen, und überprüft, ob das Auto aktuell in der Render-Distanz zum Spieler ist, innerhalb derer es gespawnt werden darf. Ist es das nicht, löscht du das entsprechende Auto von der Map und aus der Liste. Sollte es in der Entfernung sein, kannst du seinen nächsten Anlaufknoten kalkulieren
    Ja, ich denke, dass das ein ganz sinnvoller Ansatz ist.
    Mir ist nur noch nicht ganz klar, wie ich das am Besten mit der Liste mache... :/ Aber da findet sich bestimmt eine Lösung. Aktuell bin ich noch dabei, dass die Splines entsprechend der Straßenmeshes und Fahrspuren erzeugt werden, denke aber, dass ich das in absehbarer Zeit hinbekomme.

    EDIT: Die Diplomarbeit von dem VirtualAachenProject ist sehr interessant. Der Ansatz für die Fahrzeuge ist aber glaube fast gar nicht so gut auf mein Projekt übertragbar. Beim VAP wird ja die KI auf ein absolutes Mindestmaß gesetzt, weil gesichert ist, dass sich sozusagen alle ideal verhalten. Und dann lassen sich auch tausende Fahrzeuge gleichzeitig simulieren. Bei mir ist ja durch die Spieler, die sich frei bewegen und rumballern etc die KI etwas anspruchsvoller und muss mehr Kollisionsabfragen etc machen, sodass das glaube nicht so funktionieren wird. Ich hatte eine Weile mit dem Gedanken gespielt, einen Hybrid-Ansatz zu machen bei dem sozusagen alle Fahrzeuge immer simuliert sind, aber nur im Sichtfeld der Spieler mit entsprechende Komplexität und ansonsten nach einem stark vereinfachten Modell. Aber so wirklich überzeugt mich das selbst nicht

    Allerdings fand ich viele Gedanken zur Fußgängersimulation sehr cool und ich denke, dass ich mir da einiges abgucken kann!
    Geändert von Josch (19.04.2017 um 10:27:01 Uhr)
    Nur Puffin schenkt mir die Kraft und Ausdauer, die ich brauche!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
[email protected]