PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AI über Entfernung löschen


Bomeo
31.07.2016, 19:24
Hallo zusammen,
ich suche ein Script das Einheiten töten soll die weiter weg als 500m von einem Spieler sind.
Ich dachte mir ich lege einfach ein Trigger oder Marker über die komplette karte und lasse da dann alle 30 sek. per Script eine Abfrage laufen die dann die Einheiten löscht die zu weit weg sind. So war zumindest mein Gedanke in der Theorie.... In der Praxis habe ich leider keinen Schimmer wie ich das umsetze.
Ich habe schon nach ähnlichen Skripten gesucht aber nichts passendes dazu gefunden. Kennt ihr zufällig ein bestehendes Script mit dem ich das machen kann oder kann man mir hier sagen wie ich das selbst umsetzen kann?

Genauer arbeite ich mit einigen Mods wie: Zimbie's and Demons, Raptoren, und auch der normalen AI von Arma. Ich habe eine reine Funmission für mich und meine Kumpels gebaut in der es um nichts tiefgründigeres geht... Hauptproblem ist dass irgendwann die Map so vollgemüllt ist, dass es derbe zu laggen beginnt.
Ich habe alle der gleichen Fraktion, also Opfor zugewiesen, wichtig ist nur dass die AI nicht per deleteVehicle gelöscht wird, sondern erst einmal per setDamage gekillt wird.

Ich danke schon mal für alle hilfreichen Antworten!

Liebe Grüße Bomeo

Cartman
31.07.2016, 19:37
Nutze doch das "Simulations Manager" Modul, sofern die Mission es zulässt.

Da stellst Du einfach den Radius ein und die Einheiten werden nicht mehr dargestellt.

Alternativ gibt es das auch als Script.

ZBE Caching - Miscellaneous - Armaholic (http://www.armaholic.com/page.php?id=26093)

Bomeo
31.07.2016, 20:29
Das Modul hat einen super ersten Eindruck gemacht, ein ganz Großes Problem daran ist, dass meine auf der Map platzierten Sachen alle weg sind nach dem starten.

Cartman
31.07.2016, 20:49
Die Objekte sollten sich eigentlich wie die Einheiten verhalten.

Welchen Radius hast Du denn eingestellt, bzw funzt es mit den Einheiten?

So sollte es aussehen.

ajgkC_peMSw

P.S. Sehe ich es richtig, dass BIS nach 3 Jahren immer noch keine Dokumentation dafür hat, oder bin ich nur zu doof zum suchen?

Bomeo
31.07.2016, 21:07
Nein, so sieht es leider nicht aus bei mir. Die Spawn Module etc. Funktionieren weiterhin, aber alles was ich gemappt habe ist und bleibt weg, auch wenn ich eigentlich direkt davor stehen würde.
Eingestellt habe ich 1000m.

Cartman
31.07.2016, 21:19
Magst Du mal nen Screenshot von den Moduleinstellungen machen? :)

Bomeo
31.07.2016, 21:25
Im Anhang befindet sich der Screenshot.

Cartman
31.07.2016, 21:34
Stell mal den Platzierungsradius hoch, dann sollte der alles im Radius einschließen. ;)

romans
31.07.2016, 21:43
Der Platzierungsradius aktiviert doch nur die Zufallsplatzierung innerhalb des eingestellten Radius. Hat also mit der Funktion an sich rein gar nichts zu tun.

Cartman
31.07.2016, 21:57
Ach stimmt, den Fehler hatte ich schon mal gemacht. :rolleyes:

Dann bin ich aber auch überfragt, bei mir hat das immer ordentlich gefunzt. Allerdings habe ich seit dem Apex Update nichts mehr gebaut, vielleicht wurde da was zerschossen!?

Evtl. musst Du auch mehrere Module setzen, also praktisch überall, wo Du etwas gebaut hast!?

Hast Du mal die Script-Variante getestet?

Ich kann mir da auch wieder nur an den Kopf fassen. Das Modul ist im Bereich MP ne gute, einfache Lösung mehr FPS zu erzielen und man findet null Doku dazu.

Alles was ich gefunden habe, war ein Thread in dem sich Leute im BI Forum fragen, wofür das Modul gut ist. :naughty:

Drunken Officer
31.07.2016, 22:50
Wie heißt die gruppe der Spieler?
Ich nehme jetzt einfach mal: Wurstwasser
//-- quasi in die Init des Anführers schreibst du rein: Wurstwasser = group this;

lass folgenden Code z.B. in einem Trigger ausführen.

