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 posten und es wird euch bestimmt erklärt oder gezeigt