Skip to main content

FlowGraph Editor

Guide

FlowGraph connects trigger timing, battle resolution, data calculations, and presentation requests into a behavior chain that can be read and validated directly

Behavior on a Card, Status, or Enemy defines its trigger timing, resolution, and final feedback in battle. Select the Card, Status, or Enemy to edit in Game Card Editor. The Behavior area shows its current summary and provides the Edit FlowGraph entry.

The FlowGraph window

tip

Card and Status summaries list Entries in the root graph. Enemy summaries report Patterns, LeafIntents, and Actions.

The Behavior area and Edit FlowGraph entry for the current item in Game Card Editor

OnCardPlayed above is an Entry in the current Card root graph. Click Edit FlowGraph to open the behavior graph owned by that card.

tip

Every behavior graph belongs to one Card, Status, or Enemy.

A complete behavior chain

Open the included Poison Arrow card to see its complete path from card play through resolution and presentation feedback.

The complete Poison Arrow card behavior graph, connecting On Card Played to damage, presentation, and status nodes

The graph above begins at On Card Played on the left and connects Deal Damage, Play Effect, Change Status, and a second Play Effect in order. Control connections define the actual execution sequence, while Deal Damage.Dealt supplies the real damage to floating text. Four kinds of information form a behavior graph:

Canvas elementResponsibilityRole in Poison Arrow
EntryStarts behavior at a specific battle, turn, card, status, or event timingOn Card Played starts behavior after the card is played successfully
Control connectionDefines node execution orderDeals damage first, then presents feedback and applies the status
Data connectionPasses runtime objects and results to downstream nodesSends actual damage to the Amount input of floating text
Node fieldStores an authored value that does not change during this executionDamage amount, status reference, and presentation type

All four are connected and configured on the canvas. The header and toolbar locate assets, organize the canvas, and expose Issues. The reference drawer on the right explains the selected node's inputs, outputs, and fields.

See the FlowGraph Execution Model for how these canvas elements enter the runtime and complete one execution.

Build the first executable path from an Entry

Double-click an empty area of the canvas, right-click and choose Create Node, or click the create button in the toolbar to open the Add Node menu.

tip

When text is entered, search filters by node display name. When browsing by category, the menu shows the node families available to the current owner.

The Add Node menu expanded by category in a Card Behavior

The image shows the Add Node menu for a Card Behavior. The eight categories below the search field are the families available to the current Card. Card and Status can use Hook; Enemy replaces Hook with Intent. Across all three owner types, the built-in node families are:

Node familyWork performed in a behavior graph
EntryStarts behavior at battle, turn, card, status, damage, energy, event, or unit timing
HookStarts a Hook path before GCS commits a result and outputs the current value
FlowOrganizes execution with Sequence, Branch, Switch, Gate, Loop, While, Foreach, Wait, Choice, and Delayed Trigger
ActionChanges battle state such as HP, armor, energy, cards, statuses, turns, variables, or units
GetReads the current unit, target, card information, piles, event parameters, or variables
OperatorCompares, calculates, filters, sorts, selects, converts, randomizes, or combines data
FXRequests VFX, SFX, animation, floating text, camera shake, slide, or flash feedback
IntentSelects and previews an Enemy's next action, then executes its behavior node chain
EventRaises a GCS internal event or an optional GES event

Node connection rules

  • Normal Entry Nodes and Hook paths can connect directly to Actions that change battle state, with the exception of Enemy On Enemy Behavior Start.

  • Enemy On Enemy Behavior Start must enter a Pattern or Leaf Intent first. After a Leaf Intent is selected, connect Actions and FX from its Out.

  • When dynamic calculation is required, connect Get and Operator before the Action. When visual or audio feedback is required, connect FX after resolution.

  • Hook nodes only start a path before a result is committed and provide the current value. To modify or cancel the result, continue to Write Hook or Cancel Hook in the Action category.

Canvas operations

OperationResult
Drag from an output to an inputCreates a control or data connection
Start dragging from a connected inputPicks up the existing connection and reconnects it
Click a connection and press DeleteRemoves the current connection
Drag a nodeMoves the node and shows alignment guides near adjacent nodes
Double-click a node titleChanges the display name of this node in the current graph
Click the fold arrow beside the titleCollapses or expands node fields
Hold Shift and click or drag an empty areaExtends the selection or marquee-selects multiple nodes

Port connection rules

  • A control output connects to only one next step, while a control input can merge several paths.
  • A data output can be read by several nodes, while a data input accepts only one source.
  • When port types are incompatible, the connection appears red with a warning. Hover it to see the reason. Invalid connections between normal nodes also enter Issues in the upper-right corner.
  • Fix Group boundary connections directly from the canvas warning.

Bringing control and data paths together