totalsinnloseEditorVariable = (leader Wurstwasser ) spawn

{
if (isServer) then {
while {true} do
{
{
if ( (side _x == EAST) && (_x distance _this > 500) ) then
{ _x setdammage 1};
} forach allunits;
sleep 30;
};};}

Bomeo
01.08.2016, 12:57
Ich habe in der Mission 4 verschiedene Gruppen, 2 bei Bluefor und 2 bei Wiederstand. Wenn ich jeder Gruppe das einbau kommt sich das doch bestimmt ziemlich in die Quere oder?
Kann man das verallgemeinern und statt auf eine Gruppe das ganze pauschal auf Player beziehen?

romans
01.08.2016, 15:39
Schau dir mal die Alive Mod an. Vielleicht wäre das eine Option für dich.
ALiVE (http://alivemod.com/#)

Du musst ja nicht alles nutzen, was die Mod bietet. Das Einheiten Caching funktioniert in jedem Fall prima.

Drunken Officer
01.08.2016, 22:45
Keine Ahnung ob die dich in die Quere kommen. Ich weiß ja nicht, wie die Gruppen verteilt sind.
Sind die Gruppen weit von einander entfernt, Muss die Abfrage eine andere sein. Dann muss die Abfrage lauten, ob ein Zombie im Umkreis von 500m einen Feind hat.

Player geht nur bedingt. Der Server kennt keinen Player. Dieses Töten, Kannst du auch die jeweiligen Clienten ( Gruppenführer ) übernehmen lassen.

Keine Ahnung wie sich das auf die Performance auswirkt.

Hier mal ein Beispiel.
Es wird gepürft, wer sich im 500m Radius eines jeden Zomies befindet. Wenn sich keine Blaue Einheit darunter befindet, wird dieser Zombie getötet.


checkblueforEachZombie=[] spawn
{
if (!isServer) exitwith {};
while {true} do
{
private ["_nearunitsarray"];
{
if (side _x == EAST) then
{
_nearunitsarray = (getpos _x) nearEntities ["CAManBase", 500];
if ( {side _x == WEST } count _nearunitsarray == 0 ) then { _x setdammage 1};
};


} forEach allunits;
sleep 60;
}; };


Mal ne Frage: Wieviel Zombies hast du auf der Karte, dass du zu so einem Schritt greifen musst? Bzw. wie läßt du es spawnen. Ich habe ach mal ne Zombie-Missi gebaut. Damit es nicht langweilig wird, habe ich im zufälligen Zeitfenster, im zufällig im Umkreis von 500 m eine zufällig große Zombiegruppe spawnen lassen, welche auf die Spielergruppe zulief. Damit solltest du eigentlich lange hinkommen und musst nicht jede Minute prüfen.

Bomeo
02.08.2016, 22:35
Danke für die Hilfe bis jetzt.
Ich habe ca. 20 Zombiespawns verteilt bei denen jeweils 25 Zombies spawnen, dazu benutzte ich das Modeigene Spawnmodul. Dann habe ich noch etwa 10 Zonen bei denen Opfor Soldaten auch mit jeweils 20 Männer ink. Fahrzeuge, auf einer Insel habe ich einen Spawn mit Raptoren, das wären auch nochmal 40 Stück.
Dann kommen noch die Eigene Fraktion mit 2 Gruppen die jeweils 5 Spieler beinhaltet und dann noch die Gegnerfraktion mit der Gleichen Anzahl.
Die Gruppen selbst befinden sich eher weiter auseinander.

Ich werde das Script morgen Abend einbauen und testen, heute wird es leider nichts mehr bei mir. Die Alive Mod schau ich mir dann auch nochmal etwas näher an, die Sache mit dem Caching hat mein Interesse geweckt.

Drunken Officer
02.08.2016, 23:18
Wenn nur die Zombies und nicht die Opfor Soldaten sterben sollen, muss die Faction-Abfrage mit rein.
Dazu Wiki befragen. Setze dich damit auseinander, präsentiere deinen Lösungsansatz und ich helfe dir weiter.

Cartman
03.08.2016, 09:19
Wenn das Caching, Dein Interesse geweckt hat, dann solltest Du noch mal das ZBE Caching Script genauer ansehen. ;)

Dazu noch nen Garbage Collector und die Mission läuft butterweich. :naughty:

Drunken Officer
03.08.2016, 10:01
Wenn er mit Caching arbeiten will, braucht er aber paar Script-Kenntnisse mehr.
Geht schon allein darum, wenn die Abfragen starten welche Einheite bereits erfasst wurden und welche nicht

