Orthogonal wire routing, intelligent node alignment, fuzzy context-menu search, and named reroute improvements, all in one plugin.
Six-phase orthogonal routing pipeline with corners, U-turns, wire spacing, node avoidance, and junction indicators.
Seamless visual bridging between Named Reroute declaration and usage nodes, with inline label display along the wire.
Typo-tolerant node search with acronym lookup, auto-expanding categories, resizable menu window, and recent node history.
One-key graph alignment that handles execution trees, data chains, branches, and wire straightening.
Gridline Blueprints is a FAB marketplace plugin. All four modules install together and can be individually toggled from Project Settings.
Add Gridline Blueprints to your FAB library. In the Epic Games Launcher, open the FAB tab, locate the plugin, and click Install to Engine for your Unreal Engine version (5.6 or 5.7).
Open your project in UE, navigate to Edit → Plugins, search for Gridline, and enable all four plugin entries. Restart when prompted.
All settings live under Edit → Project Settings → Plugins. Four independent categories are available: Gridline Wire Routing, Gridline Nodes, and Gridline Context Menu. Settings are saved per-project and per-user.
Open any Blueprint or Animation Blueprint. Orthogonal routing, fuzzy search, and alignment activate immediately. Press F in any graph editor to trigger node alignment on selected nodes.
Replaces Unreal's default spline connections with a fully orthogonal (right-angle) routing system. Wires are processed through an ordered pipeline of independent phases, each of which can be configured or disabled independently.
Every frame, each wire passes sequentially through the following phases. Phases operate on the wire's segment array in-place, allowing later phases to build on earlier corrections.
Generate 3-segment H-V-H orthogonal path from source to dest pins
›Detect backward wires and convert to 5-segment U-turn paths
›Offset parallel overlapping segments and convert eligible wires to U-turns
›Reroute segments around unrelated nodes using Simple or Complex strategy
›Apply Fillet / Eased / Chamfer corners and handle tight-turn segments
›Detect T-intersections and insert visual Break / Jump / Ring / Disc markers
| Setting | Type | Default | Description |
|---|---|---|---|
| Enable Plugin | bool | true | Global on/off switch. Disabling this reverts all Blueprint graphs to Unreal's default spline rendering instantly. |
| Enable for Blueprint Graphs | bool | true | Apply orthogonal routing in Blueprint event graphs and function editors. |
| Enable for Animation Graphs | bool | true | Apply orthogonal routing in Animation Blueprint state machines and blend graphs. |
| Setting | Type | Default | Description |
|---|---|---|---|
| Wire Routing Bias |
enum
SourceDestination
|
Destination | Determines which pin the vertical turn segment is anchored to. Source places the bend near the output pin; Destination places it near the input. This affects the visual balance of wires in graphs where nodes are spread horizontally. |
| Pin Length | int32 [12–64] | 28 | The horizontal stub length (in pixels) that exits the biased pin before the wire makes its first 90° turn. Must be ≥ Corner Size to avoid invalid geometry, the engine clamps Corner Size to Pin Length automatically. |
| Wire Thickness | float [0.5–5.0] | 1.0 | Thickness multiplier for all wires. 1.0 matches Unreal's default weight. Values above 2.0 are noticeable; values above 3.5 are very heavy. This also scales junction and animation element sizes. |
| Hide Reroute Nodes | bool | false | When enabled, reroute nodes become invisible along the wire. They reappear when hovered so they remain interactive. Useful for very clean-looking graphs; pairs well with Named Reroutes, which display their label inline. |
A U-turn occurs when a wire's destination pin is to the left of its source pin (backward connection). The router generates a 5-segment path that exits the source, makes a detour above or below both nodes, and re-enters from the correct side.
| Setting | Type | Default | Description |
|---|---|---|---|
| Clearance Style |
enum
Clear ClosestClear DestinationClear Source
|
Clear Closest | Controls how the U-turn bridge calculates vertical clearance when nodes partially overlap. Clear Closest automatically routes around whichever bound is nearest to the bridge, above the source top, destination top, destination bottom, or source bottom depending on the geometry. Clear Destination and Clear Source always route around the specified node's bounds. |
| Enable Grid Snapping | bool | true | Snaps U-turn horizontal bridge lengths to the nearest blueprint grid unit (default 64px). This ensures wire corners land on grid positions, producing cleaner-looking graphs when Grid Snapping is also enabled in the viewport. |
Very short wires, where source and destination pins are close together, benefit from a different routing strategy. Fully orthogonal paths can look awkward or produce very tight corners in this case.
| Setting | Type | Default | Description |
|---|---|---|---|
| Short Wire Threshold | int32 [0–500] | 120 | The pin-to-pin distance below which a wire uses Short Wire Style instead of full orthogonal routing. Set to 0 to disable short-wire handling entirely and use the standard pipeline for all wires. |
| Short Wire Style |
enum
SplineStraightOrtho
|
Ortho | Spline: draws a smooth cubic Bézier between the pin stubs, mimics Unreal's default style for close nodes. Straight: direct diagonal line. Ortho: standard orthogonal path but using the shorter ShortWirePinLength stub. |
| Short Wire Pin Length | int32 [0–64] | 12 | The horizontal stub length used specifically for short wires in Spline, Straight, or Ortho style. Smaller than the standard Pin Length to avoid over-extending on compact connections. |
Corners replace the sharp right-angle bends of raw orthogonal routing with smoothed curves or cuts, applied during the Corner Processing Phase.
| Setting | Type | Default | Description |
|---|---|---|---|
| Corner Size | int32 [0–32] | 8 | The radius (in pixels) of corner smoothing. 0 produces perfectly sharp right angles. Higher values produce more pronounced curves. Automatically clamped to be ≤ Pin Length so corners always fit within their containing segment. |
| Corner Style |
enum
EasedFilletChamfer
|
Fillet |
Eased: cubic Bézier arc using a 4(√2−1) tangent multiplier, approximating a circular arc asymptotically. Produces slightly softer curves than Fillet. Fillet: true quarter-circle arc using a π tangent multiplier. Mathematically precise circular corner. Chamfer: a straight diagonal cut replacing the corner, angular, engineering-style look. |
| Enable Tight Turn Handling | bool | false | Activates special rendering for vertical segments that are too short to fit standard corners at both ends. Without this, the engine clips corners into each other, producing visual artifacts. When enabled, these segments use Tight Turn Style instead. |
| Tight Turn Threshold | float [2–16] | 2.0 | Vertical segments shorter than Corner Size × Threshold are treated as tight turns. A value of 2.0 means any segment shorter than two full corner radii triggers tight-turn handling. Increase this to apply special handling more aggressively. |
| Tight Turn Style |
enum
SplineStraight
|
Spline | Spline: replaces the tight vertical segment with a smooth cubic Bézier that flows naturally from the adjacent horizontal segments. Straight: replaces it with a direct diagonal line, creating a crisp angular shortcut. |
| Tight Turn Offset | float [0–2] | 2.0 | How far (in corner-radius units) the segment after a tight turn is pushed back to make room for the spline or diagonal. 2.0 provides one full corner radius of clearance between the tight turn and the next corner. |
When multiple wires travel in parallel along the same axis, they naturally overlap and become indistinguishable. Wire Spacing detects these overlapping segments and offsets them so each wire is individually visible. This phase also converts eligible standard paths to U-turn paths when spacing pushes them out of range.
| Setting | Type | Default | Description |
|---|---|---|---|
| Enable Wire Spacing | bool | true | Enables the wire spacing phase. Disabling this allows wires to fully overlap on parallel runs. |
| Wire Spacing | int32 [8–64] | 16 | The pixel distance between adjacent parallel wire segments. Larger values create more visual breathing room but can push wires further from their natural paths. 16px is a good balance at 1:1 zoom. |
| Space Shared Source Wires | bool | false | When enabled, wires that share the same output pin are spaced apart from one another. By default these are allowed to overlap at the source since they are clearly related. Enable this when you have many wires leaving a single pin and want each path individually distinguishable. |
| Space Shared Destination Wires | bool | false | Same as Space Shared Source Wires, but applies to wires sharing the same input pin. Useful when multiple wires converge into one node and you want to trace each path independently. |
Node avoidance detects when a wire segment passes through an unrelated node's bounds and reroutes it around the obstacle. The phase distinguishes source and destination nodes (which are always allowed to be crossed) from all others. Comment nodes are also excluded.
| Setting | Type | Default | Description |
|---|---|---|---|
| Enable Node Avoidance | bool | true | Enables automatic rerouting around unrelated nodes. When disabled, wires will pass through nodes as in standard Unreal routing. |
| Node Avoidance Style |
enum
SimpleComplex
|
Complex |
Simple: shifts the vertical segment sideways to clear the obstacle, fast and deterministic but only works for single-obstacle scenarios that don't require new segments. Complex: iteratively inserts new detour segments around each obstacle in turn, fully routing the wire around multiple stacked or offset nodes. |
| Node Avoidance Padding | int32 [0–64] | 16 | Minimum pixel clearance maintained between the rerouted wire and the edges of any obstacle node. Larger values give visually clean separation but may push wires further. |
When a horizontal wire crosses a vertical wire from a different connection, the junction phase draws a visual indicator at the intersection. Junctions are never drawn for wires that share a pin. The phase uses spatial bucketing (64px buckets) for efficient O(n) intersection detection.
| Setting | Type | Default | Description |
|---|---|---|---|
| Enable Junctions | bool | true | Enables junction indicators at wire crossing points. Without this, crossing wires are visually ambiguous. |
| Junction Style |
enum
BreakJumpRingDisc
|
Jump |
Break: a gap in the horizontal wire where it crosses the vertical, classic PCB style. Jump: a small arc drawn over the crossing point, schematic style. Ring: a circle outline drawn at the intersection. Disc: a filled circle drawn at the intersection, highest visibility. |
| Junction Size | int32 [8–32] | 12 | Diameter in pixels of the junction indicator. Scales with the flow animation size. 12px is clearly visible at 1:1 zoom without being overwhelming. |
Flow animation renders moving indicators along wires to show data flow direction, useful when presenting graphs or debugging complex wiring.
| Setting | Type | Default | Description |
|---|---|---|---|
| Enable Flow Animation | bool | false | Enables animated flow indicators along wires. Disabled by default for performance. |
| Animation Style |
enum
DotPulse
|
Dot | Dot: discrete circular dots travel along the wire. Pulse: a traveling brightness wave that brightens the wire along its length without adding separate geometry. |
| Animated Wire Types |
enum
Exec OnlyData OnlyAll WiresSelected Only
|
Execution Only | Limits animation to execution (white) wires, data (colored) wires, all wires, or only wires connected to currently selected nodes. Selected Only is useful for tracing specific connection paths without visual noise from the rest of the graph. |
| Animation Spacing | int32 [16–256] | 64 | Distance between consecutive animated elements. For Pulse style, the pulse length is 60% of this value. Smaller values create denser packing; larger values give more separation between indicators. |
| Animation Speed | int32 [32–512] | 64 | Travel speed in pixels per second. Higher values create fast-moving indicators. 64px/s feels comfortable for most graph sizes. |
| Animation Size | float [0.1–1.0] | 0.2 | Size of each dot element relative to wire thickness. 0.2 produces a subtle, small indicator; 1.0 fills the full wire width. |
| Pulse Brightness | float [0.5–3.0] | 1.5 | Brightness multiplier for the Pulse style peak. 1.0 matches the wire's base color; values above 1.0 create a glowing highlight. Only active when Animation Style is set to Pulse. |
Gridline Blueprints extends Unreal's built-in named reroute nodes to work cleanly within the orthogonal routing system, with hidden node rendering and visual bridging.
When a Named Reroute Declaration and its Usage counterpart are both present, the drawing policy collects bridge information (input and output positions, connection parameters, layer IDs) per reroute node and draws a seamless wire across the gap, suppressing the node widget entirely while retaining full interactivity on hover. The named label is displayed inline along the bridge wire.
Part of the Wire Routing system. Reroute nodes placed between a forward and backward connection produce a geometric flip. The drawing policy maintains a FlippedRerouteNodes set to track which reroutes involve a directional reversal, and passes this into the FWirePhaseContext so the U-turn phase can correctly resolve clearance direction for bridged wires.
A graph-aware layout engine that arranges selected nodes into a clean, readable structure. It traverses the execution graph, places data chains, resolves overlaps, straightens wires, and aligns branches, all in one keypress.
When triggered, the alignment system performs a flood-fill across the selected nodes using execution pin connections, discovering all independent execution graphs. Each graph is processed separately so disconnected subgraphs don't interfere with each other.
An anchor node is identified for each graph (typically the leftmost or highest-priority execution root). The anchor is snapped to the blueprint grid, then the recursive layout begins.
The engine uses a ClaimedGridCells set to prevent node overlap. Each node claims its grid cells after placement, and subsequent placements are pushed downward or rightward to avoid already-claimed space.
Each execution node is placed right of its predecessor. Its output execution pins are sorted by pin index, then branches are laid out top-to-bottom with Y-tracking to prevent stacking. Recursion continues depth-first through the execution chain.
For each data input pin on an execution node, the system traverses backward through connected data nodes (those without execution pins), placing them in a "data rib" to the left of the execution node. Child data chains cascade recursively.
| Setting | Type | Default | Description |
|---|---|---|---|
| Enable Plugin | bool | true | Global toggle for all Gridline Nodes features. Disabling this suppresses all keybinds and processing. |
| Enable for Blueprint Graphs | bool | true | Restrict node alignment to Blueprint event graphs and function editors only. |
| Enable for Animation Graphs | bool | true | Allow node alignment to run in Animation Blueprint graphs as well. |
| Setting | Type | Default | Description |
|---|---|---|---|
| Enable Node Alignment | bool | true | Enables the alignment keybind and processing pipeline. When disabled, the keybind has no effect. |
| Alignment Keybind | FInputChord | F | The key combination used to trigger full alignment on selected nodes and their connected graphs. Expands the selection outward through all execution and data connections before aligning. |
| Selected-Only Alignment Keybind | FInputChord | G | Aligns only the currently selected nodes without expanding to their full connected execution graph. Useful for nudging a subset of a larger graph without disturbing other nodes. |
| Straighten Execution Wires | bool | true | When placing the first output execution node, aligns it vertically so its input execution pin matches the Y-position of the predecessor's output execution pin, producing a perfectly straight horizontal wire between the two. Subsequent branches establish their own Y anchors. |
| Group Alignment Mode |
enum
Right of PredecessorLeft with Predecessor
|
Right of Predecessor |
Right of Predecessor: places the entire node group (exec node + its data rib) strictly to the right of the preceding execution node's right edge. Left with Predecessor: aligns the left edge of the group with the predecessor's left edge, then shifts right only as needed to clear overlap. Results in a more compact vertical layout. |
Gridline Blueprints is structured as four independent Unreal Engine modules, each with a focused responsibility. Modules communicate only through shared interfaces and Unreal's settings infrastructure.
Owns the FGridlineBlueprintConnectionDrawingPolicy and its factory. Registers the policy via FEdGraphUtilities::RegisterVisualPinConnectionFactory on startup. Manages all six wire phases as IWireRoutingPhase instances stored on the drawing policy object. Settings live in UGridlineWireRoutingSettings.
Owns FGridlineBlueprintNodeProcessingPolicy and the keybind registration. The policy stores a list of INodeLayoutPhase instances (currently FNodeAlignmentPhase). Layout is triggered by a custom graph editor command handler. Settings live in UGridlineNodesSettings.
Manages a list of IGridlineFeature instances, each activated by its own IsEnabled predicate read from UGridlineContextMenuSettings. Features are registered in FGridlineContextMenuModule::InitializeContextMenuFeatures and respond to live settings changes via FOnGridlineContextMenuSettingsChanged.
The .uplugin descriptor that declares all sub-modules, author metadata, version information, and marketplace categorization. Contains no runtime code, all functionality lives in the child modules.
Pure virtual interface with a single Execute(TArray<FWireData>&, const FWirePhaseContext&) method. Each concrete phase (UTurnResolution, WireSpacing, NodeAvoidance, CornerProcessing, JunctionPhase) implements this interface and operates exclusively on the FWireData array.
Pure virtual interface with a single Execute(FNodePhaseContext&) method. The FNodePhaseContext carries the selected node set, anchor node, grid size, graph panel reference, and claimed-cell tracking. The processing policy iterates all phases in sequence per graph.
Gridline Blueprints is an Editor-only plugin. It does not affect packaged game builds and has zero runtime overhead in shipped products.
Event graphs, function editors, macro libraries, and animation Blueprint graphs
State machines and blend graphs, all three Gridline modules work in AnimBP editors
Fully supported. The plugin targets the 5.6 public API surface.
Fully supported and tested against the 5.7 release.
Win64 development and shipping editor targets fully supported.
Mac editor targets supported. ARM (Apple Silicon) and x64.
Linux editor targets supported for development pipelines.
Designed to co-exist with the Blueprint Assist plugin. Wire routing and node alignment operate independently without conflicts.