Rapid Fire below shows how control and data paths cooperate in one graph:

  • One control path runs from On Card Played into Loop, executing Deal Damage and Play Effect on every iteration.
  • A separate data path supplies a random target through All Enemies and Random Elements. The damage node and floating text both read that result.

The complete Rapid Fire card behavior graph with Loop, target selection, damage, and presentation nodes

tip

The Selector in this graph is evaluated again on every data read, so the two reads can return different targets. To keep damage and presentation on the same unit, use Pick Element inside the loop body to resolve one unit, store it with Set Variable, then have both downstream nodes read the same Variable.

See Card Behavior Recipes for common card-play, draw, discard, exhaust, choice, and delayed-trigger combinations.

Switch between fixed fields and input ports

Node fields store fixed authored values. Input ports receive dynamic values determined only during the current execution. In the image below, Deal Damage keeps Amount = 3 as a fixed field. When armor, status stacks, or another calculation must determine the damage, click or on the right side of the field to switch it to an input port.

Field and input-port toggles on Deal Damage and Play Effect nodes

tip

Only fields that support dynamic input show this control.

Node cards also support these local organization operations:

OperationUse
Double-click a field labelSets a field name shown only in the current graph
Double-click a normal node port nameChanges the port display label. Fixed In, Out, and Group boundary ports do not change
Drag a normal node port name up or downReorders ports on the same side to reduce crossing data lines
Edit a count fieldAdds or removes dynamic ports such as Branch, Case, or Step
Read a result outputPasses the actual resolved result of an Action to later nodes
tip
  • Input and result values are not always equal. Deal Damage.Amount is the requested damage input, while Deal Damage.Dealt is the actual result after armor, statuses, and Hooks.
  • Floating damage text and later conditions should read Dealt. Reusing Amount directly ignores changes that occurred during resolution.

Press Tab in the FlowGraph window to open the node reference drawer on the right. Select a node to inspect its purpose, inputs, outputs, fields, and related execution timing.

The node reference drawer open with Deal Damage selected

Organize large behavior graphs with navigation and Groups

As the node count grows, use focus and zoom to control the visible range, then move stable local flows into Groups so the main control path remains readable from left to right.

Navigate, Nodes, Groups, and View controls in the FlowGraph Editor toolbar

From left to right, the toolbar contains selection, panning, focus, node creation, Group, zoom, Undo, and Redo controls. Common gestures fall into four working groups:

ScopeGoalGesture or key
NavigationPan the canvasMiddle-button drag, or drag after selecting the Pan tool
NavigationZoom the canvasMouse wheel, toolbar and +, or double-click the percentage field and enter 25–200%
NavigationFocus the whole graphSpace
NavigationFocus the selection, or the whole graph when nothing is selectedCtrl + F
Selection and editingSelect all nodesCtrl + A
Selection and editingCopy, paste, cutCtrl + C, Ctrl + V, Ctrl + X
Selection and editingDelete selected nodes or connectionsDelete or Backspace
Selection and editingUndo and RedoCtrl + Z, Ctrl + Y, or Ctrl + Shift + Z
GroupPut any two or more nodes into a GroupCtrl + G
GroupEnter or leave the selected GroupCtrl + , Ctrl +
GroupUnpack a Group and preserve its internal nodesDelete or Backspace
GroupDelete a Group with its internal nodesShift + Delete or Shift + Backspace
ViewToggle the node reference drawerTab
ViewOpen the complete shortcut reference?
ViewClose the current help panel or windowEsc
tip

On macOS, use Cmd instead of Ctrl in this table.

Click ? on the right side of the header to open the shortcut help menu, which groups every gesture by navigation, selection, node editing, fields and ports, and Group operations.

The Keyboard Shortcuts and Help panel in FlowGraph Editor

Put a complete flow into a Group

A Group combines several nodes into a subgraph you can enter. Use it to encapsulate target selection, repeated resolution, or a complete presentation flow while leaving only the most important execution relationship in the parent graph.

A Group node in FlowGraph

Common operations

  1. Select at least two nodes and press Ctrl + G to move all selected nodes into a new outer Group. Existing Groups can also be part of the selection.
  2. Double-click the Group body or press Ctrl + to enter it.
  3. Double-click the title or use the context menu to rename the Group.
  4. Use the breadcrumb in the upper-left corner or Ctrl + to return to the parent graph.
  5. Select the Group and press Delete to unpack it while preserving its internal nodes.
  6. Use Shift + Delete to remove both the Group node and its internal nodes.