Cartman
03.08.2016, 10:17
Naja, es geht ihm ja eigentlich nur um mehr Performance und da führen viele Wege nach Rom. ;)

ZBE Caching lässt sich doch sehr einfach einbinden, da ist auch ne Beispiel Mission dabei.

Das mit der Abfrage, ob lebendig, oder tot, will er ja nur einbauen, damit die aktiven Einheiten bei 500 m nicht in Sichtweite despawnt werden, soweit ich es verstehe.

Also warum selbst ein Script schreiben, wenn er einfach was fertiges nutzen kann? Ginge ja auch z. B. über DAC und Co.

Die 500 m könnte man dann einfach hochstellen. Kommt halt auch drauf an, wie viele Spieler letztendlich auf dem Server sind, ob er mit Nebel arbeitet, ob er nen HC hat, was für einen Server er überhaupt hat, usw.

Wenn das ne 40 Mann Mission auf nem 20€ Server werden soll, bei 1.000 KI Einheiten, dann bringen die besten Ratschläge eh nichts. :naughty:

Drunken Officer
03.08.2016, 12:29
Das stimmt wohl. Obwohl ich die Anzahl der KI recht hoch finde. Ich bin mit den Zombies auch schon ordentlich auf den Brettern gelandet. Bei ca. 120 Zombies in einer Stadt rauchte der Server ab.

Cartman
03.08.2016, 13:02
Wir hatten als ersten Test, mit dem ZBE, mal ne Mission auf Fallujah, mit über 400 Einheiten, gebaut. Die lief echt gut und man spart sich irgendwelche spawn/despawn-Geschichten, daher nutze ich das sehr gerne. Am besten noch, in Verbindung mit nem HC.

Beim Simulationsmanager Modul, hatte ich übrigens wirklich überall, wo ich was gebaut hatte, ein Modul gesetzt. Ist halt genial, wenn die dicke Base verschwindet, nachdem man raus ist und die Gegener Camps erst spawnen, wenn man in die Nähe kommt. So kann man sich halt etwas austoben, ohne Angst zu haben, dass man zuviele Objekte setzt, die an der Performance zerren. ;)

Pfandgiraffe
04.08.2016, 08:46
Arma Merksatz Nr. 527: Entscheidend ist nicht die Menge der Einheiten sondern die Menge der Gruppen. :schlau:

Cartman
04.08.2016, 09:24
Muss doch nen Unterschied machen, sonst würden DAC und Co. keine Funktionen haben, wo nur die Gruppe gecached wird und der Gruppenführer alleine weiterläuft? Wäre ja unnötig, wenn es keinen Performance Gewinn bringen würde, oder? :nachdenklich:

Pfandgiraffe
04.08.2016, 13:35
Ich habe nicht gesagt das es nichts bringt.

Es geht mehr darum, dass ihr euch hier auf die Anzahl der Einheiten konzentriert. 120 Einheiten aufgeteilt auf 120 Gruppen ist eine andere Liga als 120 Einheiten verteilt auf 10 Gruppen. Es geht nicht so sehr um das cachen, ist eher ein allgemeiner Punkt.


Grüße

btw: Man kann das auch mit enableSimulation und mit Hilfe von einem Trigger lösen. Komplizierte cache Scripte müssen nicht die Lösung sein. Stichwörter: Spieler vorhanden/nicht vorhanden in Trigger...

Drunken Officer
04.08.2016, 16:12
Er läßt sich ja nicht wirklich aus, wo die Einheiten sind, wo sich sich bewegen usw.
Ich gehe davon aus, dass auch Zombies auf der Fläche verteilt sind und nicht nur in Stadt.

Aik
15.09.2016, 15:12
Ich hab das Simulatios Manager Modul mal auf unserem Dedi getestet. Dort waren die Objekte alle weg und sind nicht gespawnt wenn Spieler vor Ort. Im SP hats gut funktioniert.Kann es sein das die Funktionen erst Publik gemacht werden müssen? Sind ja scheinbar nur auf dem Server gewesen.

Tajin
16.09.2016, 11:14
Ich überleg grade ob es nicht eine interessante Alternative wäre bei soetwas nicht die Entfernung zur Spielerposition zu messen, sondern die Entfernung zu der Position auf die der Spieler gerade schaut.

Ob dass dann in der Praxis auch brauchbar ist, keine Ahnung. Jedenfalls klingt es interessant genug das ich es definitiv ausprobieren werde :zahn: