Mitspieler Online

· Gäste: 7

· Mitspieler Online: 2
Qooper, Miller

TeamSpeak 3

Gruppe W wird unterstützt von

Gruppe W - TS

Login

Benutzername

Passwort



Passwort vergessen?
Um ein neues Passwort anzufordern klicke hier.

Ereignisse

<< August 2020 >>
Mo Di Mi Do Fr Sa So
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

Social


Thema ansehen

Gruppe W » Die ArmA-Akademie » Sonstige Hilfestellungen
 Thema drucken
BIS_fnc_UnitCapture
15.04.2018 um 03:51

Top  #1  Beitrag drucken

MasterJ

Benutzeravatar
Kopfloser Statist

Hat an der MIL63 Sleepy Hollow teilgenommen

Forenprofi


Beiträge: 1031

Registriert am: 02.10.15

Hallo zusammen,

neu ist es ja nicht, aber irgendwie wurde es vergessen, aber BIS_fnc_UnitCapture funktioniert ausgezeichnet und es eröffnet uns wirklich viele Möglichkeiten, bei denen die KI einfach an ihre Grenzen stößt.

Was ist Unitcap?
Unitcap spielt eine vorher aufgenommene Bewegung Frame für Frame ab.
Am besten kann man es denke ich im Video erkennen:

YouTube Video


Die KI könnte niemals so einen koordinierten Zugriff leisten. Mit Unitcapture wirkt es so, als ob sie es eben doch kann. Die Objekte müssten garnicht mit Piloten, Fahrern, Schützen etc. besetzt werden. Es müsste noch nicht mal der Motor an sein, da wirklich nur die vorher aufgenommenen Positionen nach und nach abgearbeitet werden.

Wie wende ich Unitcap an?
- Als erstes benennt ihr die das Fahrzeug/den Heli etc.
- Danach setzt ihr den Fahrer als Playable
- Startet das Spiel und gebt in der Debugkonsole "rec = [vehicle player,2000,60, TRUE] spawn BIS_fnc_UnitCapture;" ein. Das True kann weg, wenn ihr nicht schießen werdet, die 60 kann auch auf 20 runter gesetzt werden und die 2000 ebenfalls auf 180 o.Ä. aber dazu später mehr.
- Local Execute und dann die geplante Route abfliegen/abfahren.
- Wenn alles fertig ist, dann wie beschrieben F1 drücken, dann werden die Positionsangaben in der Zwischenablage gespeichert. Diese dann in eine SQF einfügen und ebenfalls bennen (z.B. Heli1). Die SQF selber sieht dann ungefähr so aus:
_movementdata = [*ein Shitload an Positionsangaben*]]];
_firingdata =
*alle abgefeuerten Waffen (auch Countermessures)*;
_sequence = [Heli1, _movementdata] spawn BIS_fnc_UnitPlay;
[Heli1, _firingdata] spawn BIS_fnc_UnitPlayFiring;
waitUntil {scriptDone _sequence};

- Falls ihr in der aufgenommenen Route mit eurem Fahrzeug geschossen habt, dann drückt F2 und fügt die Daten unter "_firingdata = " ein.
- Jetzt müsst ihr eigentlich nur noch die Funktion ausführen lassen - was die Konditionen dafür sein sollen, überlasse ich euch, aber über einen Trigger wird das ganze dann einfach mit
nul = [] execVM "CAP\Heli1.sqf";
ausgeführt. Ihr könnt das natürlich auch in den guten alten Skripts-Ordner verschieben, allerdings kann das ganze schon ab ~ 3 verschiedenen Einheiten sehr schnell komplex werden, weshalb ich das ganze in einen neuen Order aufteile.

Was ist dabei Unitcap zu beachten:
-Das ganze funktioniert nur solange die Insassen des Fahrzeuges mit der Route nicht auf dem HC ausgelagert sind, was euere KI-Anzahl schnell in die Höhe steigen lassen kann
- Die Fahrzeuge lassen sich für den Zeitraum nicht steuern. Ich habe mal nur aus Jux versucht während des Fluges einzugreifen und hatte sofort einen Schaden an der Engine und bin abgestürzt
- Wenn die Sequenz komplett abgespielt werden soll, dann empfehle ich euch das Fahrzeug + Insassen auf Careless und unzerstörbar zu setzen
- Wenn die SQF ausgeführt wird teleportiert sich das Fahrzeug auf die Stelle zur ersten aufgenommenen Position
- Wenn die Aufnahme beendet ist, übernimmt die KI wieder die Kontrolle und agiert dementsprechend
- ich glaube durch die Synchronisierung auf dem Server kann es sein, dass bei hohen Geschwindigkeiten nicht jede Schussaufnahem abgespielt wird
- ich empfehle die Aufnahmezeit in der Debug Console sehr hoch zu setzen, da sonst die Aufnahme ungewollt vorzeitig beendet wird. Überflüssige Zeit fällt einfach hinten runter. 2000 Sekunden haben mir bis jetzt immer gut gereicht.

Die Framerate:
- Wie schon erwähnt lässt eine erhöhte Framerate zwar alles präziser abspielen lässt, die SQF aber auch in kürzester Zeit explodiert. Ob das jetzt Auswirkungen hat weiß ich nicht. Deshalb habe ich das wie folgt eingestuft:
20 Frames für Feinde auf mittlerer bis großer Entfernung
40 Frames für Feinde im Nahbereich, sowie eigene Einheiten (für den Transport, Eskorte etc.)
60 Frames für Fahrzeuge aus denen Spieler herausschießen sollen. Z.B. der MH-6 Little Bird mit seinen Seitenbänken:
Ich hab den Leuten im Test befohlen sich nur auf den ersten und letzten Platz zu setzen (Bench 1&3). Weil ich einem anderen Test mit John Smith auf Bench 1&2 gesetzt und durch die geringe Framerate und der Serversynchronisation ineinander geglitcht, was dazu führte, dass wir ständig ins High-Ready gegangen sind und garnicht feuern konnten...



Wissenssammlung:
Hier möchte ich einfach nur die Erfahrungswerte der anderen Events sammeln, um unser Wissen Serverpervormance+BIS_fnc_UnitCapture zu verfeinern.

[DEV]_Co16_MJsLabority_0v4 Tanoa auf Baugrube: 16 Spieler mit 6x Unitcap keine großen FPS-Einbrüche
Orga14 HAHO/HALO 14 14 Spieler eine Aufnahme - keine FPS-Einbrüche, minimales Rubberbanding
Co/MilSim53 Leatherneck Stunden Später... 53 Spieler eine 30FPS Aufnahme - keine FPS-Einbrüche
Co57 DDay X-3 H 57 Spieler 8 30FPS Aufnahmen, wovon 4 Aufnamen alle 57 Spieler transportierten - keine großen FPS-Einbrüche
Bearbeitet von MasterJ am 23.09.2018 um 16:41
www.gruppe-w.de/pics/Foren_Signaturen/MasterJ.png
Tja das (ArmA-)Leben ist nunmal kein (Hollywood-)Ponyhof...

Missionsmitschnitte
Springe ins Forum:
Seitenaufbau in 0.11 Sekunden
Serverzeit: 19:33:34 Uhr , 17,905,345 eindeutige Besuche