CodeForge
Visual C++ Code Generator for Unreal Engine 5
Design classes, structs, enums, and interfaces in a node-based editor. CodeForge generates UHT-compliant C++ boilerplate instantly — with replication, RPCs, delegates, and more.
v0.1.0 · UE 5.71 Overview
CodeForge is an editor plugin that lets you define Unreal Engine C++ classes, structs, enums, and interfaces visually — then generates complete, compile-ready header and source files. Instead of hand-writing UPROPERTY/UFUNCTION macros, specifier strings, and replication boilerplate, you configure them through a node graph and a details panel, and CodeForge emits correct C++ instantly.
2 Installation
From Fab
- Purchase and download CodeForge from fab.com.
- Extract the zip. You will find
HostProject/Plugins/CodeForge/. - Copy the
CodeForgefolder into your project'sPlugins/directory. - Regenerate project files (right-click your
.uproject→ Generate Visual Studio project files). - Open the editor. CodeForge loads automatically — check Edit → Plugins to verify.
From Source
Clone the repository into YourProject/Plugins/CodeForge. The plugin has two modules:
| Module | Type | Loading Phase | Purpose |
|---|---|---|---|
CodeForgeRuntime | Runtime | Default | Blueprint data model, template engine, validation |
CodeForgeEditor | Editor | PostEngineInit | Graph editor, code generator, asset actions |
"EngineVersion": "5.7.0" in its descriptor and uses BuildSettingsVersion.V6.3 Quick Start
- Create a CodeForge Blueprint: In the Content Browser, right-click → CodeForge → CodeForge Blueprint. Name it (e.g., CFB_PlayerCharacter).
- Open the editor: Double-click the asset. The CodeForge Asset Editor opens with a node graph on the left and a code preview panel on the right.
- Set Blueprint Kind: In the Details panel, choose
Class,Struct,Enum, orInterface. - Configure identity: Set ClassName (e.g.,
MyCharacter), ClassType (e.g.,Character), and ModuleTarget. - Add members: Right-click the graph → add Property, Function, RPC, or Delegate nodes. Configure each in the Details panel.
- Review the preview: The code preview panel shows the generated .h and .cpp in real time.
- Generate: Click the Generate Code toolbar button. Files are written to your module's Source directory.
4 Architecture
CodeForge is organized into distinct layers, each with a single responsibility:
| Layer | Module | Key Classes |
|---|---|---|
| Data Model | CodeForgeRuntime | UCodeForgeBlueprint, FCodeForgePropertyDef, FCodeForgeFunctionDef, FCodeForgeRPCDef, FCodeForgeDelegateDef |
| Template Engine | CodeForgeRuntime | FCodeForgeTemplateEngine, FCodeForgeTemplateContext |
| Code Generator | CodeForgeEditor | FCodeForgeGenerator::BuildContext(), Template file loading |
| Editor UI | CodeForgeEditor | FCodeForgeAssetEditor, SGraphNode_CodeForge, UCodeForgeEdGraph |
5 CodeForge Blueprints
A CodeForge Blueprint (UCodeForgeBlueprint) is the root data asset that stores your entire type definition. It lives in the Runtime module and is a pure data object — no UI logic, no code generation. This means it can be loaded and inspected in any context.
Core Properties
| Property | Type | Description |
|---|---|---|
ClassName | FString | The C++ type name (without prefix — CodeForge adds A/U/F/E automatically) |
BlueprintKind | ECodeForgeBlueprintKind | Class, Struct, Enum, or Interface |
ClassType | ECodeForgeClassType | Parent class (Actor, Pawn, Character, etc.) — only relevant for Classes |
bReplicated | bool | Enable replication setup (bReplicates, GetLifetimeReplicatedProps) |
ModuleTarget | FString | Target module for generated files (auto-detected from project) |
SubDirectory | FString | Optional sub-directory under Public/Private folders |
Interfaces | TArray<FString> | Interface names to implement (without I/U prefix) |
ConstructorBody | FString | Custom code injected into the constructor body |
Class Prefix System
CodeForge automatically prepends the correct UE prefix based on the type:
| Kind | Prefix | Example Input | Generated Name |
|---|---|---|---|
| Actor-derived Class | A | MyCharacter | AMyCharacter |
| UObject-derived Class | U | MySubsystem | UMySubsystem |
| Struct | F | ItemData | FItemData |
| Enum | E | ItemRarity | EItemRarity |
| Interface | U/I | Damageable | UDamageable / IDamageable |
ARPGCharacter (already prefixed with A + uppercase letter), CodeForge won't double-prefix it to AARPGCharacter. The prefix detection heuristic checks if the name already starts with the expected prefix character followed by an uppercase letter.6 The Node Graph
Each CodeForge Blueprint has a visual node graph (UCodeForgeEdGraph) managed by UCodeForgeEdGraphSchema. The central type node (Class, Struct, Enum, or Interface) represents the type itself, and member nodes connect to it representing properties, functions, RPCs, and delegates.
Node Types
Graph Interactions
- Right-click context menu: Add any member node type appropriate for the current BlueprintKind.
- Drag connections: Connect member nodes to the central type node.
- Undo/Redo: All graph operations are wrapped in
FScopedTransactionfor full undo support. - Validation overlays: Nodes display real-time error/warning badges from the validation system.
7 Code Generation
Code generation is handled by FCodeForgeGenerator. The process has three phases:
Phase 1 — BuildContext()
Reads the UCodeForgeBlueprint and populates a FCodeForgeTemplateContext with:
- Variables:
ClassName,ClassPrefix,ParentClassName,ParentInclude,ModuleAPI,ClassSpecifiers,ConstructorBody, etc. - Conditions:
Replicated,HasRepNotifyProperties,HasNativeEventFunctions - Arrays:
Properties,Functions,RPCs,Delegates,ReplicatedProperties,RepNotifyProperties,NativeEventFunctions,ImplementedFunctions,ServerRPCValidations,AdditionalIncludes,InterfaceIncludes
Phase 2 — Template Selection
Based on BlueprintKind and ClassType, the generator selects the appropriate .cft template pair:
| Kind | Header Template | Source Template |
|---|---|---|
| Actor / Pawn / Character / GameMode / etc. | actor_header.cft | actor_source.cft |
| ActorComponent / SceneComponent | component_header.cft | component_source.cft |
| Object | object_header.cft | object_source.cft |
| Interface | interface_header.cft | interface_source.cft |
| Struct | struct_header.cft | struct_source.cft |
| Enum | enum_header.cft | — |
Phase 3 — Template Processing
The FCodeForgeTemplateEngine processes the template text with the context and returns the final C++ output. See the Template Engine section for syntax details.
8 Classes
The most feature-rich blueprint kind. Supports all member types: properties, functions, RPCs, delegates, replication, and interface implementation.
Supported Class Types
| ClassType | Parent Class | Include Path | Prefix |
|---|---|---|---|
Actor | AActor | GameFramework/Actor.h | A |
Pawn | APawn | GameFramework/Pawn.h | A |
Character | ACharacter | GameFramework/Character.h | A |
ActorComponent | UActorComponent | Components/ActorComponent.h | U |
SceneComponent | USceneComponent | Components/SceneComponent.h | U |
Object | UObject | UObject/NoExportTypes.h | U |
GameModeBase | AGameModeBase | GameFramework/GameModeBase.h | A |
GameStateBase | AGameStateBase | GameFramework/GameStateBase.h | A |
PlayerController | APlayerController | GameFramework/PlayerController.h | A |
PlayerState | APlayerState | GameFramework/PlayerState.h | A |
HUD | AHUD | GameFramework/HUD.h | A |
Properties
Each FCodeForgePropertyDef generates a UPROPERTY() declaration. Available specifiers:
| Field | Type | Generated Specifier |
|---|---|---|
Name | FString | Variable name |
Type | FString | C++ type (e.g., float, FString, TArray<int32>) |
DefaultValue | FString | Initializer (e.g., 100.0f) |
bEditAnywhere | bool | EditAnywhere |
bEditDefaultsOnly | bool | EditDefaultsOnly |
bEditInstanceOnly | bool | EditInstanceOnly |
bVisibleAnywhere | bool | VisibleAnywhere |
bBlueprintReadWrite | bool | BlueprintReadWrite |
bBlueprintReadOnly | bool | BlueprintReadOnly |
bReplicated | bool | Replicated or ReplicatedUsing=OnRep_X |
bRepNotify | bool | Generates OnRep_ function |
ReplicationCondition | ECodeForgeRepCondition | DOREPLIFETIME_CONDITION macro parameter |
bExposeOnSpawn | bool | ExposeOnSpawn |
bSaveGame | bool | SaveGame |
Category | FString | Category="..." |
Meta | TMap<FString, FString> | meta=(Key=Value, ...) |
IncludePath | FString | Adds an #include for custom types |
UPROPERTY(EditAnywhere, BlueprintReadWrite, ReplicatedUsing=OnRep_Health)
float Health = 100.0f;
Functions
Each FCodeForgeFunctionDef generates a UFUNCTION() declaration:
| Field | Description |
|---|---|
Name | Function name |
ReturnType | C++ return type (default: void) |
Parameters | Array of FCodeForgeParamDef (Name, Type, bIsConst, bIsRef) |
bBlueprintCallable | Generates BlueprintCallable |
bBlueprintPure | Generates BlueprintPure (implies Callable) |
bConst | Appends const qualifier |
bBlueprintNativeEvent | Generates BlueprintNativeEvent + _Implementation in source |
bExec | Generates Exec (console command) |
FunctionBody | Custom body (empty → // TODO) |
IncludePath | Adds #include for custom return types |
UFUNCTION(BlueprintPure)
float GetHealthPercent() const;
RPCs (Remote Procedure Calls)
Each FCodeForgeRPCDef generates a server, client, or multicast RPC:
| Field | Description |
|---|---|
Name | RPC function name |
Mode | Server, Client, or NetMulticast |
bReliable | Reliable vs Unreliable delivery |
Parameters | Array of FCodeForgeParamDef |
FunctionBody | Body for the _Implementation function |
WithValidation per UE5 convention. CodeForge automatically generates both _Implementation and _Validate (returning true) for Server RPCs.// Header
UFUNCTION(Server, Reliable, WithValidation)
void ServerRequestAttack();
// Source — _Implementation
void AMyCharacter::ServerRequestAttack_Implementation()
{
// TODO
}
// Source — _Validate
bool AMyCharacter::ServerRequestAttack_Validate()
{
return true;
}
Delegates
Each FCodeForgeDelegateDef generates a DECLARE_*_DELEGATE macro and a UPROPERTY(BlueprintAssignable) member:
| DelegateType | Generated Macro |
|---|---|
DynamicMulticast | DECLARE_DYNAMIC_MULTICAST_DELEGATE_*Params |
Dynamic | DECLARE_DYNAMIC_DELEGATE_*Params |
Multicast | DECLARE_MULTICAST_DELEGATE_*Params |
Simple | DECLARE_DELEGATE_*Params |
The parameter count suffix is computed automatically: _OneParam, _TwoParams, ..., up to _NineParams (UE5 maximum).
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnHealthChanged, float, NewHealth, float, MaxHealth);
UPROPERTY(BlueprintAssignable, Category = "Events")
FOnHealthChanged OnHealthChanged;
Replication
When bReplicated is true on the blueprint, CodeForge generates the full replication setup:
#include "Net/UnrealNetwork.h"bReplicates = true;in constructorGetLifetimeReplicatedProps()override withDOREPLIFETIME_CONDITIONfor each replicated propertyOnRep_PropertyName()functions for each RepNotify property
SetIsReplicatedByDefault(true);in constructor (instead of bReplicates)- Same
GetLifetimeReplicatedProps()andOnRep_pattern
Replication Conditions
Each replicated property can specify a condition via ECodeForgeRepCondition:
| Condition | COND_ Macro | Description |
|---|---|---|
None | COND_None | Always replicate |
InitialOnly | COND_InitialOnly | Only on initial replication |
OwnerOnly | COND_OwnerOnly | Only to owning client |
SkipOwner | COND_SkipOwner | All clients except owner |
SimulatedOnly | COND_SimulatedOnly | Only simulated proxies |
AutonomousOnly | COND_AutonomousOnly | Only autonomous proxy |
SimulatedOrPhysics | COND_SimulatedOrPhysics | Simulated or physics-simulating |
InitialOrOwner | COND_InitialOrOwner | Initial replication or to owner |
Custom | COND_Custom | Custom condition callback |
Never | COND_Never | Never replicate (skip) |
(Plus ReplayOrOwner, ReplayOnly, SimulatedOnlyNoReplay, SimulatedOrPhysicsNoReplay, SkipReplay, Dynamic)
9 Structs
Struct blueprints generate a USTRUCT(BlueprintType) with a GENERATED_BODY() macro and property members. Structs use the F prefix.
USTRUCT(BlueprintType)
struct MYMODULE_API FItemData
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite)
FString ItemName;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 StackCount = 1;
};
10 Enums
Enum blueprints generate a UENUM(BlueprintType) with uint8 backing type and typed entries.
| Entry Field | Description |
|---|---|
Name | Entry name (e.g., Common) |
DisplayName | Optional display name for Blueprint editors |
ExplicitValue | Optional integer value override |
bHasExplicitValue | Whether to emit the explicit value |
bHidden | Whether to hide from Blueprint dropdowns |
UENUM(BlueprintType)
enum class EItemRarity : uint8
{
Common,
Uncommon,
Rare,
Epic,
Legendary
};
11 Interfaces
Interface blueprints generate the standard UE5 dual-class interface pattern: a UINTERFACE stub class and an I-prefixed abstract class with BlueprintNativeEvent function declarations.
UINTERFACE(MinimalAPI, Blueprintable)
class UDamageable : public UInterface
{
GENERATED_BODY()
};
class MYMODULE_API IDamageable
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintNativeEvent)
void ReceiveDamage(float Amount);
UFUNCTION(BlueprintNativeEvent)
float GetCurrentHealth() const;
};
virtual ... = 0: Unlike plain C++ abstract classes, UE5 BlueprintNativeEvent interface functions must not be declared virtual or = 0. CodeForge handles this correctly.12 Asset Editor
Double-clicking a CodeForge Blueprint opens the CodeForge Asset Editor (FCodeForgeAssetEditor), a custom standalone editor with:
- Node Graph Panel (left): The visual node graph for designing your type.
- Code Preview Panel (right): Real-time display of the generated
.hand.cppcode. - Details Panel (bottom-right): Standard UE5 property editor for the selected node or blueprint.
- Toolbar: Buttons for Generate Code, Validate, and toggling the code preview.
Code Preview
The code preview panel updates in real time as you modify properties in the Details panel. It shows two tabs:
- Header (.h) — the generated header with all includes, macros, class declaration, and member declarations.
- Source (.cpp) — the generated source with constructor, replication, function implementations, RPC stubs, etc.
13 Node Visuals
CodeForge uses a custom SGraphNode_CodeForge widget with enhanced visual features:
- Color-coded title bars — each node type has a distinct color (configurable in Settings).
- Validation badges — error and warning indicators appear directly on nodes in real time.
- Body tinting — type nodes (Class/Struct/Enum/Interface) get a subtle color tint.
- Configurable font sizes — separate sizes for type nodes (default: 12) and member nodes (default: 10).
14 Plugin Settings
Access via Edit → Project Settings → Plugins → CodeForge (UCodeForgeSettings).
Code Generation
| Setting | Default | Description |
|---|---|---|
DefaultModuleTarget | (empty) | Default module for new blueprints |
DefaultSubDirectory | (empty) | Default sub-directory under Public/Private |
CustomTemplatePath | (empty) | Override template directory (leave empty for defaults) |
bAutoLiveCodingOnBehavioralChange | true | Auto-trigger Live Coding after behavioral changes |
Editor
| Setting | Default | Description |
|---|---|---|
bShowPreviewByDefault | true | Show code preview panel in new editors |
bShowToolbarButton | true | Show "Create CodeForge Blueprint" in level editor toolbar |
Appearance — Node Colors
| Setting | Default |
|---|---|
| ClassNodeColor | (0.12, 0.28, 0.85) |
| StructNodeColor | (0.10, 0.70, 0.25) |
| EnumNodeColor | (0.85, 0.65, 0.00) |
| InterfaceNodeColor | (0.00, 0.75, 0.85) |
| PropertyNodeColor | (0.25, 0.80, 0.35) |
| FunctionNodeColor | (0.90, 0.50, 0.00) |
| RPCNodeColor | (0.90, 0.15, 0.15) |
| DelegateNodeColor | (0.60, 0.25, 0.90) |
Appearance — Branding
| Setting | Default | Description |
|---|---|---|
BrandAccentColor | (0.00, 0.72, 0.88) | Top stripes, tab headers, highlights |
BrandSecondaryColor | (0.08, 0.14, 0.32) | Watermarks and subtle highlights |
NodeBodyBrightness | 0.055 | Node body darkness (0.01–0.2) |
bTintTypeNodeBodies | true | Color tint on type node bodies |
TypeNodeFontSize | 12 | Title font for type nodes (8–18) |
MemberNodeFontSize | 10 | Title font for member nodes (8–16) |
15 Template Engine
The FCodeForgeTemplateEngine is a dependency-free Handlebars-inspired string template processor. It supports four directives:
| Syntax | Name | Description |
|---|---|---|
{{VariableName}} | Variable Substitution | Replaced with the variable value from context |
{{#if Condition}}...{{/if}} | Conditional Block | Renders content only if condition is true |
{{#if !Condition}}...{{/if}} | Negated Conditional | Renders content only if condition is false |
{{#each ArrayName}}...{{/each}} | Loop | Repeats content for each item in the array |
{{> template_name}} | Include / Partial | Includes another template file by name |
Context Structure
struct FCodeForgeTemplateContext
{
TMap<FString, FString> Variables; // {{Key}} → Value
TMap<FString, bool> Conditions; // {{#if Key}}
TMap<FString, TArray<FCodeForgeTemplateArrayItem>> Arrays; // {{#each Key}}
};
Template Example
{{> copyright_header}}
#pragma once
#include "CoreMinimal.h"
#include "{{ParentInclude}}"
{{#each AdditionalIncludes}}
#include "{{IncludePath}}"
{{/each}}
#include "{{ClassName}}.generated.h"
UCLASS({{ClassSpecifiers}})
class {{ModuleAPI}} {{ClassPrefix}}{{ClassName}} : public {{ParentClassName}}
{
GENERATED_BODY()
{{#each Properties}}
UPROPERTY({{PropertySpecifiers}})
{{PropertyType}} {{PropertyName}}{{PropertyDefault}};
{{/each}}
};
Include Resolver
The template engine uses SetTemplateResolver() to resolve {{> name}} includes. CodeForge resolves templates from the Content/Templates/ directory hierarchy. The resolver supports a maximum recursion depth of 10 to prevent infinite loops.
16 Template Reference
All templates live in Plugins/CodeForge/Content/Templates/:
| Directory | File | Description |
|---|---|---|
| Class/ | actor_header.cft | Header for AActor-derived classes |
actor_source.cft | Source for AActor-derived classes | |
component_header.cft | Header for UActorComponent/USceneComponent | |
component_source.cft | Source for components | |
object_header.cft | Header for UObject-derived classes | |
object_source.cft | Source for UObject-derived classes | |
interface_header.cft | Header for UINTERFACE classes | |
interface_source.cft | Source stub for interfaces | |
| Struct/ | struct_header.cft | Header for USTRUCT types |
struct_source.cft | Source for structs | |
| Enum/ | enum_header.cft | Header for UENUM types |
| Common/ | copyright_header.cft | Copyright notice partial (included via {{> copyright_header}}) |
| Replication/ | replicated_props.cft | GetLifetimeReplicatedProps body |
rep_notify.cft | OnRep_ function stub |
CustomTemplatePath in Plugin Settings to override the built-in templates with your own. Great for project-specific coding conventions, comment styles, or additional boilerplate.17 Validation Rules
CodeForge validates blueprints in real time through UCodeForgeBlueprint::Validate(). Each rule produces either an Error (blocks generation) or a Warning (advisory, with optional auto-fix).
| Rule | Severity | Description | Auto-Fix |
|---|---|---|---|
| 1 | Error | Duplicate member names within the same class/struct | — |
| 2 | Error | Conflicting specifiers: BlueprintReadWrite + BlueprintReadOnly both set | — |
| 3 | Error | RPCs defined on a non-Actor-derived class | — |
| 4 | Error | Missing class name (ClassName is empty) | — |
| 5 | Error | Member name uses a reserved UE name (Class, Super, StaticClass) | — |
| 6 | Error | Member name uses a C++ keyword (delete, return, void, etc.) | — |
| 7 | Error | RPC has an empty name | — |
| 8 | Error | RepNotify set but Replicated is false | Yes |
| 9 | Warning | Bool property not prefixed with b (e.g., bIsAlive) | Yes |
| 10 | Warning | Class has zero members (no properties, functions, RPCs, or delegates) | — |
| 11 | Warning | Replicated property on a non-Actor-derived class | — |
| 12 | Error | Replication flags set on a struct property | Yes |
| 13 | Warning | Class/struct/enum name missing expected prefix (A/U/F/E) | Yes |
Additional checks include: type validation (empty types, miscapitalized types like Float → float, invalid C++ type names), parameter validation (empty parameter names, bad types), delegate parameter count limit (max 9), and enum entry validation (duplicate entries, empty names, minimum 1 entry).
18 Module Scanner
FCodeForgeModuleScanner automatically discovers all C++ modules in your project by scanning for .Build.cs files. For each module it determines:
- ModuleName — parsed from the
.Build.csfilename - APIMacro — derived as
MODULENAME_API(uppercase module name +_API) - SourceDir, PublicDir, PrivateDir — standard UE module directory layout
This powers the ModuleTarget dropdown in the blueprint editor, letting you pick any module in your project as the output target without manual configuration.
19 Auto-Fix System
Several validation rules offer automatic fixes via ApplyAutoFix(AutoFixId). When a validation result has a non-empty AutoFixId, the editor can apply the fix with one click.
| AutoFixId Pattern | Action |
|---|---|
FixClassPrefix:X | Prepend the correct prefix character to ClassName |
FixBoolPrefix:PropName | Rename property to bPropName (with capitalized first letter) |
EnableReplicated:PropName | Set bReplicated = true on the property |
RemoveReplicationFlags:PropName | Clear replication flags from struct property |
FixType:Field:CorrectedType | Replace a miscapitalized type (e.g., Float → float) |
20 Enums Reference
ECodeForgeBlueprintKind
Class | Struct | Enum | Interface |
ECodeForgeClassType
Actor | Pawn | Character | ActorComponent |
SceneComponent | Object | GameModeBase | GameStateBase |
PlayerController | PlayerState | HUD |
ECodeForgeRPCMode
Server | Client | NetMulticast |
ECodeForgeDelegateType
DynamicMulticast | Dynamic | Multicast | Simple |
ECodeForgeRepCondition
None | InitialOnly | OwnerOnly | SkipOwner |
SimulatedOnly | AutonomousOnly | SimulatedOrPhysics | InitialOrOwner |
Custom | ReplayOrOwner | ReplayOnly | SimulatedOnlyNoReplay |
SimulatedOrPhysicsNoReplay | SkipReplay | Dynamic | Never |
ECodeForgeValidationSeverity
Error | Warning |
21 Specifier Builder Reference
Each definition type has a BuildSpecifierString() method that generates the correct UE5 macro arguments. Here's how specifiers combine:
Property Specifier Priority
Edit specifiers are mutually exclusive (first true wins):
VisibleAnywhere > EditAnywhere > EditDefaultsOnly > EditInstanceOnly
Blueprint specifiers are mutually exclusive:
BlueprintReadWrite > BlueprintReadOnly
Replication: RepNotify takes priority over plain Replicated — generates ReplicatedUsing=OnRep_Name.
Function Specifier Priority
Exec > BlueprintPure > BlueprintCallable
BlueprintNativeEvent is additive (can combine with the above). Category is appended when non-empty.
Type Correction Map
The validator recognizes common miscapitalizations and suggests corrections:
| Input | Corrected | Input | Corrected |
|---|---|---|---|
Float | float | String | FString |
Bool | bool | Vector | FVector |
Int | int | fstring | FString |
Int32 | int32 | fvector | FVector |
Double | double | frotator | FRotator |
22 Troubleshooting
CodeForge automatically prepends the correct prefix. If you see this error on previously generated files, regenerate to pick up the ClassPrefix fix. Ensure ClassName in the blueprint doesn't already include the prefix (CodeForge detects this and avoids double-prefixing).
BlueprintNativeEvent functions in a UINTERFACE must not be declared virtual or = 0. CodeForge's interface template generates these correctly. If you have old generated files, regenerate them.
If UnrealEditor-Cmd.exe or the editor is holding DLLs, close the editor or kill the process before rebuilding. Live Coding can also update DLLs in-place if bAutoLiveCodingOnBehavioralChange is enabled.
Ensure your project has at least one C++ module with a .Build.cs file. CodeForge scans for these automatically via FCodeForgeModuleScanner. Check Project Settings → CodeForge → DefaultModuleTarget to set a fallback.
Verify that CustomTemplatePath in Plugin Settings points to a valid directory containing .cft files with the same names as the defaults (e.g., actor_header.cft). Missing templates fall back to the built-in versions.
CodeForge v0.1.0 · Unreal Engine 5.7 · Copyright © 2026 GregOrigin. All Rights Reserved.