Crytek-HQ.com

Rund um Gegner

Mit freundlicher Genehmigung von www.sandbox.6x.to (von dort stammt dieses Tutorial).


Rund um Gegner


- Body verAendern

 
- Grunt ausruesten
 
- Grunt faehrt Fahrzeug
 
- Grunt laeuft Patrouillie (AIPath)
- Grunt laeuft Patrouillie (TagPoint)
 
- Grunt kann Gebaeude betreten
 
- Grunt kann Kisten tragen
 
- Grunt macht Schiessuebungen
 

- Gunship allgemein

 


Body veraendern
auch: DeadBody

Voraussetzungen:

beliebige Figur = z.B. [Objects] - [Entity] - [AI] - [Grunt]

Ausfuehrung:
Das Modell der Figur selbst kann ueber [Entity Properties] - [Model] geaendert werden. Jedes Model kann aber noch im Aussehen veraendert werden. Dies geschied ueber [DataBaseView] - [Materials]. Wir oeffnen dazu ueber die Datei [Mercenaries.xml].
Nun muessen wir mit ein wenig Suchen ein passendes Auesseres finden. fuer den [Grunt] finden wir unter [Rear] entsprechende Erscheinungsbilder:

Wir sollten sicherstellen, dass im Editor nur die zu Aendernde Figur ausgewaehlt ist! Nun waehlen wir das Modell [Max] und klicken auf das Symbol oben links mit der blauen Kugel und dem Pfeil zum gruenen Quader (vergleiche mit Bild oben). Schon besitzt der [Grunt] ein neues Modell.

DeadBody:
Die gleiche Vorgehensweise gilt auch fuer [Objects] - [Entity] - [Other] - [DeadBody].
Um den Koerper (annaehernd) in eine bestimmte Position zu bringen, muessen die folgenden beiden Punkte unter [Entity Properties] aktiviert werden:

[CollidesWithPlayers] = Gibt an, dass der Spieler mit dem Koerper kollidieren kann und nicht durch ihn hindurch laeuft.
[PushableByPlayers] = Gibt an, dass sich der [DeadBody] auch bei einer Beruehrung bewegen kann.

Wenn wir nun ueber [Strg]-[G] ins Spiel gehen, kann die Koerperhaltung durch Anstossen veraendert werden.
Um eine geeignete Koerperhaltung zu erreichen, bedarf es einigen Experimenten. Das Problem bei meinem Editor ist, dass sich der [DeadBody] nach einem [Esc] (um aus dem Spiel zu kommen) teilweise um 90° verdreht. Sollte er jedoch die richtige Position irgendwie erreicht haben, so muessen wir nach dem [Esc] bei ausgewaehltem [DeadBody] im Menue [Modify] - [Physics] - [Get Physics State] auswaehlen und dann sollte der [DeadBody] seine Position beibehalten...


Grunt ausruesten

 

Voraussetzungen:

beliebige Figur = z.B. [Objects] - [Entity] - [AI] - [Grunt]

Ausfuehrung:
Wir stellen den [Grunt] in die Karte. In seinen Eigenschaften klicken wir unter [Entity Properties2] auf den Eintrag [Equipment] und dann nochmal auf die drei Punkte am Ende:

Daraufhin erschein das Fenster [Equipment-Packs].
Um eine neue Ausruestung zu erschaffen, klicken wir auf [Add] und geben einen neuen Namen dafuer ein. Wenn die neue Ausruestung noch nicht in der kleinen Auswahl-Box oben links eingetragen ist, dann sollten wir diese jetzt auswaehlen.

Wenden wir uns den drei Spalten zu:
- Die linke Spalte zeigt die Gegenstaende an, mit denen man den [Grunt] ausruesten kann.
- Die mittlere Spalte, welche Gegenstaende der [Grunt] bereits hat.
- Die rechte Spalte gibt die Munition an, die als Grundausstattung bereits mitgefuehrt wird.

