Archiv verlassen und diese Seite im Standarddesign anzeigen : Grundregeln der Flowgraphs
Hallo Zusammen,
ich wollte mal fragen, ob es hier jemanden (oder mehrere) gibt die so nett wären ein paar grundlegende Dinge über die Flow Graphs zu posten hier.
Ich weiß nicht warum, aber ich bekomme einfach keinen Zugang zu den FG´s.
I-wie läuft immer was schief, selbst mit den einfachsten Sachen. Das liegt aber vorallem daran, dass ich mich damit 0 auskenne und mir selbst die englischen tuts nichts bringen ( an der Sprache liegts nicht ).
Mit Grundregeln meine ich z.B ein paar einfache Dinge auf die ich immer achten muss, z.B braucht ja alles eine EntityId (richtig?) usw.
Wäre super wenn das evtl hier ein kleiner Anfängerthread werden könnte. Würde mich gerne damit beschäftigen.
Falls ihr aber auch Links habt wo das alles super erklärt wird, bin ich auch sehr dankbar.
LG 0racle
Naja da gibts eigentlich nur eine Grundregel: Learning by doing
Mit FG's ist alles möglich, man muss einfach genau wissen was man machen will und in etwa wissen welche FG-nodes man dazu braucht und was diese bewirken, das alles kommt mit der Zeit, einfach mal hinsetzen und versuchen etwas zu "basteln" :wink:
zu Wissen was ich machen will, daran harperts nicht, ehr das ich zu genau weiß was ich machen will ;).
Ich werds mal austesten, ich denke mal ich brauch auch nur nen Antoß aber ich bekomm ja nichtmal hin das mein Grunt ne Animation macht....:-/
Naja nem Grunt ne Animation zu verpassen ist auch nicht so einfach, da er sie nur ausfühhrt, wenn er nicht im combat-mode ist...
Was willst du denn genau machen?
Wenn du deine Ideen hier schreibst, kann ich/können wir alle hier dir vlt helfen
XcorpioN
16.08.2011, 12:39
Am meisten lernst du von bereits bestehenden Flowgraphs. Die von Crysis sind ganz nett, aber nicht wirklich interessant. Sammle mal ein paar von Crymod die interessant sind und schau sie dir an. Ist nicht einfach alles sofort zu verstehen, musst du auch nicht, aber du erkennst (sofern man dem Englisch mächtig ist) schnell, was wofür zuständig sein könnte. Aber wie es funktioniert weiß man auch dann nicht, dann heißt es wie ODemuth schon sagte, learning bei doing. Elemente verändern (werte der Notes), Entities, Inputs wechseln und zwischendruch immer ins Game switchen und schauen was es bewirkt hat. Dann checkst du das.
Flowgraphs sind in meinen Augen das genialste an Crysis, man kann echt ALLES machen wenn man weiß wie.
Also grundlegend für Flowgraphs, sofern ich das beschreiben kann:
Der Aufbau
Die Flowgraph Nodes sind meist mit Inputs und Outputs versehen (also Hauptsächlich), dabei ist das Input immer dafür zuständig etwas bei dem jeweiligen Node auszulösen, das Output eine Veränderung oder etwas Ausgelöstes weiterzugeben.
Viele Nodes brauchen eine zugewiesene Einheit (Entity), auf die das Node wirksam wird. Beispielsweise Movement-nodes um zu wissen, welches Entity bewegt werden muss.
Viele Inputs muss man jedoch nicht mit einem eingehenden Pfeil, also dem Output eines anderen Nodes belegen, sondern kann sie "Freischalten". Dazu klickt man einfach auf das Node und rechts in der Bar erscheint eine Liste, bei der man "Haken" machen kann, was generell aktiviert ist oder nicht. Hinzu werden in dieser Leiste auch Werte eingetragen, Strings (Verzeichnisse) oder Keys und Ähnliches.
Der Start
Alles muss irgendwo starten, mit einem "Enable" (was nicht unbedingt einen Input brauch, man kann auch rechts in der Bar wenn man das jeweilige Node, beispielsweise eine Einheit, angeklickt hat einen Haken bei Enabled machen), einem "Misc:Start" Node (also zu finden unter Misc > Start, in Crysis 2 unter Game > Start) oder unter Umständen einen Time:Timer. Auch werden Gametokens oder Trigger für das starten einer Aktion genutzt. Gametokens muss man selbst erstmal begreifen, worauf ich nicht eingehe, doch macht man gebrauch von einem "Trigger", ist die handhabung einfach. Man setzt am besten einen ProximitryTrigger, durch den der Spieler läuft - im FG hat man nun den Trigger als Auslöser des Flowgraphes, das heißt sein "Enter"-Output geht in den Auslösenden Input.
Ein weiterer sinnvoller Auslöser neben Misc:Start und ProximitryTriggern ist das Node Input:Key, bei dem man eine Taste zum Auslösen einer Aktion wählen kann.
Logik: Schleifen/Reihenschaltung/Massenschaltung
Eines der wohl am häufigsten auftrenden Nodes ist das Logic:Any, ein Node, das einem viele Umwege erspart. Es brauch kein Entity, lediglich Inputs die belegt werden müssen, damit das Output wirksam wird. Es hat 6 Inputs und 1 Output (Es müssen aber nicht alle Inputs belegt werden um das Output wirksam zu machen).
Hat man beispielsweise zwei Entities, die bei ihrem tot etwas auslösen sollen, so verbindet man das "Dead"-Output der Entity mit dem Logic:Any. Verbindet man beide Deads mit dem Logic:Any, so muss nur eine Entity sterben, damit das Logic:Any greift (Any = Irgendeiner, Irgendwas).
Will man jedoch beispielsweise, dass nur dann der Output wirksam wird, wenn beide Entities tot sind, so nutzt man statt einem Logic:Any, ein Logic:All - dort wird das Output nur wirksam, wenn alle damit verbundenen Inputs aktiviert wurden (doch auch hier gilt, das nicht alle belegt sein müssen, belegte Slots müssen lediglich erfüllt werden!).
So verhält es sich mit vielen Notes, und sie erklären sich meist von ganz allein.
Um eine Schleife zu schalten, etwas das sich in kurzen Abständen wiederholt, brauch mal ein Logic:Any und ein Time: Delay. Das Logic:Any bekommt einen Input von einen Auslöser und sein Output geht in das Node, was als nächstes Auslösen soll und in das besagte Time: Delay. Time: Delay steht für einen Zeitintervall der verstreichen soll, dabei kann man die Zeit in Sekunden angeben. Nehmen wir 60 Sekunden. Verbinden das Outpout des Time: Delay mit dem zweiten Input des Logic:Any und nach jeder Minute wird das Output des Logic:Any betätigt.
Möchte man eine permanente Schleife, so kann man die Zeit auf 0.01 herunterschrauben (also eine Milisekunde), also kaum wahrnehmbarer Zeitabstand, oder ganz einfach das Time: Delay mit einem zweiten Logic:Any ersetzen. So entsteht garkeine Verzögerung bis das erste Any wieder seinen Output startet, da es in einer permanenten Schleife geschaltet ist.
Man kann ein Output mit so vielen Inputs/Entities verbinden wie man benötigt, doch nur ein Input kann mit einem Output ausgestattet werden.
Ich hoffe das hilt dir und anderen wenigstens ein bisschen die Grundlagen zu verstehen. Wenn ihr Ideen habt, aber es an der Umsetzung scheitert, einfach im Crysis 2 Sandbox 3 Editor Q&A (http://crysis.4thdimension.info/forum/showthread.php?t=15800) posten und es wird euch bestimmt erklärt oder gezeigt ;)
MfG
XcorpioN
Wahnsinn. Vielen Dank.
Das hat mir auf Anhieb sehr viel geholfen. Und vermutlich auch meinen Fehler aufgedeckt. Schaun wir mal. Auf jedenfall werd ich mich da ab heute Abend mal reinarbeiten.
falls ich Probleme hab, ich weiß ja wieviele Hilfsbereite Leute hier sind, siehe deinen post !unglaublich!
Eine abschließende frage hab ich aber noch: Was nehme ich denn dann am besten als AI zum animieren einer Cutscene anstatt des Grunts?
vllt können wir diesen Thread ja erhalten, um einzelne Flowgraphs zu erstellen, bzw Probeleme zu bearbeiten und das dann später als fertige Tuts(bzw FG´s) zur Verfügung stellen`?
Flow groover
16.08.2011, 15:30
Am besten du nutzt keine AI (!!) da diese für TrackViews zu unzuverlässig ist, und am besten nimmst du AnimObject's, und animierst die aufwendig per TV.
Zwar deutlich aufwendiger, aber auch deutlich professioneller.
Denn AIs machen niemals 2x mal das selbe, und bei ner Cinematic Sequence willst du sicher das alles glattläuft? Heist nicht das du absolut keine AI nutzen darfst, aber bei so simplen Sachen wie rumrennen lassen, ne Animation abspielen (gerade hier) ist es besser wenn du AnimObject's nimmst und nicht mit AI arbeitest.
Es gibt aber auch Sachen die du garnicht mit AnimObjects machen kanst, schiesen lassen, sterben lassen... Liegt aber eher am Mangel passender Animationen..
Das hieße im Umkehrschluss, wenn ich also in einer Scene erst Animations haben will und später durch die getöteten Leute den levelfortschirtt erreichen will, tausche ich die AnimObjects zu gegebenem Zeitpunkt durch Grunts mit dem gleichen Model aus?
Flow groover
16.08.2011, 15:59
Wenn es Ingame ist, kannst du ruhig AIs nehmen, blos bei TrackViews empfielt es sich nicht.
Weis grad nicht was du meinst mit levelfortschritt, dann hat es ja nichtsmehr mit ner Sequenz zu tun? Was willst du denn jetzt machen?
@0racle
So macht man es generell. In einer scene AnimObjects verwenden, und die noch gebrauchten dannach gegen AIs austauschen (macht Crytek auch so) ;)
pirellisports
16.08.2011, 20:11
FG ist nichts anderes wie eine SPS xD
"Und" "Oder"
EVA Prinzip "Eingabe" "Verarbeitung" "Ausgabe"
Zum Glück hat mir hier meine Elektroniker Lehre was gebracht xD
Ja generell versteh ichs auch, und wenn ich einen sehe kann ich das auch logisch nachvollziehen so ist das nicht :D.... aber mein Problem ist einfach, das ich sobald es nicht klappt total ratlos bin warum ;) aber ich werd mich da jetzt einfach mal hinter klemmen, i-wann wird das schon was ;)
Danke euch allen!
und hier kommt mein 1. fall...will nur den grunt zum tag point laufen lassen....
http://www.abload.de/thumb/problemneu2jwo.png (http://www.abload.de/image.php?img=problemneu2jwo.png)
Masterside
16.08.2011, 22:29
EntityID weg, das ist bei diesem überflüssig. Zudem muss beim Ai:GoTo der Grunt eingefügt werden und nicht der TagPoint.
Schließlich soll der Grunt ja zu dieser Pos gehen und nicht der TagPoint ;)
Du musst immer das was etwas tun soll als input entity einfügen, einfach entity auswählen und dann auf das Flownode gehen und rechte Maustaste-> assign entity
Ah ok, wunderbar, das teste ich heute abend mal so ;-)
dann muss ich dem goto mein entity zuweisen, und der Pos, so wie ichs gemacht habe, den tag point per flow?
den Tagpoint kannst du auch auswählen und dann assign entity, du brauchst den nicht extra per flow und EntityID zuzuweisen
http://www.abload.de/thumb/problemneu257a8.jpg (http://www.abload.de/image.php?img=problemneu257a8.jpg)
So siehts aus, er macht aber leider immer noch nix....
AndiCloak
18.08.2011, 18:34
Das entity:HumanGrunt und das entity id kannst Du auch weglassen!
Du brauchst nur dein Start verbunden mit AI:GoTo und das entity:TagPoint verbunden mit dem AI:GoTo.
Das AI:GoTo enthält ja schon die Identität des Grunts.
Hast Du im Editor die Funktion "Generate All Navigation" betätigt?
Funktion ist bestätigt,
Der Flow sieht also so aus:
http://www.abload.de/thumb/unbenannthkur.png (http://www.abload.de/image.php?img=unbenannthkur.png)
Und es tut sich immer noch nix.
Das kann doch nicht so schwer sein -.-
Dafür hab ich immerhin geschafft per FG meinen Hud zu verbergen :-D ein Anfang.
Path0g3n
18.08.2011, 19:01
Ich kenn mich mit dem Ce3 FG nicht aus und eig generell nicht. Musss aber DIESEr FG unter AI:Actions sein und nicht unter Entity?
Ne, der FG ist schon richtig dort ;)
1. Zu welcher Fraktion gehört dein Grunt? Ist es ein CryNet Grunt, so mache noch den Haken bei Force rein.
2. Macht dein Grunt allgemein was, also zeigt er eine Aktivität? Platziere zum Test mal einen Gegner für ihn und gucke, ob er ihn angreift.
3. Platziere den TagPoint auch mal genau auf dem Boden 1 m von ihm entfernt und teste nochmal :)
AndiCloak
18.08.2011, 19:14
Habe mal in meine alte Map "Holz" geschaut.
Dort habe ich den TagPoint nicht direkt im FlowGraph, sondern den Baustein (Node) "Entity:EntityPos" mit der Identität des jeweiligen TagPoints. Der Ausgang pos von "Entity:EntityPos" wird dann wieder mit dem GoTo verbunden.
Für einfach aufgebaute FlowGraphs, kann ich Dir meine Map "Holz" empfehlen (für Crysis1; Sandbox2). Dort sind viele FG´s mit nur zwei, drei Bausteinen vorhanden.
Edit: Zum Testen, ob ein FlowGraph überhaupt "durchschaltet", kannst Du an entscheidenden Stellen mit Texteinblendungen arbeiten!
Setze mal hinter das AI:GoTo an das Done und, oder Succeed nacheinander eine HUD- Overlaymessage mit einem beliebigen Text und schaue, ob der Text auf dem Schirm erscheint.
Ich habe interessanterweise meinen FG ans laufen bekommen und auch ein paar komplexere gemacht, aber in einer neuen Map. Kann es sein, dass der i-wie mit den Objects aus C1 probleme hat?
AndiCloak
18.08.2011, 20:55
Lag es jetzt nur an der alten Map, oder hast Du auch noch etwas am FG verändert?
Zum Lernen würde ich nur mit den Sandbox3 internen "Sachen" arbeiten, um weitere Fehlerquellen erstmal auszuschalten! Ich arbeite noch mit der SB2 und kenne mich mit Importen aus älteren Editoren nicht aus.
Hm es klappt jetzt nachdem ich das Free SDK 3.3.5 habe auch mit der anderen Map.
Hab schon einige Flows hinbekommen.
Allerdings hab ich noch ein Problem, ich bekomm den Nanosuit nicht deaktiviert. Mein Flow kann ich grad nicht posten, bin auf der Arbeit aber er ist ja eig nicht allzu schwer:
Start >> Nanosuit:Deactivate (verbunden mit dem Punkt: deactivate)
LocaPlayer: Entity >> verbunden mit dem Nanosuit: Deactivate Als ID. Übernimmt der auch.
tut sich aber leider nix.
Im Free SDK gibt es ja keinen NanoSuit ;)
Falls du das wieder im Crysis 2 SDK meinst, so poste mal ein Bild deines FGs.
Ich habs jetzt hinbekommen - es liegt immernoch alles an der Map. Bzw an den CE2 Objekten. sobald ich eins reinmacht funzen die FG´s nicht mehr - hat jemand das selbe problem?
Veg. Tuts , nur objecte nicht.
Andere Frage - wenn ich per TV eine Kamerafahrt mache, wie zur hölle stell ich ein, dass ich das auch durch die kamera sehe. In der CE2 konnt ich das ja einfach beim event hinzufügen. aber das geht nicht mehr ...jemand ne idee?
Also mein Tv startet ganz normal, aber ich wechsle halt nicht zu meiner cam.....
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.