Skip to content

Graph Layout

The same way Theming makes the panel’s look yours, the auto-layout spacing is yours to tune. Every graph Blueprint AI lays out — EQS, Behavior Trees, Animation, Control Rig, Niagara scripts, Materials, MetaSounds, PCG, and Camera rigs — shares two parameters you can set per call or once for the whole project.

ParameterAxis
column_spacingGap along the layout’s primary axis (the signal-flow / depth direction)
row_spacingGap along the cross axis

Both are plain distances in graph units. Leave one at 0 (or omit it) and that axis falls through to the next level of configuration below.

For each axis, the effective spacing is the first of:

  1. The op’s own column_spacing / row_spacing, when greater than 0.
  2. A project layout-config file — an op-specific entry, otherwise a "*" wildcard that applies to every layout op.
  3. The engine default for that op (table below).

Drop a JSON file at <Project>/Config/BlueprintAILayout.json to space every graph the way your team prefers — commit it and everyone’s layouts match:

{
"*": { "column_spacing": 400, "row_spacing": 220 },
"layout_eqs_query": { "column_spacing": 350 }
}
  • A "*" entry applies to every layout op; an op-specific entry overrides the wildcard for that op, per axis.
  • In the example, every graph lays out at 400 / 220 — except EQS queries, whose columns are 350 wide (their rows still inherit the wildcard’s 220).
  • Point the BLUEPRINTAI_LAYOUT_CONFIG environment variable at any path to override the project file (handy in CI).

Any op can still override the resolved spacing inline — this always wins:

{ "op": "layout_eqs_query", "asset": "/Game/AI/EQS_FindCover",
"column_spacing": 500, "row_spacing": 260 }

Or just ask the AI: “lay out EQS_FindCover with wider columns.”

When nothing overrides them, each op uses these defaults (column / row):

OpDomainDefault
layout_eqs_queryEQS300 / 150
layout_behavior_treeBehavior Trees300 / 200
layout_anim_graphAnimation350 / 180
layout_control_rig_graphControl Rig350 / 180
layout_niagara_script_graphNiagara350 / 180
layout_expressionsMaterials300 / 180
layout_meta_sound_graphMetaSounds420 / 190
layout_pcg_graphPCG320 / 180
layout_camera_rigCameras320 / 170