The Blueprint / C++ boundary
C++ owns the systems (structure, performance, things many classes share). Blueprint child classes own the
content (which mesh, which anim BP, which data asset, tuning values). UPROPERTY/UFUNCTION
specifiers are the doors between them. WadOfGore follows this exactly: AWarriorHeroCharacter in C++,
BP_HeroCharacter just fills in assets.
Functions
| Specifier | Blueprint sees | Use |
|---|---|---|
BlueprintCallable | A node with exec pins | Does something / changes state |
BlueprintPure | A node with no exec pins | Just returns a value. Re-runs for every node it's plugged into, so keep it cheap |
BlueprintImplementableEvent | An event BP must implement | C++ says "this happens", BP decides what it looks like (VFX, sound) |
BlueprintNativeEvent | An event BP may override | C++ default (_Implementation), BP can replace it |
Properties
See the table on the course's C++ vocabulary: EditDefaultsOnly,
EditAnywhere, VisibleAnywhere, BlueprintReadOnly/ReadWrite,
Category, meta = (...) (ClampMin, EditCondition,
AllowPrivateAccess, Categories for tags).
What goes where
| C++ | Blueprint |
|---|---|
| Base classes, core loops, anything per-frame over many objects | Asset assignment, tuning, one-off level scripting |
| Things many classes cast to (C++ casts don't drag BP assets in) | Prototyping before you know the shape |
| Math-heavy or engine-API-heavy code | VFX/SFX hooks via implementable events |
Data-driven instead of a class per variant
- Data Assets (
UDataAsset/UPrimaryDataAsset): one object of typed data. WadOfGore's input config is one. - Data Tables: rows of a struct, often edited as CSV. Good for long lists (weapons, enemy stats).
- You've already done this in your survival project's harvesting and interaction systems. Say that in the interview.
Tools side
- Blueprint Function Libraries: static helper nodes available everywhere.
- Editor Utility Widgets / Blueprints, Scripted Asset Actions, Python: automating the editor.
- Blueprint nativisation was removed in UE5. Don't cite it.
Quiz yourself
BlueprintCallable vs BlueprintPure?
Callable has exec pins (it does something). Pure has none and just returns a value, but it re-evaluates for each connected consumer.
ImplementableEvent vs NativeEvent?
Implementable: no C++ body, BP provides it. Native: a C++ default in Func_Implementation that BP can override.
Why keep the hero's logic in C++ and only assets in BP_HeroCharacter?
Performance and structure in C++; designers can swap assets and tune without code; and casting to the C++ class doesn't hard-reference the BP's assets.
Data asset vs data table: when each?
Data asset: one structured configuration object (an input config, a character's start-up data). Data table: many rows of the same struct (a list of weapons).
What UE4 feature must you not cite as a BP performance fix?
Blueprint nativisation. It was removed in UE5.