Mit den Doppelpfeilen zwischen der linken und der mittleren Spalte koennen ausgewaehlte Gegenstaende ausgetauscht werden. In der rechten Spalte wird die Anzahl per Hand oder Maus veraendert.
Die primaer zu benutzende Waffe ist mit einem einfachen Maus-Klick in der mittleren Spalte zu kennzeichnen.

Hinweise:
- Die gleich Vorgehensweise gilt auch fuer die Ausruestung des Spielers. Diese kann auch ueber [Mission] - [Edit Equipment-Packes...] erreicht werden. Dabei muss dass Equipment-Pack [Player] bearbeitet werden.


Grunt faehrt Fahrzeug
mit [GoPath]

Voraussetzungen:

Gegner/KI = [Objects] - [Entity] - [AI] - [Grunt]
Fahrzeug = [Objects] - [Entity] - [Vehicles] - [Buggy]
mehrere TagPoints = [Objects] - [TagPoint] - [TagPoint]
Ausloeser = [Objects] - [Entity] - [Trigger] - [ProximityTrigger]

Ausfuehrung:
Wir stellen das Fahrzeug auf die Karte und daneben einen Gegner. Als naechstes stellen wir beim Fahrzeug und dem Gegnern die [groupid] auf die gleiche Zahl (z. B. '10'). Sie ist jeweils unter [Entity Properties 2] zu finden. Bei dem Gegner setzen wir zur besseren Veranschaulichung die Option [species] auf 0. Damit greift der Gegner (nun eher ein Mitstreiter) uns nicht an, wenn wir das Geschehnis aus der naehe beobachten.

Nun fuegen wir die TagPoints ein: Wir erstellen vorerst nur einen! Dieser soll der erste anzufahrende Punkt sein. Wir benennen ihn 'Buggy_PATH_P0' (am Ende ist eine Null!).
Da der TagPoint noch ausgewaehlt ist, machen wir einen [Rechtsklick] auf die Kartenansicht und druecken dann [Strg]-[C] (klont den vorhandenen TagPoint). Der neue TagPoint erhaelt automatisch eine aufsteigende Nummerierung und wird dementsprechend in der Reihenfolge der Route gesetzt. Jetzt koennen wir mit [Strg]-[C] noch weitere Punkte setzen, so dass die gesamte Route bestueckt ist.

Nun wenden wir uns wieder dem Buggy zu und Aendern folgende Einstellungen unter [Entity Properties]:

Pathloop = False
pathname = Buggy_PATH_P
pathsteps = Die Anzahl der gesetzen TagPoints...!?


Nun muessen wir das Ganze noch ausloesen. Dazu setzen wir den Ausloeser die naehe des Buggies. Nun verbinden wir den Ausloeser in den [Input-/Output-Events] ueber [On Enter] und [Pick New] mit dem Buggy. Als Befehl setzen wir [GoPath].

Wenn wir nun das Ganze mit [Strg]-[G] ausprobieren, sollte sich der Grunt beim Betreten des Ausloesers in das Fahrzeug setzen und eine Runde fahren...

