Skip to content

Complexity score

Every scan gives each Blueprint with logic a complexity score from 0 (simple) to 100 (very complex). It tells you how hard a Blueprint is to read and change. Sort the Blueprints table by Complexity to find the hardest ones first.

A Blueprint gets a score when it has logic: at least one node, and it is not an interface. Structures, enums, Blueprint Interfaces and Blueprints without nodes get no score. The panel and the pages show - for them, and scribe.json has 0.

Blueprint Scribe first adds up a raw value from what the Blueprint contains:

Part Weight
Nodes in all graphs (without comments and reroute nodes) 1 per node
Branches: Branch, Switch, Select, MultiGate and the Gate, FlipFlop, Do Once, Do N and Is Valid macros 3 each
Loops: loop macros such as For Loop, For Each Loop and While Loop 5 each
Cast nodes 2 each
Graphs that contain nodes 2 each
Member variables 0.5 each
Functions, events, event dispatchers and macros 1 each
Nodes in the largest graph 0.5 per node

Branches, loops and casts are only counted on enabled nodes. The largest graph counts twice on purpose: one huge graph is harder to follow than the same nodes in several small graphs.

The raw value is then turned into the score:

score = 100 × (1 − e^(−raw ÷ 300)), rounded, from 1 to 100

The curve rises fast for small Blueprints and flattens out for large ones, so the score never runs past 100.

Raw value Score
30 10
100 28
300 63
600 86
900 95
Score Label Color
0 – 24 Simple Green
25 – 49 Moderate Green
50 – 74 Complex Amber
75 – 100 Very complex Red
Where What you see
Panel summary The Complexity tile: the average score of all scanned Blueprints with logic. Hover it for the explanation.
Panel, Blueprints table The Complexity column, sortable. Hover a score to see the label and what it is made of, for example “Moderate: 54 nodes, 4 branches, 1 loop, 6 graphs, largest EventGraph (42)”.
Panel, Blueprint details The Complexity fact with the score, the label and the same breakdown as a tooltip.
Panel, C++ migration page “complexity” and the score next to every Blueprint.
HTML site Complexity (average) on the overview and on migration.html, a Complexity column in the asset table and a Complexity fact on every asset page.
Markdown The average in index.md, a Complexity column there and in migration.md, and a Complexity row in each asset file.
JSON complexityScore (the average) at the top level and metrics.complexity on every asset.
AI-ready text A line such as “Complexity: 30 of 100 (moderate).” for every Blueprint with logic.
Python report.complexity_score and asset.metrics.complexity.

A complexity of 60 or more also adds to the C++ migration score. The two scores answer different questions: complexity says how hard a Blueprint is to work with, the C++ score says how much it would gain from moving to C++.