26.09.2015 um 18:42
Anonymer Benutzer
Anonymer Benutzer
ForenprofiLaborratte
Eine ArmA-3 Modifikation für Gruppe W erstellt
Beiträge: 1694
Registriert am: 20.01.13
[img]http://picload.org/image/lcrlllp/fupshintergrundschatten.png[/img] is not a valid Image.
------------------------------------------------------
Was ist FUPS?
------------------------------------------------------
Was ist FUPS?
------------------------------------------------------
FUPS ist ein Skript, dass KI schlauer macht und miteinander kommunizieren kässt. Ganz grob gesagt, eine genauere Featureliste findet ihr später im Thread.
FUPS berechnet für jede KI, welche Feinde sie kennt und entscheidet basierend darauf, ob sie patrouilliert, ihre Position hält, sich zurückzieht oder einen Feind angreift. Ihr könnt der KI alles selbst überlassen, habt aber Möglichkeiten, sie ein bisschen zu steuern und zu personalisieren.
------------------------------------------------------
Features
------------------------------------------------------
Features
------------------------------------------------------
Die Liste der Features, die ihr hier seht, sind garantierte Features. Die KI kann noch mehr, wenn der Missionsbauer sich ein wenig dahinter klemmt, aber um die folgenden Punkte muss er sich nicht kümmern!
- KI patroulliert dynamisch
- KI kommuniziert ihre Feindmeldungen mit anderen KI Gruppen
- KI hat eine deutlich verbesserte Wahrnehmung und kämpft auch auf große Distanzen
- KI flankiert aktiv, wenn sie Feinde angreift
- KI erkennt, ob sie einen Feind bekämpfen kann und fürchtet ihn eventuell (KI ohne AT flieht vor einem Panzer)
- Die Berechnung von FUPS erfolgt in Konstantzeit. Das bedeutet, dass das Hinzufügen von mehr KI in FUPS nur mehr Performance kostet, weil die KI an sich berechnet werden muss. FUPS verteilt die Rechenlast automatisch und rechnet dann einfach langsamer jede Gruppe durch.
------------------------------------------------------
Verwendung
------------------------------------------------------
Verwendung
------------------------------------------------------
Bevor es losgeht, müsst den FUPS Ordner in eure Mission kopieren und folgende Zeile in der description.ext ergänzen:
class CfgFunctions {
#include "FUPS\CfgFunctions.hpp"
};
// Lasst diese Zeile aus, wenn ihr nicht wollt, dass KI Schüsse besser hören kann
#include "FUPS\hearing_XEH.hpp"
Habt ihr die class CfgFunctions schon in eurer description.ext dürft ihr sie nicht erneut reinschreiben, sondern müsst den #include Befehl dort unterbringen.
Damit eine KI Gruppe nun mit FUPS funktioniert braucht sie einen Marker. Dieser Marker stellt den Bereich dar, in dem die KI patrouillieren soll. Dann müsst ihr FUPS nur noch sagen, dass es die Gruppe XY in dem Marker AB patrouillieren soll. Dazu schreibt ihr einfach in die init-Zeile des Gruppenanführers folgendes:
null = [this,"MARKER"] call FUPS_fnc_main;
"MARKER" ist dabei der Name des Markers, in dem patrouilliert werden soll.
Das war's! Deine KI Gruppe patrouilliert nun mit FUPS.
Zusätzlich gibt es die Möglichkeit, eure KI Gruppe noch zu personalisieren, indem ihr dem Skript weitere Parameter übergebt. Diese Parameter schreibt ihr einfach mit Komma getrennt hinter den Marker, in dem die KI patrouillieren soll. Ein kleines Beispiel:
null = [this,"MARKER","NOSUPPORT","REINFORCEMENT:",[1,2]] call FUPS_fnc_main;
Was welcher Parameter bewirkt, erfahrt ihr jetzt:
- "BEHAVIOUR:",X - Standardmäßig bewegt sich FUPS KI im Modus SAFE möchtet ihr das ändern, schreibt einfach "BEHAVIOUR:",X in die Parameter (Reihenfolge beachten!). Dabei kann X "SAFE", "AWARE", "CARELESS", "COMBAT" oder "STEALTH" sein. Dies ist dann der neue Standardmodus der KI.
- "SPEED:",X - standardmäßig patrouilliert die KI mit der Geschwindigkeit LIMITED. Möchtet ihr dies änern, könnt ihr "SPEED:",X in die Parameter der KI schreiben und so die neue Patrouilliergeschwindigkeit setzen. X kann dabei "LIMITED", "NORMAL" oder "FULL" sein.
- "NOSHARE" - ergänzt ihr diesen Parameter, wird die Gruppe keine Informationen über Feinde teilen, aber eventuell noch empfangen.
- "NOSUPPORT" - ergänzt ihr diesen Parameter, wird die Gruppe keine Informationen über Feinde empfangen, aber eventuell noch teilen.
- "NOWAIT" - standardmäßig wartet die KI beim Patrouillieren ein wenig, nachdem sie einen Wegpunkt erreicht hat. Verwendet ihr "NOWAIT", wird sie das nicht mehr tun.
- "ROUTE" - Normalerweise patrouilliert die KI vollkommen zufällig in ihrem Marker. Es gibt aber auch die Möglichkeit, der KI eine Route, die sie ablaufen soll, zuzuweisen. Diese Route könnt ihr ganz einfach definieren, in dem ihr der Gruppe Editorwegpunkte zuweist. Wenn ihr "ROUTE" als Parameter ergänzt, wird FUPS diese Wegpunkte ablaufen. FUPS erkennt dabei nur MOVE und CYCLE Wegpunkte. Enthält die Route einen CYCLE Wegpunkt wird die KI diesen ganz normal benutzen, um eine dauerhafte Route abzulaufen. Existiert kein solcher, wird die KI zufällig patrouillieren, nachdem der letzte Wegpunkt erreicht wurde.
- "RANDOM" - Ergänzt ihr "RANDOM" als Parameter wird die KI an einem zufälligen Punkt im Markerbereich starten. Dies funktioniert für alle Einheitenarten und Fahrzeuge.
- "SIMULATION:",X - Mithilfe dieses Parameters könnt ihr die Berechnung der KI unter gewissen Bedingungen ausschalten. Ist X eine Zahl, dann wird die KI nur berechnet, wenn sich Spieler in diesem Radius um die KI aufhalten. Ist X ein Trigger, dann wird die KI nur berechnet, wenn der Trigger aktiviert wurde.
- "REINFORCEMENT:",X - Ergänzt ihr diesen Parameter, dann wird die KI Gruppe zu den Reinforcement Gruppen, die in dem Array X enthalten sind, hinzugefügt. Reinforcement Gruppen sind über eine Nummer benannt, die ihr euch aussuchen dürft. Ein Beispiel: "REINFORCEMENT:",[0,1,2] fügt die KI Gruppe den Reinforcement Gruppen 0, 1 und 2 hinzu.
------------------------------------------------------
KI über FUPS spawnen
------------------------------------------------------
KI über FUPS spawnen
------------------------------------------------------
Ihr könnt mithilfe von FUPS auch KI spawnen. Dazu braucht es zwei Schritte.
Erstens - Die Vorbereitung
Damit etwas gespawned werden kann, muss FUPS wissen, was man ingesamt alles spawnen kann. Dafür könnt ihr im Editor Templates erstellen. Stellt einfach eine Gruppe von KI Soldaten in den Editor, die gespawned werden soll. Dann schreibt ihr in die Init des Anführers der Gruppe:
null = [this,X] call FUPS_fnc_saveTemplate;
X spiegelt dabei die Nummer wider, unter der ihr dieses Template später spawnen könnt. Sucht euch einfach eine aus, aber passt auf, dass ihr sie nicht doppelt!
Beim Speichern des Templates werden alle Fahrzeuge der Gruppe berücksichtigt, die ihr im Editor platzieren könnt. Spezielle Loadouts, oder ob gewissen Einheiten aufgesessen starten sollen, werden momentan nicht berücksichtigt.
Die Gruppe, die als Template gespeichert wurde, kann auch als normale KI für FUPS funktionieren. Ihr könnt, nachdem das Template gespeichert wurde, mit der Gruppe machen, was ihr wollt.
Optional:
Ihr könnt in einem dritten Parameter festlegen, ob die Gruppe gelöscht werden soll, nachdem das Template gespeichert wurde. Ergänzt die Funktionsparameter dazu auf: [this,X,true]. Das Löschen kann zu Problemen mit den Templates führen und sollte daher mit Bedacht durchgeführt werden!
Zweitens - Das Spawnen
Irgendwann in der Mission wollt ihr nun eure KI spawnen. Hier ist ein Beispielaufruf:
_spawned = [_pos,"marker",[0,0,1],["REINFORCEMENT:",[1]]] call FUPS_fnc_spawn;
Dieser Aufruf spawned zwei Mal die Templates 0 und das Template 1 an der Position _pos (diese müsst ihr in eurem Aufruf ergänzen), lässt sie im Makrer "marker" patrouillieren und fügt sie der Reinforcement Gruppe 1 hinzu. An der Stelle, an der "REINFORCEMENT:",[1] steht, können natürlich noch weitere FUPS Parameter ergänzt werden. Ihr könnt sie auch komplett weglassen.
_spawned ist ein Array, das alle gespawnten Gruppen enthält.
Optional:
Wenn ihr nicht wollt, dass eine Gruppe mit FUPS initialisiert wird, die gespawned wird, dann ruft FUPS_fnc_spawn wiefolgt auf: [_pos,"marker",[0,0,1],[],false].
------------------------------------------------------
KI über FUPS angreifen lassen (Reinforcements)
------------------------------------------------------
KI über FUPS angreifen lassen (Reinforcements)
------------------------------------------------------
Wie auch zum Spawnen von KI braucht es für KI Angriffe, die ihr als Missionsbauer koordinieren wollt, zwei Schritte:
Erstens - Definition der Reinforcement Gruppen
Damit KI Angriffe durchführen kann, müsst ihr Reinforcement Gruppen definieren. Dies tut ihr beim Aufruf von FUPS_fnc_main über einen Parameter, wie oben beschrieben. Anders als bei den Spawn-Templates definieren die Nummern jedoch Gruppen. D.h., dass mehrere KI Gruppen eine Reinforcement Gruppe zugehören können. Auch kann eine KI Gruppe mehreren Reinforcement Gruppen angehören.
Zweitens - Der Angriff
Habt ihr eure Reinforcement Gruppen definiert, könnt ihr diese Gruppen angreifen lassen, indem ihr diesen Funktionsaufruf verwendet:
[_targets,[0,1],east,true,true] call FUPS_fnc_reinforcement;
Die Reinforcement Gruppen 0 und 1 der Seite east greifen nun alle Ziele in _targets an. Die beiden Wahrheitswerte true und true sagen folgendes: Das erste true sorgt dafür, dass die KI Gruppen, die geschickt werden sollen, auf jeden Fall den Angriff durchführen, selbst wenn sie bereits im Kampf sind. Wenn ihr das nicht wollt, dann setzt dieses true einfach auf false, oder lasst alle weiteren Argumente weg.
Das zweite true sorgt dafür, dass die Reinforcement Gruppen nach dem Angriff in dem Gebiet bleiben werden und nicht zurückkehren. Wenn ihr das nicht wollt, könnt ihr diesen auf false setzen, oder weglassen.
Die Ziele, die angegriffen werden können, können verschiedens sein. Mögliche Ziele:
- Ein Marker
- Ein Array aus Positionen
- Ein Array aus Objekten
Ich persönlich benutze fast nur ein Array aus Objekten. Dies kann man besonders gut in Triggern verwenden, indem man in deren ONACT. Box thislist benutzt, was alle Objekte sind, die diesen Trigger ausgelöst haben.
------------------------------------------------------
Download und Changelog
------------------------------------------------------
Download und Changelog
------------------------------------------------------
Bearbeitet von Anonymer Benutzer am 10.02.2016 um 17:06