Hallo, heute wollen wir uns mal mit Flow Graphs auseinandersetzen. Ich arbeite erst seit einem Tag mit ihnen, daher kann ich mich wohl noch nicht als Pro bezeichnen, aber für eine Einführung reicht es allemal!
Erstmal habe ich uns einen kleinen Außenposten gebaut (ich benutze der Einfachkeit halber die Demo-Map als Vorlage, das erspart mir vermutlich viele Probleme): Bild
Das stationäre Geschütz nennt sich übrigens ShiTen, ehe ihr fragt.
Dann habe ich einen Gegner ins Level gesetzt (bzw. einen bestehenden kopiert, erschien mir einfacher & sicherer), ihm eine andere Waffe in die Hand gedrückt (siehe Bild), ihn umbenannt (mrw_ ist mein Kürzel, so weiß ich, was von mir ist) und dann einen Flow Graph für ihn erstellt. Bild
Nun werdet ihr gefragt, in welche Gruppe der Flow Graph soll, ich empfehle euch, eine neue Gruppe zu erstellen. Also unten auf New und einen Namen eingeben. Jetzt habt ihr den Flow Graph Editor vor euch, noch ziemlich leer das Teil. Wir ändern das: Rechtsklick auf das Fenster mit dem Gitter und Add Selected Entity. Bild
Jetzt erscheint da ein kleiner Punkt, wenn ihr mit dem Mausrad ranzoomt (dabei den Mauszeiger auf der Stelle haben, auf die gezoomt werden soll), seht ihr das ganze mal in größer. Bei gedrücktem Mausrad könnt ihr bei Bedarf die Ansicht noch verschieben.
Nun brauchen wir ein "Start", ich weiß leider nicht genau, wie ihr das selber erstellt, aber macht's doch wie ich und kopiert es aus Entities/AB1/Cortez_Patrol (Die Auswahlliste ist links unten und mit "Flow Graphs" betitelt, im cortez_patrol findet ihr das "start" oben links) Bild
Nun verbindet ihr das output des Start mit dem Disable vom Entity:Grunt, dadurch ist der Gegner zu Spielbeginn noch nicht da. Bild
Jetzt könnt ihr den Flow Graph erstmal schließen. Denn nun erstellen wir einen Trigger, also Auslöser, der den Koreaner aus dem Haus rennen lassen wird, wo er dann das Geschütz benutzt.
Sucht euch also unter Entity -> Trigger den AreaTrigger heraus und zieht in auf die Map. Achtet darauf, dass ihr align to Terrain oder wie immer es heißt anhabt, sonst landet der Trigger ganz leicht unter der Erde und ihr findet ihn nie wieder Bild
Dann solltet ihr im noch einen *sinnvollen* Namen geben, einstellen, dass er nur einmal ausgelöst werden kann (TriggerOnce) und ihn dann dem Flow Graph hinzufügen (oben rechts im Editor ist ein FG-Knopf, mit dem ihr den Editor öffnet - dort müsst ihr dann noch den richtigen Flow Graph rauspicken, so wie vorhin, als ihr den Start kopiert habt) Bild
Dann verbindet ihr das Enter des AreaTriggers mit dem Enable des Soldaten - dadurch erscheint der Soldat, sobald der AreaTrigger ausgelöst wird. Bild
A pro pos AreaTrigger auslösen: Das passiert noch garnicht! Also erstellen wir eine Shape: Unter Area wählt ihr Shape aus und malt dann die Eckpunkte dieser Form auf den Boden - Sobald jemand diese Form betritt, wird nachher der AreaTrigger ausgelöst. Bild
Jetzt müssen wir der shape noch eine "height" verpassen, dadurch kriegt das ganze auch eine Höhe. Bild
Ich habe jetzt via Edit Shape die Form noch etwas verändert, damit das ganze schon früher ausgelöst wird - wenn der Koreaner erst am Geschütz ist, wenn ich schon dahinter stehe, bringt das nichts :P
Auf jeden Fall müsst ihr noch via Pick ein Target aussuchen, in unserem Fall den AreaTrigger. Bild
Jetzt öffnen wir nochmal den Flow Graph, dazu könnt ihr z.B. auch beim AreaTrigger und Flow Graph auf List klicken, dann seht ihr alle Flow Graphs, in denen er vorkommt, das sollte bisher nur unserer sein. Ein Klick darauf und schon seid ihr da. Bild
Alternativ zur Rechtsklick-Methode könnt ihr die Befehle auch links aus dem Components Fenster in euren Flow Graph ziehen. Benutzt eine der beiden Methoden, um ein AIUseObject hinzuzufügen. Bild
Jetzt müssen wir noch sagen, welchem Entity wir den Befehl geben, und was benutzt werden soll. Zuerst stellen wir als Benutzer den Soldaten ein:
Soldat anklicken, rechtsklick auf das AIUseObject und Assign selected entity. Bild
Dann will AIUseObject noch die ID des Objekts, das benutzt werden soll, wissen. Also klicken wir das an, fügen beim Flow Graph ein EntityId hinzu und machen wieder Assign selected entity. Bild
Zu guter Letzt verbinden wir noch die ID von EntityId mit dem objectId vom AIUseObject und das Enabled vom Soldaten mit dem Sync des AIUseObjects. Bild
Achja, eins noch, ein AutoDisable (zu finden unter AI) fehlt noch, dem weist ihr wieder den Koreaner zu, ausgelöst wird's vom Enter des AreaTriggers und das ist damit der Gegner auch seine KI nutzt und z.B. vom Geschütz weggeht, wenn man selber dahinter läuft. Dann ist er allerdings keine große Bedrohung mehr, da er ja nur eine Pistole hat Bild
Mir ist zwar beim zweiten Testen leider der Editor abgeschmiert, weil ich irgendwie versehentlich via shortcut oben was in der Menüleiste geöffnet habe, aber beim ersten mal hat's schon halbwegs funktioniert (hab grad mal geschaut, ist reproduzierbar: beim Testen alt+a und dann a). Es fehlte nur die Wegfindung für mein neues Gebäude, ich denke, die kann man via Ai->Generate all navigation erstellen (das dauert ziemlich lange glaube ich, vermutlich hat der Editor deshalb nimmer reagiert als ich das während des Testens versehentlich gemacht hab). Teste ich jetzt aber nicht, da mein letzer Save nach Schritt 1 war (also gerade Gebäude und Geschütz im Level)
Naja, wie auch immer, hoffe, dass ich euch Flow Graphs ein wenig näher bringen konnte
euer Mr. Wonko
P.S.: Wer hat die maximal-5-bilder-Regel eingeführt? Ich verstehe den sinn aber sie stört gerade, so gibt's halt keine Thumbnails