Skip to content

For Unreal Engine Developers

Unreal Blueprint experience transfers well to Flow-Like’s node canvas: both distinguish execution from data, enforce pin types, and support pure and impure nodes. The domain is different. Flow-Like runs event-driven automation, data, AI, and interface workflows; it is not a game loop, world, or gameplay runtime.

Blueprint conceptClosest Flow-Like concept
Unreal projectApp
Blueprint Event GraphFlow
Blueprint assetFlow plus its functions, variables, and metadata
NodeNode
Execution pin and wireExecution pin and white wire
Data pin and wireTyped data pin and colored dashed wire
Impure nodeStandard node
Pure functionPure node
VariableFlow variable
FunctionFlow function invoked by Call Function
Collapsed graph or macro-like groupingLayer
Custom EventEvent node targeted by an App Event
BranchBranch
For Each LoopFor Each
SequenceSequence
Flip FlopFlip Flop
Do OnceDo Once
StructSchema-constrained Struct
ArrayTyped Array
Reroute NodeReroute

The mapping is conceptual. A Flow is stored internally as a board, but the App and Studio interfaces present it as a Flow. It does not behave like a spawned Blueprint instance.

Execution wires determine when standard nodes run. Data wires supply typed values. A pure node has no execution pin and evaluates when a downstream consumer needs its output.

This is close to Blueprint’s pure/impure distinction, with two cautions:

Pins must have compatible types. Generic pins can resolve to a concrete type after connection, and complex Struct pins may enforce a schema.

Blueprint patternCurrent Flow-Like node
Boolean branchBranch
Iterate an ArrayFor Each
Iterate with early exitFor Each (Break)
Condition-controlled loopWhile Loop
Ordered outputsSequence
Alternate A and BFlip Flop
Allow one execution until resetDo Once
Bounded executionTimeout
Visual reroutingReroute

Use these nodes directly rather than recreating Flip Flop, Do Once, or Sequence with ad hoc variables and wires.

A Flow function is the closest match for reusable Blueprint function logic. Define typed inputs and outputs on the function, then invoke it with Call Function.

Layers collapse a group of nodes behind a typed placeholder. They are useful for readability and prototyping and can be nested. Use a function when the graph should be called as reusable logic; use a Layer when the main goal is a named abstraction inside the canvas.

Unlike Blueprint inheritance or components, Layers do not create Actors, objects, or a world hierarchy.

Define a Struct schema for records that need stable fields. The current catalog includes:

NeedNode
Build a StructMake Struct
Build from a schemaMake Struct (Schema)
Read one fieldGet Field
Update one fieldSet Field
Expose all fields as pinsBreak Struct
Build an ArrayMake Array
Append an itemPush
Read by indexGet Element
Remove by indexRemove Index

Do not assume a Blueprint object reference can be cast into a Flow-Like type. Validate or transform incoming data with the node whose input contract matches the source format.

Flow variables are typed, board-level in-memory state. Read and write them with Get Variable and Set Variable nodes, just as Blueprint getter and setter nodes make state access visible.

Choose another store when the lifecycle is different:

RequirementUse
Temporary state used by the graphFlow variable
Per-machine configuration or secretRuntime Variable
Durable structured recordsDatabase nodes
App-owned filesApp Storage
Chat conversation stateChat history and local/global sessions

There is no Actor instance, replicated property, SaveGame object, or gameplay framework behind a Flow variable.

An event node begins execution inside a Flow. An App Event configures how that node is invoked.

Automation needFlow-Like entry
User clicks a named actionSimple Event node with a Quick Action
Recurring jobSimple Event node with a cron Event
HTTP requestSimple or Generic Event node with an API Event
Built-in conversationChat Event node with a Chat UI Event
Local application linkCompatible event node with a deeplink Event
Page or Widget interactionUI action targeting an Event

There is no equivalent to Event Tick. A cron Event is a scheduled automation, not a per-frame callback. If work must wait or poll, use an explicit bounded loop, Delay, timeout, or an external event rather than simulating a frame loop.

Unreal capabilityFlow-Like status
Actors, Pawns, Components, and WorldNo equivalent
Rendering and materialsNot a rendering engine
Physics, collision, overlap, and tracesNo equivalent
Gameplay inputUse App interfaces and Events instead
Replication and network rolesUse ordinary API, authorization, and data contracts
Frame-rate-sensitive behaviorNot a real-time simulation workload
Gameplay Ability SystemNo direct equivalent

Flow-Like Pages and Widgets can present workflow-backed interfaces, but they are application UI rather than Unreal UMG or Slate widgets.

Example: turn a gameplay-style monitor into automation

Section titled “Example: turn a gameplay-style monitor into automation”

A Blueprint developer might recognize a “read state, compare, act, record” pattern. A Flow-Like service monitor can implement it without a pseudo graph:

StageFlow-Like implementation
TriggerCron Event every approved interval
ReadAPI Call to the metrics endpoint
ParseSchema-constrained JSON or Struct
CompareTyped comparison into Branch
ActNotification node on the true path
RecordDatabase write containing status, time, and run ID
RecoverBounded retry only for safe, repeatable requests

This is event-driven work. It should not continuously poll at frame frequency, and notifications should use an idempotency rule so a retry cannot send the same alert repeatedly.

Use run history and logs to inspect completed executions, timing, and node output. This is not Blueprint’s live gameplay debugger, so design logs around stable run and correlation identifiers.

Create a saved Flow version after a behavior is verified. App Events can target that version rather than the mutable latest graph; see Versioning.

  1. Define pin types and schemas before arranging the graph.
  2. Keep execution ordering explicit.
  3. Use Functions for callable logic and Layers for visual abstraction.
  4. Replace Tick-driven thinking with App Events.
  5. Store durable state in a database or App Storage, not only in variables.
  6. Check whether a node is local-only before selecting remote execution.
  7. Validate every external payload as untrusted input.