Konvoi-Fahrzeuge bleiben einfach stehen

  • Hallo Zusammen.


    Ich versuche schon seit einiger Zeit eine Singe-Player Mission zu erstellen, in der ein KI-Konvoi eine längere Strecke über Landstraßen fährt.


    Es funktioniert soweit ganz gut, bis auf die Tatsache dass einzelne Fahrzeuge des Konvois mitten während der Fahrt einfach stehen bleiben.

    Alle nachfolgenden Fahrzeuge halten dann hinter diesem Fahrzeug an. Der vordere Teil des Konvois fährt einfach weiter.

    Das passiert an einer x-belibigen Stelle, mitten auf einer geraden zweispurigen Landstraße, irgendwo zwischen zwei Wegpunkten des Konvois.

    Nur das erste Führungsfahrzeug des Konvois fährt ohne Probleme die ganze Strecke ab.


    Dieses Anhalten von Konvoi-Fahrzeugen tritt auch in einer Vanilla-Konfiguration auf.


    Kennt jemand das Problem und weis eine Lösung dafür ?


    Gibt es evtl. Konvoi-Mods oder KI-Mods die einen Konvoi in Arma fehlerfrei hin bekommen ???


    Gruß Robert

  • Mit Konvois hab ich in meiner Mission auch ganz schön gekämpft. Zumal es ja beispielsweise auch passieren kann, dass ein Fahrzeug irgendwo komplett hängen bleibt (z. B. an einer Brücke) und damit den Konvoi lahmlegt. Oder aber ein Fahrzeug bleibt kurz hängen und reißt somit nach dem Wiederanfahren eine große Lücke in den Konvoi usw. Ich hab in meiner Mission eine Vielzahl an Funktionen integriert um die KI in den Griff zu bekommen. Mittlerweile fährt sie ganz geschmeidig selbst in Konvois mit 7 Fahrzeugen. Mehr hab ich noch nicht getestet. Kannst dich mal inspirieren lassen. Sie dazu folgende Skripte in meiner Public Mission:


    Code
    1. \functions\60_taskSpawn\fn_spawneMissionsTypKonvoiAngreifenTeil1_server.sqf
    2. \functions\60_taskSpawn\fn_spawneMissionsTypKonvoiAngreifenTeil2_server.sqf
    3. \functions\60_taskSpawn\fn_spawneMissionsTypKonvoiAngreifenTeil3_server.sqf
  • Hallo Zusammen.


    Vielen Dank für die Anregungen. Vor allem der Befehl "setCouiseControl" kannte ich nocht nicht. Der ist wohl ganz neu in Arma.


    Ich hab schon einiges ausprobiert, aber es ist natürlich doof, wenn so ein Konvoi eine Fahrzeit von ca. 30 Minuten und mehr hat, und man jedesmal diese Zeit abwarten muss um das Script zu testen und einen sporadischen Fehler zu entdecken. :rolleyes:



    Gruß Robert

  • Hallo Zusammen.


    Ich habe jetzt für mich eine Lösung gefunden.


    Es scheint Situationen zu geben, in denen die KI ihre Motivation verliert, dem Gruppenführer zu folgen.

    Das kann zum Beispiel sein, wenn ein Fahrzeig des Konvois wegen eines zu langsam vorausfahrenden Fahrzeuges ein Vollbremsung machen muss. Dann vergisst der Fahrer/Kommandant des Fahrzeuges dem Gruppenführer zu folgen.


    Daher habe ich in das Init der Gruppe "MyKonvoi" folgenden Code eigefügt, der alle 10 Sekunden prüft ob die Fahrzeuge noch fahren.

    Wenn sie weniger als 5 km/h fahren, dann werden sie mit dem Befehl "doFollow" an ihre Pflichten erinnert.


    ===============
    []spawn
    {while {true} do
    {sleep 10;
    {if (speed vehicle _x < 5) then
    {(vehicle _x) doFollow (leader MyKonvoi);
    };
    } forEach (units MyKonvoi);
    };
    };
    ===============

    Am liebsten wäre mir natürlich, wenn ich die Motivation "doFollow" (oder ähnliche) der KI auch irgendwo direkt auslesen könnte, aber so einen Befehl/Eigenschaft habe ich leider nicht gefunden.


    Die Lösung ist natürlich recht einfach und muss für komplexere Missionen noch mit Bedingungen ein und ausgeschaltet werden können.



    Gruß Robert

  • Hallo Zusammen.


    Noch eine kleine Ergänzung:


    Wenn eines der Konvoifahrzeuge bei Bergauffahrten zu langsam wird, oder wegen Fahrproblemen stecken bleibt, wird der Konvoi auseinander gerissen, weil das Führungsfahrzeug einfach stur weiter fährt. Daher wurde das Script folgendermaßen eränzt:


    Wenn der Abstand zwischen Führungsfahrzeug "MyKonvoiCar1" und dem letzten Konvoifahrzeug "MyKonvoiCar8" mehr als 400 Meter beträgt wird das Führungsfahrzeug mit "MyKonvoiCar1 limitSpeed 1" nahezu angehalten.


    Wenn der Abstand zwischen 350 und 400 Metern liegt, wird das Führungsfahrzeug mit "MyKonvoiCar1 limitSpeed 30" eingebremst, damit der Rest des Konvois aufholen kann.


    Welche Abstände man hier benutzt hängt natürlich davon ab, wie viele Fahrzeuge im Konvoi fahren, wie groß der Abstand ist, und welche Geschwindigkeiten gefahren werden. Da muß man ein bischen herumprobieren.


    ==============================

    []spawn

    {while {true} do

    {sleep 10;

    _MyKonvoiLength = MyKonvoiCar1 distance2D MyKonvoiCar8 ;

    if( _MyKonvoiLength < 350) then

    { MyKonvoiCar1 limitSpeed 100 ;

    }

    else

    {if( _MyKonvoiLength > 400) then

    {MyKonvoiCar1 limitSpeed 1 ;

    }

    else

    {MyKonvoiCar1 limitSpeed 30 ;

    };

    };

    {if (speed vehicle _x < 5) then

    {(vehicle _x) doFollow (leader MyKonvoi);

    };

    } forEach (units MyKonvoi);

    };

    };

    ==============================


    Das Script hat jetzt in einem gemischten Konvoi mit 8 Fahrzeugen (Kettenfahrzeuge, LKW, PKW) prima funktioniert.

    Man kann sogar während der Fahrt vom Beifahrersitz auf den Fahrersitz wechseln, die nachfolgenden Konvoifahrzeuge in die Pampa führen, wieder zurück auf den Beifahrersitz wechseln, und die KI fährt den Konvoi wieder zurück auf seine alte Route.


    Gruß Robert

  • Hi,


    Code
    1. (vehicle _x) doFollow (leader MyKonvoi); 

    kann schon mal nicht funktionieren.

    Lies mal hier: doFollow - Bohemia Interactive Community


    1. These commands (doFollow or commandFollow) work only if the two units are in the same group.

    2. The name of this command is a bit misleading, it is used to make a unit return to the formation of its group or subformation.

    Ein Driver muss ja folgen und nicht das Fahrzeug.
    Dann ist unklar was ist den überhaupt MyKonvoi?

    Ist das ein Array mit Variablen, welche du für jedes Fahrzeug vergeben hast?


    LG


    Pille