WH Flow Graph Documentation
Quest Flow Graph
This page documents the Quest Flow Graph extension to the standard CryEngine Flow Graph.
Consult CE documentation if you wish to learn more about standard Flow Graph.
Since Quest Flow Graph operates atop the Quest System, most of the documentation of this tool is in Quest System documentation. This page covers only basic controls and elements of this tool.
Flow Graphs consist of a set of nodes and edges. Nodes define states and some implicit logic, or provide additional values from other systems (e.g. references to assets from the game level). Edges define relationship between nodes and the rest of the logic.
New Quest Flow Graph
The first step is to create a new quest smart object in Swift. Follow the naming conventions. Copy or remember that name (hereinafter questName).
Click this option
You will be prompted to save a XML file. Name it questName.xml.
It should be stored under ..\Data\Libs\quests\flowgraphs
An empty Quest FG will be created
The comment that now states “Not in DB” indicates when was the FG last committed to DB.
The FG can now be found under XML folder.
Move FG to non-default folder
This folder view is exclusively meant to store XML backups. However your Quest FG must be stored in DB so you should move the newly created reference to another sister folder. You can choose any folder you wish or create a new one. Creating a new idea[AG1] named after your mod is a good idea.
You move the file this way:
As a result our new quest is now under new folder but it is still not stored in DB.
Commit quest to DB
A quest needs to contain at least one Objective node to be committable to DB.
Fire up the quicksearch utility by pressing Q anywhere in the Graph space, and type in objective.
Confirm with Enter. A node of the type Objective is inserted.
Now the quest is valid and you can press the “Export Button”.
A confirmation window will pop-up after a while and the comment will signalize the time of last commit and username of the last committer.
Every time you make a change you do it locally. Only after Exporting the quest is the Quest FG stored in DB.
Should your export to DB fail, you will find error messages in the console.
- Clashing names
- Some orphaned nodes
- Incomplete AssetTracked cascade
- Exclusive properties set at once (e.g. item category vs item type)
- Clashing IDs
List of nodes available in the Quest FG
There are 3 quest-state nodes
- Begin – Mandatory. Created automatically. Only one per FG is permitted.
- End - Mandatory. Created automatically. Only one per FG is permitted.
- Objective – Having at least one is mandatory.
All other nodes belong to 2 groups
- Asset tracking
These nodes are plugged via an interface AssetTracked node into “Tracked” port of an Objective node. Add additional asset-related conditions for Objective completion. Examples: if an X number of Y items is picked, or if an NPC dies, or if and NPC enters and Area etc. See the asset tracking part of the Quest System documentation for more details
These nodes are plugged directly into “Reward” port of an Objective. They give the player the defined reward upon Objective completion.
For more details on Node relationships and settings see Quest Systems documentation.
An edge, visually an arrowed connection, defines the relationships between nodes. Edges can carry signals or define a value for another node port which requires a value.
A hidden Objective1 is started immediately after the quest is started. Objective1 tracks if soul rat_bernard has at least 5 apples in inventory. When Objective1 is completed, player is immediately rewarded with 1 apple and the visible Objective2 is started.
An edge can be disabled in context menu when you right-click the dot in its middle. Disabled edges are rendered dashed lines. Disabled edges do nothing. Good for debugging purposes where you want to disable part of the logic without losing the relationship and having to remember it.
By pressing this button
you turn on/off live visual debugging of FG. If you jump into Game Mode you can see the states of all the nodes, which signal edges have already fired, and in what states the tracking is.
Result may look like this:
Note: If you think you are not being shown the correct state of the flowgraph, which sometimes happen, click on another one and click back. This will force refresh of the entire FG debug info.