GregOriginCodeForge generated samples

RPG Starter Kit generated code samples

A reproducible code bundle showing the input schema, the generated Unreal C++ output, and the build/test proof used to validate CodeForge.

Input schema

6 CodeForge assets

Enum, struct, interface, replicated character, inventory component, and game mode are captured in a JSON schema manifest.

Generated C++

9 files

Headers and source files are copied exactly from the generated RPG Starter Kit output and hashed in the manifest.

Proof

Build and tests

Automation passed 97/97 tests with 0 failures and 0 warnings. Report timestamp: 2026.04.14-10.59.43. UnrealBuildTool build log is captured and reports success.

Input schema preview

Schema drives generated Unreal types

The full schema is included as JSON so buyers can inspect the requested types, functions, delegates, interfaces, replication, and RPCs before reading the generated C++.

Open full schema JSON
{
  "sample": "CodeForge RPG Starter Kit",
  "blueprints": [
    { "kind": "Interface", "className": "Damageable", "functions": ["ReceiveDamage", "GetCurrentHealth", "GetIsAlive"] },
    { "kind": "Class", "className": "ARPGCharacter", "interfaces": ["Damageable"], "delegates": ["OnHealthChanged", "OnLevelUp", "OnDeath"], "rpcs": ["ServerRequestAttack", "ClientReceiveDamage", "NetMulticastPlayHitEffect"] },
    { "kind": "Class", "className": "URPGInventoryComponent", "delegates": ["OnInventoryChanged", "OnItemAdded"] }
  ]
}

Generated C++

Interface schema to UInterface

Shows CodeForge converting the input interface contract into Unreal's UInterface/IInterface pair.

Open full Damageable.h

UINTERFACE(MinimalAPI, Blueprintable)
class UDamageable : public UInterface
{
...

class CODEFORGE_API IDamageable
{
...
public:
	UFUNCTION(BlueprintNativeEvent, Category = "RPG")
	void ReceiveDamage(float Amount);

	UFUNCTION(BlueprintNativeEvent, Category = "RPG")
	float GetCurrentHealth() const;

	UFUNCTION(BlueprintNativeEvent, Category = "RPG")
	bool GetIsAlive() const;

Generated C++

Delegates and class interface implementation

Shows delegate macros, BlueprintAssignable fields, and IDamageable inheritance in the generated class header.

Open full ARPGCharacter.h

DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnHealthChanged, float, NewHealth, float, MaxHealth);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnLevelUp, int32, NewLevel);
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnDeath);

UCLASS()
class CODEFORGE_API ARPGCharacter : public ACharacter, public IDamageable
{
...

	UPROPERTY(BlueprintAssignable, Category = "RPG")
	FOnHealthChanged OnHealthChanged;

	UPROPERTY(BlueprintAssignable, Category = "RPG")
	FOnLevelUp OnLevelUp;

	UPROPERTY(BlueprintAssignable, Category = "RPG")
	FOnDeath OnDeath;
...

	// IDamageable implementation
	virtual void ReceiveDamage_Implementation(float Amount) override;
...
	UFUNCTION(Server, Reliable)
	void ServerRequestAttack();

...

	virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
};

Generated C++

RPC and replication implementation

Shows generated native event logic, RPC implementation, and DOREPLIFETIME proof points.

Open full ARPGCharacter.cpp
	return Health > 0.f;
}

void ARPGCharacter::ReceiveDamage_Implementation(float Amount)
{
	if (!IsAlive()) return;
	Health = FMath::Clamp(Health - Amount, 0.f, MaxHealth);
...
	UE_LOG(LogTemp, Warning, TEXT("God Mode Activated. Health: %.1f, Attack: %.1f"), Health, AttackPower);
}

void ARPGCharacter::ServerRequestAttack_Implementation()
{
	FHitResult Hit;
	FVector Start = GetActorLocation();
...
	}
}

void ARPGCharacter::ClientReceiveDamage_Implementation(float Amount)
{
	UE_LOG(LogTemp, Log, TEXT("%s received %.1f damage (client feedback)"), *GetName(), Amount);
}
...
	UE_LOG(LogTemp, Log, TEXT("%s: hit effect played"), *GetName());
}

void ARPGCharacter::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
{
	Super::GetLifetimeReplicatedProps(OutLifetimeProps);
	DOREPLIFETIME(ARPGCharacter, Health);
}

Generated C++

Inventory component with gameplay methods

Shows component constructor setup and generated inventory method bodies.

Open full URPGInventoryComponent.cpp
// Copyright (c) 2026 GregOrigin. All Rights Reserved.
#include "URPGInventoryComponent.h"

URPGInventoryComponent::URPGInventoryComponent()
{
	PrimaryComponentTick.bCanEverTick = false;
	MaxSlots = 20;
...
	CurrentWeight = 0.0f;
}

bool URPGInventoryComponent::AddItem(const FRPGItemData& Item)
{
	if (Items.Num() >= MaxSlots) return false;
	float NewWeight = CurrentWeight + Item.ItemWeight * Item.StackCount;
...
	return true;
}

bool URPGInventoryComponent::RemoveItem(int32 SlotIndex)
{
	if (!Items.IsValidIndex(SlotIndex)) return false;
	CurrentWeight -= Items[SlotIndex].ItemWeight * Items[SlotIndex].StackCount;
...
	return true;
}

int32 URPGInventoryComponent::GetItemCount() const
{
	return Items.Num();
}

Build proof

UBT build succeeded

UnrealBuildTool build log is captured and reports success.

Open build log

Automation proof

Automation passed

Automation passed 97/97 tests with 0 failures and 0 warnings. Report timestamp: 2026.04.14-10.59.43.

Open automation JSON
Generated fileBytesSHA-256 prefix
EItemRarity.h 435 af3914f69d1954dd...
FRPGItemData.h 891 f6fc3451627d5bbe...
Damageable.h 598 bd8af2f38b76df33...
ARPGCharacter.h 2515 fceb5e047328c6dc...
ARPGCharacter.cpp 4204 bc38a0505d2886d6...
URPGInventoryComponent.h 1315 763294cfbd82be56...
URPGInventoryComponent.cpp 1018 10e8e3bf8b4307c5...
ARPGGameMode.h 1054 e3b65440f44035bd...
ARPGGameMode.cpp 976 51a2da2c96fae162...

Reproduce this bundle

From example schema to proof-backed samples

  1. Create or refresh the RPG Starter Kit examples from the CodeForge editor toolbar.
  2. Generate the C++ output into Source/CodeForge and build CodeForgeEditor Win64 Development with UnrealBuildTool.
  3. Run Automation RunTests CodeForge and export the Unreal Automation report.
  4. Run powershell -ExecutionPolicy Bypass -File Tools/New-CodeForgeGeneratedSamples.ps1 -BuildLogPath <path-to-ubt-build-log> -AutomationReportDir <automation-report-dir>.