Verse Wiki — the Verse handbook for Blueprint authors
Technique · EXTRA

How to Read a Verse Compiler Error: File, Line, Column, Code

For a Blueprint author writing Verse for the first time, the biggest jolt is not the syntax — it is the errors. When a Blueprint fails, the editor circles the offending node in red and you double-click straight to it; Verse hands you a line of English and a string of numbers. The good news is that it has a fixed structure. Learn to take it apart, learn the handful of errors every beginner hits, and errors turn from a wall into a map.

1. The Three Parts of an Error

When Ctrl+Shift+B fails in UEFN, the Verse button turns into a red stop icon, and clicking “See Errors” in the popup opens the Message Log panel listing every error. Pick one out and it looks like this:

One compile error in the Message Log
my_door.verse(10,9, 10,13) : Verse compile error vErr:S54 : Unknown identifier `Prnt`.

Three parts, read left to right:

Part Example What to do with it
Location my_door.verse(10,9, 10,13) A file name plus a pair of “line, column” coordinates. The first pair is the start of the offending fragment, the second is the end — meaning the compiler has already boxed in the exact characters. Line 10, columns 9 through 13: precisely the four letters of Prnt
Error code vErr:S54 vErr is the “Verse error” prefix and the number is the error category. Its real use is searching: throw the code plus the description into a search engine or the Epic developer forums and someone has almost certainly hit the same thing. Note that the numbers get adjusted across compiler versions, so trusting the description is safer than trusting the code
Description Unknown identifier `Prnt`. This is where the actual information lives. The name in backticks is the word the compiler does not recognize — here, Print got typed as Prnt

Once it is habit, reading an error takes three seconds: which file, which line → which word is the compiler complaining about → what class of problem is it complaining about. Double-click the entry in the Message Log and UEFN takes you to that line and column, with the cursor sitting on the offending characters.

2. The Five a Beginner Hits Most

These five cover the vast majority of week-one build failures. The exact description text shifts a little between versions, but the meanings are stable.

1. Unknown identifier — “I don’t recognize this name”

The gist: you used a name the compiler has never seen. Three causes, most likely first:

2. Unknown member — “that thing has no such member”

The gist: the name itself is recognized, but you reached into it for something it does not have, e.g. MyDoor.Opne(). Translated into Blueprint terms: you dragged off an object pin and searched for a function this class simply does not own. Same triage as above — suspect the spelling first, then check the Verse API docs for what that class actually exposes.

3. The override does not match — anything about <override>

This family points in two directions with different wording but one root cause: the signature you wrote does not match the parent’s.

When you hit this family, do not start rewriting logic. Compare your OnBegin<override>()<suspends>:void = against the main lesson’s version character by character first.

4. Failure context — “this check must sit somewhere failure is allowed”

The gist: this expression might not succeed, so it has to appear in a position that allows it not to succeed (the phrase “failure context” shows up in the wording). Nine times out of ten, a beginner hitting this forgot to write set: you meant to change a variable and wrote Score = 100, but a lone = in Verse is a comparison, not an assignment — so that line became a check, and a check cannot just stand there bare.

The fix: changing a value always takes set Score = 100. The full story lives in Lessons 8 and 12.

5. Indentation and syntax — “that shouldn’t be here”

Verse expresses ownership through indentation, so wrong indentation is wrong syntax. The two usual suspects: a line that should be indented is not (the function body sits level with the declaration), and mixing tabs with spaces — visually aligned, but the compiler sees two different characters. VS Code defaults to 4 spaces; leave that alone. The descriptions in this family tend to be dry (“Expected …”), but the location part is always accurate — go to the line number and read the indentation.

One more thing that is not an error but is worth knowing: a successful build does not mean nothing will go wrong at runtime. Verse has a separate runtime error reporting mechanism; that is a different topic — see the sources below.

3. Triage: Four Habits

4. Side by Side With Blueprint’s Compiler Results Panel

Blueprints fail to compile too, of course — you may just never have thought much about it, because their failures are visual.

Blueprint Verse Difference
The Compiler Results panel lists errors; double-click to jump to the offending node The Message Log lists errors; double-click to jump to the offending line and column One locates graphically, the other by coordinates. Verse is accurate to the character, which is arguably sharper than circling a whole node
The toolbar Compile builds this one Blueprint asset Build Verse Code compiles every .verse file in the project A Verse error may come from a file you have not opened today; the upside is that cross-file inconsistencies surface immediately
Many “errors” are blocked while you wire: a type-mismatched pin simply refuses to connect Everything is deferred to build time and reported in one batch Blueprint intercepts early through editor UI; Verse intercepts later through the compiler. That is the price of text — and the reason text can be diffed and reviewed
You can save and run with warnings outstanding Not one compile error may remain, or playtesting is off the table Verse is stricter: all of it passes, or none of it does

Once you adjust, text errors turn out to be more useful: they can be copied, searched, pasted into a forum post, handed to an AI. That red-circled node in Blueprint, you can only screenshot.

A build finishes and the Message Log shows 9 errors. What is the most efficient first move?

5. Sources

This page is distilled from Epic’s official documentation: