Guided walkthrough · Unreal Engine 5.5 – 5.8

The BlueLine
First Hour

Nine stations that take you from a freshly enabled plugin to the four-keystroke habit you'll actually use every day. Every step names the exact key, what you should see, and what to check when nothing happens.

Stations 9 · ~60 min
Release 1.2.0 · Canon
Automation 16/16 · passing
Scope Editor · only
Runtime compatibility matrix v1.2.0 removed the rigid EngineVersion lock
5.5
Floor

Clean build · 16/16 tests passed

5.6

Clean build · packaged & verified

5.7

Clean build · 16/16 tests passed

5.8
Forward

Clean build · modern header guards

00

Turn it on, prove it's on

Before any hotkey does anything, BlueLine has to be enabled and awake. This station takes two minutes and saves you from debugging a plugin that was never loaded.

  1. Copy the plugin to YourProject/Plugins/BlueLine.
  2. Open the project. If prompted to rebuild missing modules, accept.
  3. Edit › Plugins, search BlueLine, tick the checkbox, restart the editor.
  4. Open any Blueprint, then right-click on empty graph space.
Blueprint graph — right-click context menu
You should see

A BlueLine section in the context menu listing the commands above. Its presence is the proof the editor modules loaded — the hotkeys are wired to these same commands.

If the section isn't there

Check the master switch first: Edit › Editor Preferences › Plugins › BlueLineEnable BlueLine. Almost every other setting is gated behind it, so with it off the whole toolkit goes quiet without an error.

BlueLine is editor-only. Four editor modules do the work — BlueLineCore (settings, styles, analysis), BlueLineGraph (formatting, routing, export, snippets), BlueLineSmartTags (semantic tagging) and BlueLineLevel (viewport tools) — alongside a minimal runtime module. Nothing here ships gameplay code into your packaged build.

01

Auto-Format — the safe first move

Learn this one first because it is the least destructive command in the plugin: it only ever moves nodes you selected, and it never touches anything else in the graph.

Shift+QAuto-Format Selection

Auto-Format aligns the selected nodes grid-relative to their input connections. A node driven by a pin at some Y lands on that Y. That's the whole idea — it reads the wires you already made and tidies to them, rather than imposing a layout of its own.

Fig. 1 — three selected nodes, aligned to their inputs
Selected nodes snap to their driving pin rows at the configured spacing. Unselected nodes do not move.
  1. Marquee-select 3–5 nodes that sit in a ragged diagonal.
  2. Hover the graph so it has keyboard focus.
  3. Press Shift + Q.
  4. Press Ctrl + Z and watch it come back.
You should see

The selection settles into clean rows at a consistent horizontal pitch. Everything outside the selection stays exactly where it was.

New in 1.2.0

Auto-Align now records GraphContext->Modify() before it rearranges, so the whole operation is a single undo transaction. In earlier versions the alignment could not be cleanly reversed.

If nothing happens

Nothing is selected, or the graph panel doesn't have focus — click once inside it first. Also confirm bEnableAutoFormat is on.

Tune it — Editor Preferences › Plugins › BlueLine › Formatting
FormatStrategyGrid Snap, Flow Layout, Column Layout or Minimal ChangesFlow
HorizontalSpacingGap between layout columns300
VerticalSpacingGap between stacked rows120
MagnetEvaluationDistanceHow far the magnet looks for an input to align to100
bPreventNodeOverlapPush nodes apart if a move would collidetrue
CollisionPaddingClearance kept when resolving a collision20
02

Rigidify wires, and see them differently

Two commands that look similar and are not. One changes your graph by inserting real reroute nodes; the other only changes how wires are drawn.

Shift+RRigidify Wires — edits the graph
Shift+Alt+WToggle Wire Style — display only

Rigidify inserts Knot (reroute) nodes between selected nodes so the connection runs in true 90° segments. Those knots are real graph nodes: they survive save, they're visible to your team, and they compile exactly as a direct wire would.

Fig. 2 — bezier diagonal vs. Manhattan route on a 16px grid
Knots are placed at (CornerX − 16, CornerY − 16) so the knot's own pin center — which sits at NodePos + 16 — lands precisely on the grid intersection. Off-grid by 16px → dead on.
New in 1.2.0 — knot centering

A Knot's pin center is offset +16, +16 from its origin. The router previously placed the knot origin on the grid point, which put the actual pin 16 units down and to the right of the wire's line. Placing the origin at −16, −16 instead puts the pin where the eye expects it. This is why 1.2.0 routes look straight where 1.1.x looked subtly stepped.

Shift+Alt+W is the low-risk companion: it flips every open graph between BlueLine's Manhattan rendering and stock bezier splines. No nodes move, nothing is inserted — it's a view mode. Use it to check whether a graph is genuinely tidy or merely drawn tidily.

Why Shift+Alt+W and not Shift+W

Shift+W is already Possess or Eject Player in the editor. The wire-style toggle deliberately takes the three-key chord to stay out of its way — it is the one BlueLine graph command that isn't a plain Shift pair.

Tune it — Editor Preferences › Plugins › BlueLine › Routing
RoutingMethodCurved, Manhattan, Circuit Board or HybridManhattan
bSnapReroutesToGridSnap inserted knots to the gridtrue
GridSnapSizeGrid pitch the knot centering math is built on16
HorizontalStubLengthStraight run leaving a pin before the first turn50
MinRigidifySpacingBelow this gap, no knot is inserted100
bAutoRouteNewConnectionsRoute every wire you draw, not just on demandfalse
AutoRouteMaxNodesAuto-routing switches off above this node count200
03

Clean Graph — the whole-graph pass

The first command that operates on everything, not your selection. Run it on a graph you inherited and did not write.

Shift+CClean Graph

Clean Graph analyses the active graph, splits it into disconnected islands, assigns each node a rank from the execution flow, then runs an evolutionary pass that shuffles within-rank ordering to minimise wire crossings. It only ever moves nodes — nothing is added, deleted or rewired.

Fig. 3 — inherited graph, then ranked left-to-right
Ranks become columns, islands separate vertically. Wire crossings: 4 → 0.
You should see

Execution reading cleanly left-to-right, unrelated node islands pulled apart into their own bands, and noticeably fewer wires crossing each other.

On a very large graph

Clean Graph deliberately skips the evolutionary crossing-minimisation pass above a size threshold and falls back to plain island/rank layout. That's intentional — it keeps the command responsive. You still get the structural pass, just not the crossing polish.

Because it touches the whole graph, this is the one to try on a copy first. Once you trust it, it becomes the command you hit before every code review.

04

The Linter — find what you can't see

Layout makes a graph readable. The linter tells you whether what you're reading is actually a good idea.

Shift+LBlueprint Linter

Findings are written straight onto the offending nodes as compiler messages prefixed [Smell]. Re-running the linter clears only its own previous findings — your real compiler errors and warnings are never touched.

Fig. 4 — Event Tick chain, before and after linting
The graph is unchanged — only the diagnostic overlay is added. A toast reports “BlueLine Linter: 3 finding(s) in EventGraph.”

What it looks for

  • Tick abuseTick Abuse: Casting on Event Tick is expensive.A cast reachable from Event Tick, every frame.
  • Tick abuseTick Abuse: Getting all actors on Event Tick is extremely expensive.Get All Actors Of Class in a per-frame path.
  • NestingDeep Nesting: Branch depth is >= 4. Consider refactoring.Four or more branches or loops stacked inside each other.
  • SequenceLong Sequence: Contains N execution pins. Consider extracting to a macro or function.A Sequence node that has become a to-do list.
  • OrphanOrphaned Node: Node has no connections.Left-over experiments with nothing wired to them.
You should see

Warning badges appear on the flagged nodes, plus a notification counting the findings. A clean graph reports BlueLine Linter: no findings in <GraphName>.

If it reports “no active Blueprint graph found”

The command ran without a focused graph editor. Click into the graph tab and try again.

05

Auto-Tag — comment boxes that mean something

Ordinary comment boxes carry a string. BlueLine's carry a gameplay tag, so the structure of your graph becomes queryable data rather than decoration.

Shift+TAuto-Tag Graph

Auto-Tag clusters connected nodes, scores each cluster's semantics against node names and types, and — where the score clears the confidence threshold — draws a comment box titled with the winning category. The resolved tag is persisted on the comment node itself, not just rendered in its title.

Fig. 5 — a loose cluster becomes a tagged region
Select the generated box and the Details panel shows the stored tag — here BlueLine.Type.Combat.

Eleven native tags are registered at editor startup:

BlueLine.Type.Movement BlueLine.Type.Combat BlueLine.Type.UI BlueLine.Type.Input BlueLine.Type.Networking BlueLine.Type.Audio BlueLine.Type.Visuals BlueLine.Type.AI BlueLine.Type.Logic BlueLine.Type.Data BlueLine.Type.Unknown
New in 1.2.0 — knots no longer inflate boxes

The analyzer used to measure a reroute Knot as a full 120×100 node, so any cluster containing knots got a comment box far larger than the nodes inside it. Knots are now measured at their true 32×32 and the boxes hug their contents.

If no boxes appear

Either the cluster is below the minimum size, or its semantic score never cleared SemanticConfidenceThreshold — a genuinely mixed cluster is left alone by design. Also check bEnableSmartTags and bEnableAutoTagCommand.

Tune it — Editor Preferences › Plugins › BlueLine › Smart Tags
MinClusterSizeAutoSmallest cluster tagged on a whole-graph run3
MinClusterSizeSelectionSmallest cluster tagged when you have a selection2
SemanticConfidenceThresholdScore a cluster must beat to earn a tag — raise it for fewer, surer boxes3.0
ClusterWeightMultiplierGlobal scaling on cluster scoring1.0
DefaultClusterTagFallback tag when nothing scores clearly
CommentBoxPaddingBreathing room drawn around a tagged cluster40
06

Bookmarks and snippets — stop scrolling

Two small features that quietly buy back the most time: jump instead of pan, and insert instead of rebuild.

Alt+19Set bookmark at selected node
Alt+Shift+19Jump to bookmark
Alt+0Clear all bookmarks in this graph

Select a node, press Alt+3, and that spot is slot 3 for this graph. Alt+Shift+3 takes you back from anywhere. Bookmarks persist to Saved/BlueLineBookmarks.json, so they survive closing the editor.

Why these chords

Ctrl+1-9 belongs to viewport camera bookmarks and plain Shift+1-9 collides with level-editor mode switching. Alt to set and Alt+Shift to jump were picked to stay clear of both.

Shift+SCreate snippet from selection
Shift+IInsert snippet

Select the node group you keep rewriting — a save/load pattern, a damage calculation, an interaction trace — and press Shift+S to name and store it. Shift+I opens the browser and drops it into the graph at the viewport center. Snippets live in Saved/BlueLineSnippets.json.

Snippet browser — Shift+I
You should see

Inserted nodes appear at the center of your current view with their internal wiring intact, ready to hook into the surrounding graph.

07

Get code out of the graph

Two exits for logic that has outgrown its Event Graph: promote it to a subsystem, or get it into text you can read, diff and paste.

Shift+BExtract to Subsystem

Select the nodes, press Shift+B, and pick a subsystem type — Game Instance, World or Local Player. BlueLine creates the Blueprint, copies the nodes with their internal links intact, assigns fresh GUIDs, anchors the copy at SourceBounds.Min + (100, 100), and compiles it.

Fig. 6 — five nodes become one subsystem call
The extracted logic lives in its own asset; the Event Graph keeps a single call.
New in 1.2.0 — path sanitisation

Stale string concatenation used to produce duplicated package directories when creating the asset. The extractor now hands CreateAsset a clean /Game/… long package path, so the new subsystem lands exactly where you pointed it.

Shift+EExport to Text

Exports your selection — or the entire graph if nothing is selected — to a readable text file. This is the fastest way to get a Blueprint into a code review, a bug report, or a conversation with someone who can't open your editor.

// BlueLine graph export — EventGraph
Event BeginPlay
  → Call GetGameInstanceSubsystem  (Class: BP_CombatSubsystem)
  → Call InitialiseCombat
       Damage       float   = 25.0
       TargetActor  Actor*  = <linked>
  // Comment: runs once per possession
Tune it — Editor Preferences › Plugins › BlueLine › Export
DefaultExportPathWhere text exports land by default
DefaultSubsystemPathWhere extracted subsystem Blueprints are created
bExportIncludeCommentsCarry node comments into the texttrue
bExportIncludeVariableTypesAnnotate pins with their typestrue
bExportIncludeDefaultValuesInclude literal pin defaults — off by default for terser outputfalse
08

Leave the graph — the level pie menu

BlueLine's other half lives in the level viewport: one radial menu, four directions, opened under your cursor so your hand never leaves the mouse.

Alt+XBlueLine Pie Menu — level viewport
Fig. 7 — the four default slots
Flick toward a slot and release. Inside the PieMenuDeadZone nothing is chosen — Esc always cancels.
  • UpPivot to CenterMoves the pivot to the center of the selection's bounding box.
  • RightSnap to CursorEnters picking mode, traces against visible geometry and snaps the pivot to the nearest triangle vertex where CPU mesh data is available. Left-click commits, right-click or Esc cancels.
  • DownPivot to BottomDrops the pivot to the lowest visible bound — the one you want for props and characters that sit on the floor.
  • LeftSelect by MaterialPreviews every actor sharing the material under your cursor. Scroll to grow or shrink the radius; release to commit the selection.
You should see

The radial menu fades in centred on your cursor with four labelled slots. Hovering a slot expands its label from the short name to the full one.

New in 1.2.0 — viewport safety

The pie menu now verifies Client->GetScene() before building a scene family context, and level selection sessions are gated behind the BlueLine master switch. Both fixes remove crashes seen in unusual viewport states.

Tune it — Editor Preferences › Plugins › BlueLine › Level Editor
bEnableLevelPieMenuMaster switch for the radial menutrue
bEnableScopeSelectionMaster switch for material-scope selectiontrue
PieMenuRadiusDistance from cursor to the slot ring120
PieMenuDeadZoneNeutral zone at the center where nothing is selected30
DefaultSelectionRadiusStarting radius for material-scope selection500
SelectionRadiusIncrementChange per mouse-wheel tick50
MinSelectionRadius / MaxClamp on the scope radius100 / 5000
TopSlot … LeftSlotRebind any slot's title, icon and colour — or point it at a raw console command4 slots

Make it a habit

Nine stations is a lot to hold at once, and you won't use most of them daily. This is the loop that matters — about sixty seconds, run before you commit a Blueprint.

While working
Shift+Q
Tidy the handful of nodes you just placed. Cheap, reversible, constant.
Before review
Shift+C
One whole-graph pass so the reviewer reads flow, not spaghetti.
Before review
Shift+L
Catch the tick abuse and dead nodes before someone else does.
On handover
Shift+T
Leave tagged regions so the next person knows what they're looking at.

Every shortcut

Blueprint graph
Auto-Format SelectionShift+Q
Rigidify WiresShift+R
Clean GraphShift+C
Blueprint LinterShift+L
Extract to SubsystemShift+B
Export to TextShift+E
Create Node SnippetShift+S
Insert Node SnippetShift+I
Toggle Wire StyleShift+Alt+W
Smart Tags
Auto-Tag GraphShift+T
Bookmarks
Set bookmark 1–9Alt+1…9
Jump to bookmark 1–9Alt+Shift+1…9
Clear all bookmarksAlt+0
Level viewport
BlueLine Pie MenuAlt+X
Pivot to CenterPie ↑
Snap to CursorPie →
Pivot to BottomPie ↓
Select by MaterialPie ←

Where everything is configured

EditEditor PreferencesPluginsBlueLine

Every setting named in this tutorial lives there, grouped by module: Routing, Visuals, Formatting, Smart Tags, Level Editor, Export and Debug. The panel also carries Reset to Defaults, plus Export and Import Settings as JSON — the quickest way to put a whole team on one configuration.

BlueLine v1.2.0 — Canon Release UE 5.5 → 5.8+ © 2026 GregOrigin Full manual Support