Tipps:

  • Die Fahrzeuginsassen muessen nicht zwingend die gleiche [groupid] habe. Dazu muss dannn jedoch die Option [SameGroupID] im Buggy auf 'False' gesetzt werden.
  • Soll das Fahrzeug patroullieren, ohne am Ende der Strecke zu halten, ist die Option [Pathloop] beim Buggy zu aktivieren/setzen.
  • Sollten mehrere Fahrzeuginsassen zu Beginn immer die Seiten zum Einsteigen tauschen, dann [Generate AI Triangulation] ausfuehren.

  • Grunt laeuft Patrouillie (AIPath)
    hier: ueber AIPath

     

    Voraussetzungen:

    Grunt = [Objects] - [Entity] - [AI] - [Grunt]
    AIPath = [Objects] - [AI] - [AIPath]

    Ausfuehrung:
    Wir setzen den [Grunt] auf die Karte und zeichnen mit dem [AIPath] einen Weg, den der [Grunt] laufen soll. Nun bekommmt der [AIPath] den Namen des [Grunt] PLUS die Endung '_PATH'!
    Beispiel: Der [Grunt] heisst 'Pat01', dann heisst der [AIPath] 'Pat01_PATH'
    Nun bekommt der [Grunt] noch unter [behaviour] die Eigentschaft [Job_PatrolPath] oder [Job_PatrolPathNoIdle] .


    Grunt laeuft Patrouillie (TagPoint)
    hier: ueber TagPoints

     

    Voraussetzungen:

    Grunt = [Objects] - [Entity] - [AI] - [Grunt]
    diverse TagPoints = [Objects] - [TagPoint] - [TagPoint]

    Ausfuehrung:
    Wir setzen den [Grunt] auf die Karte und setzen mehrere [TagPoint] an den Stellen, wo der [Grunt] entlang laufen soll. Die [TagPoint] bekommen den Namen des [Grunt] PLUS eine Endung. Diese Endung setzt sich aus '_P' + eine forlaufende Nummerierung zusammen!
    Beispiel: Der [Grunt] heisst 'Pat02', dann heisst der erste(!) [AIPath] 'Pat02_P0'. Der naechste anzusteuernde Punkt wuerde 'Pat02_P1' heissen.
    Nun bekommt der [Grunt] unter [behaviour] eine der folgenden Eigentschaft [Job_PatrolCircle] , [Job_PatrolLinear] oder [Job_PatrolPathNode] .

    Hinweis:
    Der Pfeil der [TagPoint]s gibt an, in welche Richtung der [Grunt] bei einem kurzen Verweilens guckt.


    Grunt kann Gebaeude betreten
    hier: betreten ueber einen Ein-/Ausgang

     

    Voraussetzungen:

    Gebaeude = [Objects] - [Brush]- [Buildings] - [m03] - [compound_area] - [coa_storage2]
    2 Areas = [Objects] - [AI] - [ForbiddenArea]
      [Objects] - [AI] - [AINavigationModifier]
    diverse AIPoints = [Objects] - [AI] - [AIPoint]

    Ausfuehrung:
    Wir stellen das Hauses auf und zeichnen mit einem leichten Ueberrand eine [ForbiddenArea] darum. Am Eingang legen wir die Area etwas weiter weg, damit die Gegner nicht an der Wand lang schleichen:

    Nun legen wir die [AINavigationModifier]-Area noch darueber und fuellen damit den Innenraum, den die Gegner betreten duerfen. Dabei lappt am Ein-/Ausgang ein Teil der flaeche heraus. Dies wird spaeter die 'Bruecke' ueber die die Gegner den Raum betretten (bzw. die [ForbiddenArea]) duerfen:

    Es folgen die [AIPoint]'s. Beginnend mit 2 Punkten im Eingangsbereich auf der erstellten Ueberlappung und 1 Punkt im Eingangsbereich innerhalb des Gebaeudes. Die beiden Punkten ausserhalb werden jeweils ausgewaehlt und in ihren Eigenschaften unter [AIPoint Parameters] jeweils auf [Entry Point] bzw. [Exit Point] umgestellt. Damit haben wir je einen Ein- und Ausgang.

    =

    Damit die Gegner evtl noch um Hindernisse geleitet werden koennen, verteilen wir weitere [AIPoint]'s in Form von [WayPoint]'s im Raum. Sollten die Gegner sogar Deckung benutzen koennen, so erstellen wir einen [AIPoint] und Aendern ihn zu einem [Hide Point].

    Haben wir alle Punkte gesetzt, verbinden wir sie mit [Pick] logisch miteinander. Es sollten dabei Verbindunglinien zwischen den Punkten entstehen.
    Wichtig sind die ersten drei Punkte die wir erstellt haben:
    Wir verbinden jeweils den [Entry Point] und den [Exit Point] mit dem ersten [WayPoint]; nicht jedoch miteinander!
    Das Ganze sollte dann ungefaehr wie folgt aussehen:

    Schwierig wir es nun das Ganze zu testen... Evtl. sollten dazu einfach ein paar [Grunt]'s ohne Waffen erstellt werden, die im naeheren Umfeld platziert werden. Wenn wir im Menue ueber [Game] - [Switch to Game] mal probeweise starten, dann sollte der ein oder andere Gegner einem ja mal ins Haus folgen, wenn wir uns darin verstecken. Oder wir laufen um das Haus herum und ein Gegner verirrt sich ins Haus.

    Hinweise
    - Sollten wir ein Gebaeude mit Fenstern haben und die Gegner haben keine Waffen, dann koennen wir sehr schoen beobachten, dass Gegner einem Spieler auch nur dann hinterer laufen, wenn sie ihn durch die Fenster nicht sehen koennen.

    - Bei Gebaeuben mit mehr als einem Eingang wird der oben beschriebene Eingangsbereich auch fuer jeden weiteren Eingangsbereich benoetigt!


    Grunt kann Kisten tragen

     

    Voraussetzungen:

    Grunt = [Objects] - [Entity] - [AI] - [Grunt]
    AIAnchor = [Objects] - [AI] - [AIAnchor]
    Kisten = [Objects] - [Entity] - [Others] - [AICrate]

    Ausfuehrung:
    Wir setzen mehrere Kisten an den Punkt, wo der [Grunt] sie abholen soll. Dann setzen wir auf den Punkt, von dem aus der [Grunt] alle Kisten moeglichst realistisch aufnehmen kann, einen [AIAnchor]. Als [AIAnchor] - [Action] setzen wir [AIAnchor_Pickup].
    Dann den 2. [AIAnchor] an den Punkt, wo die Kisten abgeladen werden sollen. Hierbei [AIAnchor] - [Action] auf [AIAnchor_Putdown].
    Fehlt nur noch der [Grunt]. Den setzen wir irgendwo dazwischen und [Grunt] - [Entity Properties2] - [behaviour] auf [Job_CarryBox].

    Varianten:
    Damit der [Grunt] auch andere Sachen tragen kann, muss im entsprechenden Gegenstand folgende Option gesetzt werden:
    [AIAction] auf [AIOBJECT_CARRY_CRATE]
    Dies fuehrt aber teilweise zu unrealistischem Stapelverhalten bzw. unrealistischer Trageweise der Gegenstaende.


    Grunt macht Schiessuebungen

     

    Voraussetzungen:

    Grunt = [Objects] - [Entity] - [AI] - [Grunt]
    TagPoint = [Objects] - [TagPoint] - [TagPoint]

    Ausfuehrung:
    Wir setzen den [Grunt] an seinen Punkt, von dem aus er seine Uebungen machen soll. Wir stellen bei ihm [Entity Properties2] - [behaviour] auf [Job_PracticeFire].
    Danach bauen wir ein Ziel auf und setzen daran mittig den [TagPoint]. Der [TagPoint] bekommt den Namen des [Grunt] plus die Erweiterung '_SHOOT'.
    Beispiel: Der [Grunt] heisst 'Pat01', dann heisst der [TagPoint] 'Pat01_SHOOT'
    Damit ist eigentlich schon alles getan. Wenn der [Grunt] mit einer Waffe ausgeruestet ist, sollte er mit seiner Uebung beginnen, sobald wir ins Spiel gehen ([Strg]-[G]) oder den Button [AI/Physics] anklicken. Sollte dies nicht der Fall sein: [Game] - [Generate AI Triangulation] oder [Tools] - [Reload Scripts] ausfuehren.

    Hinweis:
    In den Datenbanken liegen bereits Gegenstaende, die beschossen werden koennen (Dosen & Flaschen):
    [DataBaseView] - [Entity Library] - Datei [Physicalized_Objects] oeffnen - ueber [Objects] - [Archetype Entity] den Ordner oeffnen - im Unterordner [Cafeteria] liegen dann unter anderem:
    [bottle_beerA_breakable]
    [bottle_beerB_breakable]
    [softdrink_can_blue]
    [softdrink_can_green]
    [softdrink_can_red]
    [softdrink_can_yellow]


    Gunship allgemein

     

    Voraussetzungen:

    Heli [Gunship] = [Objects] - [Entity] - [AI]- [Gunship]
    Gegner = z. B. [Objects] - [Entity] - [AI] - [Grunt]
    TagPoint = [Objects] - [TagPoint] - [TagPoint]
    Ausloeser = [Objects] - [Entity] - [Trigger] - [ProximityTrigger]

    Die Steuerung des Heli ist recht vielseitig, aber auch mit viel experimentieren verbunden.
    Gesteuert wird der Heli ueber einen Trigger. Dieser kann dann natuerlich auch ueber [Shape]'s gesteuert werden.

    [ProximityTriger]:

    Fly = Weist den Heli an, auf FlugHoehe [FlightAltitude] zu gehen.
    - Dies funktioniert nicht, wenn der Heli am Boden ist und der Motor nicht laeuft.
    GoAttack = Heli fliegt zum [TagPoint] der unter [Entity Properties] - [pointAttack] eingetragen ist.
    - Bewegt den Heli zum Abheben
    - Der MG-Schuetze kann seine eigene Mannschafte erschiessen, falls diese noch nicht abgesetzt wurde und der Winkel zum Gegner unguenstig ist.
    GoPath = Fliegt die zugewiesene Strecke der [TagPoint]'s entlang. Ist [Entity Properties] - [Pathloop] ausgeschaltet, dann landet der Heli am [TagPoint] der bei [Entity Properties] - [PointBackOff] eingestellt ist.
    - Bewegt den Heli ohne [TagPoint]'s zum Abheben
    GoPatrol = Fliegt Patrouillie ueber die zugewiesenen [TagPoint]'s. Ist [Entity Properties] - [Pathloop] ausgeschaltet, verharrt der Heli am letzten Punkt in der Lift.
    - Bewegt den Heli zum Abheben
    IsDead = Haengt evtl. mit dem MG-Schuetzen zusammen.
    Kill = Heli loest Selbstzerstoerung aus.
    Land = Heli landet umgehend.
    - Vorsicht in unwegsamen Gelaende!
    LoadPeople = Laedt Mannschaft ein, die die gleiche [groupid] haben. Maximal 4 Personen, davon ein MG-Schuetze.
    LowHealth = Es duerfte sich hierbei um einen Impulse handeln, der dann in den [Input/Output Events] etwas ausloesen kann.
    Reinforcment = Setzt die aufgenommene Mannschaft an dem unter [Entity Properties] - [pointReinforce] angegebenen [TagPoint] ab.
    - funktioniert evtl. nicht korrekt, wenn der Heli nicht in der Luft ist (-> Reload Scripts!).
    - Der Heli nimmt danach wieder seinen alten Auftrag war.
    Unhide = Zeigt den Heli, falls er vorher versteckt ([Entity Properties] - [HiddenInGame]) war.

    [TagPoint]:
    Dient dem Steuern des Heli ueber bestimmt Punkte.

    Bei [GoPath] und [GoPartol]:
    Hier muss das Wort 'PATH' (grossgeschrieben) im Namen des [TagPoint]'s auftauchen. Weiterhin muessen die [TagPoint]'s nummeriert sein.

    Bei [pointAttack], [pointBackOff] und [pointReinforce]:
    Hier muss der Name des [TagPoint]'s stehen, an dem das Ereignis stattfinden soll.

    Mannschaft:
    Sie benoetigt die gleiche [groupid] wie der Heli. Sollte der Heli sich in Bewegung setzen, dann laedt er seine Mannschaft selbststaendig ein. Wird diese Anweisung in der Luft gegeben, dann begibt sich die Mannschaft zu Fuss zum Heli und steigt auch ueber groessere Hoehenunterschiede einfach ein.

 

Website Copyright © by 4thDimension Networking ®

Top Desktop version