Features
  • After entering a Group, you can still change the field names, port names, and port order of its normal internal nodes.

  • Inputs and outputs that remain unconnected inside the Group become boundary ports automatically.

  • Click a field label to expose a frequently adjusted field on the Group face. Click it again to retract it.

  • Group does not decide which boundary ports are useful. To keep the parent graph clean, finish internal connections first and expose only fields that need frequent adjustment on the Group face.

  • Group is not available in the Add Node menu; create it from the current selection

  • When only one node remains inside, Group unpacks automatically to avoid an empty shell with no useful hierarchy.

  • Copying a Group copies its internal nodes and connections. The pasted result is an independent copy separated from the original Group.

  • A Card Group can be pasted only into a Card Behavior. Status Groups and Enemy Groups can likewise be copied only between matching owner types.

See Group Nodes for Group boundary ports, face fields, and navigation.

One canvas for Card, Status, and Enemy

Card, Status, and Enemy share the same node editing, connections, Groups, and validation. They differ only in the Entries they can receive, the owner context they can read, and the Intent family available only to Enemy.

OwnerTypical EntryBehavior organization specific to this content
CardOn Card PlayedOrganizes behavior around the current card, selected target, and actual resolved result
StatusOn Turn StartReads the current Status Type, Tags, and Stacks and responds continuously at turn or resolution timing
EnemyOn Enemy Behavior StartUses Patterns and Leaf Intents to select, preview, and execute the next action

Status Behavior chain

The included preset Status Poison starts damage from a turn Entry and reads the current status stacks directly as the resolved value.

The complete Poison status behavior graph, reading status stacks from On Turn Start and dealing damage

The graph moves from On Turn Start into Deal Damage. Status Info.Stacks supplies the damage through a data connection, and the result then enters Play Effect. One graph therefore expresses trigger timing, a dynamic value, battle change, and presentation feedback together.

See Status Behavior Recipes for turn reactions, stack reads, and damage modifications, and Hook Nodes for timings that can intercept resolution.

Enemy Behavior chain

Enemy Behavior adds the Intent node family to the same canvas. A Pattern selects the next action, the Intent field on Leaf Intent defines its preview type, and the node chain after Out performs the actual action.

Intent nodeAction pattern it expresses
Leaf IntentDefines the intent type and uses the node chain after Out as the actual action
Sequence PatternCycles through actions in a fixed order
Weighted Random PatternSelects from currently valid actions by weight
HP Threshold PatternSwitches action plans according to health thresholds
Once Per BattleAllows an action to be selected no more than once in the battle
Every N TurnsAllows an action only at the specified turn interval
tip
  • After connecting On Enemy Behavior Start to a Pattern, every selection path should end at a Leaf Intent. Set its Intent type, then connect damage, status, card, or presentation nodes from Out.
  • Preview values for Attack, Defend, and Heal are not entered on Leaf Intent. At runtime, GCS extracts the first available value from Deal Damage, Change Armor, or positive Change HP along the following control path.

The complete Mire Reaper enemy behavior graph, where Pattern nodes select Leaf Intents and execute their behavior bodies

The graph uses HP Threshold Pattern to divide behavior by health, then Weighted Random Pattern to select among the currently valid Leaf Intent nodes. Each leaf continues into its own presentation path from Out, so the intent type, available preview value, and actual action all advance and resolve along the same branch.

tip
  • Runtime Intent display rules are not repeated on every Intent node. They are configured once under Encounter, which keeps the setup compact.
  • Hidden shows no intent, IconOnly shows the icon only, and Full shows the icon with any available preview value.

See Enemy Behavior Recipes for common Patterns and action bodies, Intent Nodes for every leaf and Pattern, and Encounter Authoring for display rules and battle configuration.

Possible Issues

FlowGraph Editor continuously checks structural problems it can confirm statically. When an Issues badge appears in the header, open the problem list. Any problem with a Node ID provides Ping at the end of its row to locate the related node. Current checks cover:

Problem scopeWhat Issues can detect
Node identityMissing or duplicate Node ID
Owner boundaryA node not allowed by the current Card, Status, or Enemy
Event EntryOn Internal Event without an event name, or On GES Event without an event reference
Custom data nodeA custom OperatorNode, SourceNode, or SelectorNode with no publishable data output
Normal-node connection referenceA connection that points to a node or port that no longer exists
Normal-node port contractIncompatible input and output types, or a recorded connection Kind that disagrees with the output port
Group contentsAny of the structural problems above inside a nested Group
Notes
  • Group boundary connections are not included in the connection checks above. When a boundary connection turns red or shows a warning icon, fix it from the hover message directly.

  • Issues does not check for an empty graph, a missing business-required Entry, unreachable nodes, unconnected inputs, or whether behavior results match the design. 0 Issues means only that the current structural checks pass, not that the behavior executes correctly in battle.

  • Problems inside nested Groups also enter the list. Clicking one from the root graph might not focus the internal node directly, so enter the corresponding Group before fixing it.

  • The same structural problems appear in Game Card Editor. See FlowGraph Authoring Errors for common fixes.