Archiv verlassen und diese Seite im Standarddesign anzeigen : Einige Fragen zu FG
Path0g3n
10.04.2012, 13:28
Hallo, im Rahmen einer Präsentation benötige ich noch ein paar Antworten zur Ergänzung.
-Ist FG nur in Spielen üblich oder gibt es auch andere Gebiete?
-Waren Crytek die ersten mit FG oder kommt die Idee das in Spielen zu verwenden oder gab es frühere?
-In was für eine Sprache ist das in der .xml Datei geschrieben? Was Crytek-Eigenes?
-Gibt es eine Begrenzung von dem Umfang der Datei (Speicherplatz ausgeschlossen)
Ja das wars fürs erste. :D
Hoffe mir kann jemand die Fragen beantworten.
Soweit ich weiss sind FG's nur in Crytek Spielen üblich bzw. in Spielen auf Basis der Cryengine. In der Unreal Engine gibts was ähnliches funktioniert aber nicht genau gleich, bin nicgt ganz sicger, kenne mich mit FG's selber recht gut aus, was dahinter steckt eher weniger...
Ka welche Sprache
Zum Umfang, der ist nicht begrenzt, du kannst alle FG's einer Map in einen packen, wenn alles richtig getriggert und zugewiesen ist funktioniert es, obs sinnvoll und übersichtlich ist, ist wss andered...
Mr.H0n$3L
10.04.2012, 17:17
wie, sprache, was für eine sprache?
Flow groover
10.04.2012, 18:11
Hallo, im Rahmen einer Präsentation benötige ich noch ein paar Antworten zur Ergänzung.
-Ist FG nur in Spielen üblich oder gibt es auch andere Gebiete?
Flow Graph wurde soweit ich weis von Crytek für die CryEngine 2 entwickelt um visuelles Scripting zu ermöglichen. Unvisuel wäre z.B. die Art des Scriptings, welche in der CryEngine 1 via LUA verwendet wurde. Entities werden gemeinsam "verlinkt" und funktionen welche vorher in der Mission.lua des jehweiligen Levels definiert wurden, werden über z.b. Trigger ausgelöst. Ich habe mir das ganze aber nur mal kurz angeschaut, gut möglich das ich da etwas fehlinterpretiere oder vergessen habe. Der Proximity Trigger aus Crysis 1 hat z.B. noch eine "ScriptCommand" Funktion aus der Zeit, zum aufrufen von lua Funktionen. Da es aber in Crysis 1 schon visuelles Scripting gab, wurde diese Funktion soweit ich weis nicht genutzt. Sie ist aber vorhanden.
Diese Frage lässt sich also ganz einfach beantworten, indem du auf der Seite von CryTek oder die der CryEngine mal schaust für welche Produkte die CryEngine 1 & 2 lizensiert wurden.
-Waren Crytek die ersten mit FG oder kommt die Idee das in Spielen zu verwenden oder gab es frühere?
Höchstwahrscheinlich hat Crytek sich bei anderen Engines welche Visuelles Scripting anbieten inspirieren lassen. Ich bin mir ziemlich sicher das Crytek nicht die ersten mit V-Scripting waren, aber die ersten mit FG. (Entwicklung ihrer Engine halt)
-In was für eine Sprache ist das in der .xml Datei geschrieben? Was Crytek-Eigenes?
Falls du türkisch meinst, nein, es ist englisch.
Geile Fragen bekommen geile Antworten.
Aber um dir eine exakte Antwort zu geben, hier hast du ein Beispiel wie das ganze in exportierten FGs oder in der Mission0.xml aussehen würde.
<FlowGraph Description="" Group="" enabled="1" MultiPlayer="ClientServer">
<Nodes>
<Node Id="1" Class="Input:Key" pos="-730,-550,0" flags="0">
<Inputs Key="v" NonDevMode="0"/>
</Node>
<Node Id="4" Class="Time:Delay" pos="880,-60,0" flags="0">
<Inputs delay="10"/>
</Node>
<Node Id="5" Class="AI:AIExecute" pos="1110,-170,0" flags="0" GraphEntity="0">
<Inputs entityId="0" objectId="0" soaction_action="skykon_switch_spawner" maxAlertness="2" HighPriority="1"/>
</Node>
<Node Id="11" Class="Logic:Any" pos="5250,-130,0" flags="0">
<Inputs />
</Node>
<Node Id="12" Class="Start" pos="5250,0,0" flags="0">
<Inputs InGame="1" InEditor="1"/>
</Node>
[...]
<Node Id="69" Class="Time:RandomDelay" pos="-110,-210,0" flags="0">
<Inputs MinDelay="20" MaxDelay="40"/>
</Node>
</Nodes>
<Edges>
<Edge nodeIn="51" nodeOut="1" portIn="in1" portOut="Pressed" enabled="1"/>
<Edge nodeIn="24" nodeOut="4" portIn="Reset" portOut="out" enabled="1"/>
<Edge nodeIn="50" nodeOut="4" portIn="Reset" portOut="out" enabled="1"/>
<Edge nodeIn="20" nodeOut="5" portIn="true" portOut="succeed" enabled="1"/>
<Edge nodeIn="13" nodeOut="11" portIn="sink" portOut="out" enabled="1"/>
<Edge nodeIn="11" nodeOut="12" portIn="in2" portOut="output" enabled="1"/>
<Edge nodeIn="24" nodeOut="19" portIn="Input1" portOut="ShooterId" enabled="1"/>
<Edge nodeIn="25" nodeOut="19" portIn="Rot" portOut="Dir" enabled="1"/>
<Edge nodeIn="25" nodeOut="19" portIn="Pos" portOut="Pos" enabled="1"/>
[...]
<Edge nodeIn="65" nodeOut="66" portIn="entityId" portOut="Out" enabled="1"/>
<Edge nodeIn="51" nodeOut="69" portIn="in2" portOut="Out" enabled="1"/>
</Edges>
</FlowGraph>
-Gibt es eine Begrenzung von dem Umfang der Datei (Speicherplatz ausgeschlossen)
Ich kann es sehr schlecht einschätzen wie viele FG Nodes die Map hat, an welche ich gerade denke, aber lassen wir es mal ~8000 auf z.B. Village sein. Die ganzen Nodes sammeln sich ja schnell an. Allein durch Sachen wie AI Patrulien oder "Helfer FGs" (Helfer FGs habe ich jetzt mal Nodes wie "Logic:Any", "Misc:Start", "Math:ToBoolean"... getauft. FG Nodes die nicht direkt etwas ingame triggern, aber für Nodes die Ingame aktionen hervorrufen werden sie oft benötigt um einen sauberen Spielverlauf zu garantieren.
Die "Mission_Mission0.xml" aus Village hat wenn man sie auf den Desktop zieht 1,51 mb. Un darin sind alle in der Map platzierten Objekte, Entities und FGs eingetragen, jeder Mückenschiss den du im Editor platzierst.
Das was bei so ner Map wirklich mb verbraucht sind alleine die ganzen Terraindaten. Wie Terrainform und Terraintexturen.
Ja das wars fürs erste. :D
Hoffe mir kann jemand die Fragen beantworten.Darf ich fragen wofür du diese Antworten brauchst?
Solche Informationen klingen eher nach nem Informatikreferat wenn du mich fragst ;)
Ist FG nur in Spielen üblich oder gibt es auch andere Gebiete?
Visuelles Scripting gibt es in so einigen Programmen. Das Wort FlowGraph wurde meines Wissens nach von Crytek erfunden mit der CE2, ergo gibt es FG nur in ihrer Engine. Allerdings gibt es seit der CE3 ja mehrere Anwendungsgebiete, so benutzen auch Militärorganisationen sie für ihre Simulationen und verwenden dafür natürlich auch FG.
Lies hier: http://mycryengine.com/ (Thema Serious Games und Cinema)
-Waren Crytek die ersten mit FG oder kommt die Idee das in Spielen zu verwenden oder gab es frühere?
Einer der ersten. Valve und Epik waren aber glaube ich ein wenig schneller mit ihren Implementationen. Persönlich muss ich sagen, dass Cryteks FG einer der besten ist.
Mittlerweile verwendet praktisch jede Engine sowas, auch viele kleine, die man nicht lizenzieren kann. Das hat ganz einfach den Grund, dass Level Scripting auch von Level Designern betrieben werden kann und man nicht immer Programmierer dafür braucht, da die woanders gebraucht werden. Visuelles Scripting soll daher den Zugang für Nicht-Programmierer erleichtern.
-In was für eine Sprache ist das in der .xml Datei geschrieben? Was Crytek-Eigenes?
Sprache = Englisch; Programmiersprache = xml. Das ist eine Sprache. Der Aufbau der Attribute ist natürlich fest von Crytek vorgegeben und wird von der Engine interpretiert und für das FG Fenster in Grafik dargestellt.
Im C++ Hauptcode wird dann das Verhalten ausgewertet und die entsprechenden Programmierabschnitte aufgerufen. Dabei hat jeder Node einen eigenen Programmiercode, der Eingangsdaten entgegen nimmt, damit etwas anstellt und diese weiterreicht als Ausgangsdaten (wenn gewünscht).
-Gibt es eine Begrenzung von dem Umfang der Datei (Speicherplatz ausgeschlossen)
Prinzipiell Nein. Möglicherweise entsteht ein Speicher Leak ab einer bestimmten Größe, aber die hat Crytek sicher noch nie erreicht.
Zur Frage des Umfanges:
Mir ist es schon bei einigen (Test-)FGs passiert, dass in der Konsole sowas steht wie
"[flow] CFlowGraphBase::DoUpdate: FG-0x000000005E9F408C-Entity '[Name]' -> Reached maxLoops 256 during event"
Das lässt wohl darauf deuten, dass es eine definierte Maximalzahl an z.B. Schleifen gibt.
Ich vermute jetzt einfach mal, dass das irgendwo im Code definiert ist und Crytek diese Maximalanzahl für Crysis eben auf 256 gesetzt hat.
Vll hilft es ja ^^
Path0g3n
10.04.2012, 21:13
Danke, ihr seid super :D
Und ja: es ist für ein Informatikerreferrat. Mein lehrer ist da sehr neugierig und wissenbegierig, und hey. Ich mag/kenn die Cryengine und da halt ich darüber mit Augenmerk auf FG.
Nur muss ich natürlich noch Hintergrundwissen sagen und nicht nur irgendwelche Anwenderbeispiele oder Möglichkeiten zeigen.
Also vielen Dank :)
Vielleicht kommen noch mehr Fragen nach der Zeit :wink:
Nico25394
10.04.2012, 22:30
Achtung Sinnloser Post, aber trotzdem, wie geil ist das denn, ein Lehrer der sich für Games bzw die Entwicklung davon interessiert und einen da ein Referat machen lässt 8) Mensch ich wäre gern auf deiner Schule.
Unser Informatiklehrer (Gymnasium) hat sogar Rainy Days gezockt, um sich einen Eindruck zu verschaffen :D
Die Lehrer auf Chris Mediendesignschule helfen sogar etwas mit bei Webseite und Texten :p
General Kaboom
11.04.2012, 00:43
FGs sind ja eigentlich bloss eine grafische Darstellung für Code...man könnte den wohl auch selber schreiben...ich glaube aber aich das diese Art von programmieren bissher nur bei Crytek vorkommt...da hat jeder Hersteller wahrscheinlich sein eigenes System (schwer zu sagen, da nur wenige ihre Engines bissher öffentlich rausgegeben haben)
FGs sind ja eigentlich bloss eine grafische Darstellung für Code...man könnte den wohl auch selber schreiben...ich glaube aber aich das diese Art von programmieren bissher nur bei Crytek vorkommt...da hat jeder Hersteller wahrscheinlich sein eigenes System (schwer zu sagen, da nur wenige ihre Engines bissher öffentlich rausgegeben haben)
Wie bereits erwähnt ist das Konzept, Funktionsblöcke zu verbinden um Logik zu erzeugen, keine Erfindung von Crytek und wird in vielen Programmen verwendet.
Und ganz ehrlich, das ist nichtmal so schwer zu programieren.
Sogar ich hab etwas in die Richtung in Visual C# geschrieben ;)
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.