unreal-engine-cpp-pro
A guide for writing robust, performant C++ code within Unreal Engine 5.
Install
mkdir -p .claude/skills/unreal-engine-cpp-pro && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/1072" && unzip -o skill.zip -d .claude/skills/unreal-engine-cpp-pro && rm skill.zipInstalls to .claude/skills/unreal-engine-cpp-pro
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Expert guide for Unreal Engine 5.x C++ development, covering UObject hygiene, performance patterns, and best practices.Key capabilities
- →Develop C++ code for Unreal Engine 5.x projects
- →Manage UObject garbage collection with UPROPERTY()
- →Expose C++ types to Unreal's reflection system (UCLASS, USTRUCT, UFUNCTION)
- →Optimize performance-critical code by disabling Tick or caching references
- →Implement Blueprint-exposed functionality
- →Manage asset loading using soft references
How it works
The skill applies core principles of UObject management, Unreal's reflection system, and performance optimization, adhering to Epic Games' coding standards for C++ development.
Inputs & outputs
When to use unreal-engine-cpp-pro
- →Debug memory leaks in a UObject-heavy system
- →Implement a new Actor component using C++
- →Optimize a frequently called Tick function
- →Expose C++ logic to Blueprints
About this skill
Unreal Engine C++ Pro
This skill provides expert-level guidelines for developing with Unreal Engine 5 using C++. It focuses on writing robust, performant, and standard-compliant code.
When to Use
Use this skill when:
- Developing C++ code for Unreal Engine 5.x projects
- Writing Actors, Components, or UObject-derived classes
- Optimizing performance-critical code in Unreal Engine
- Debugging memory leaks or garbage collection issues
- Implementing Blueprint-exposed functionality
- Following Epic Games' coding standards and conventions
- Working with Unreal's reflection system (UCLASS, USTRUCT, UFUNCTION)
- Managing asset loading and soft references
Do not use this skill when:
- Working with Blueprint-only projects (no C++ code)
- Developing for Unreal Engine versions prior to 5.x
- Working on non-Unreal game engines
- The task is unrelated to Unreal Engine development
Core Principles
-
UObject & Garbage Collection:
- Always use
UPROPERTY()forUObject*member variables to ensure they are tracked by the Garbage Collector (GC). - Use
TStrongObjectPtr<>if you need to keep a root reference outside of a UObject graph, but preferaddToRoot()generally. - Understand the
IsValid()check vsnullptr.IsValid()handles pending kill state safely.
- Always use
-
Unreal Reflection System:
- Use
UCLASS(),USTRUCT(),UENUM(),UFUNCTION()to expose types to the reflection system and Blueprints. - Minimize
BlueprintReadWritewhen possible; preferBlueprintReadOnlyfor state that shouldn't be trampled by logic in UI/Level BPs.
- Use
-
Performance First:
- Tick: Disable Ticking (
bCanEverTick = false) by default. Only enable it if absolutely necessary. Prefer timers (GetWorldTimerManager()) or event-driven logic. - Casting: Avoid
Cast<T>()in hot loops. Cache references inBeginPlay. - Structs vs Classes: Use
Fstructs for data-heavy, non-UObject types to reduce overhead.
- Tick: Disable Ticking (
Naming Conventions (Strict)
Follow Epic Games' coding standard:
- Templates: Prefix with
T(e.g.,TArray,TMap). - UObject: Prefix with
U(e.g.,UCharacterMovementComponent). - AActor: Prefix with
A(e.g.,AMyGameMode). - SWidget: Prefix with
S(Slate widgets). - Structs: Prefix with
F(e.g.,FVector). - Enums: Prefix with
E(e.g.,EWeaponState). - Interfaces: Prefix with
I(e.g.,IInteractable). - Booleans: Prefix with
b(e.g.,bIsDead).
Common Patterns
1. Robust Component Lookup
Avoid GetComponentByClass in Tick. Do it in PostInitializeComponents or BeginPlay.
void AMyCharacter::PostInitializeComponents() {
Super::PostInitializeComponents();
HealthComp = FindComponentByClass<UHealthComponent>();
check(HealthComp); // Fail hard in dev if missing
}
2. Interface Implementation
Use interfaces to decouple systems (e.g., Interaction system).
// Interface call check
if (TargetActor->Implements<UInteractable>()) {
IInteractable::Execute_OnInteract(TargetActor, this);
}
3. Async Loading (Soft References)
Avoid hard references (UPROPERTY(EditDefaultsOnly) TSubclassOf<AActor>) for massive assets which force load orders. Use TSoftClassPtr or TSoftObjectPtr.
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TSoftClassPtr<AWeapon> WeaponClassToLoad;
void AMyCharacter::Equip() {
if (WeaponClassToLoad.IsPending()) {
WeaponClassToLoad.LoadSynchronous(); // Or use StreamableManager for async
}
}
Debugging
- Logging: Use
UE_LOGwith custom categories.DEFINE_LOG_CATEGORY_STATIC(LogMyGame, Log, All); UE_LOG(LogMyGame, Warning, TEXT("Health is low: %f"), CurrentHealth); - Screen Messages:
if (GEngine) GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Died!")); - Visual Logger: extremely useful for AI debugging. Implement
IVisualLoggerDebugSnapshotInterface.
Checklist before PR
- Does this Actor need to Tick? Can it be a Timer?
- Are all
UObject*members wrapped inUPROPERTY? - Are hard references (TSubclassOf) causing load chains? Can they be Soft Ptrs?
- Did you clean up verified delegates in
EndPlay?
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
When not to use it
- →Working with Blueprint-only projects
- →Developing for Unreal Engine versions prior to 5.x
- →Working on non-Unreal game engines
How it compares
This skill provides expert-level guidelines for Unreal Engine 5.x C++ development, focusing on UObject hygiene, performance patterns, and strict naming conventions, which differs from general C++ programming.
Compared to similar skills
unreal-engine-cpp-pro side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| unreal-engine-cpp-pro (this skill) | 43 | 4mo | No flags | Advanced |
| llvm-tooling | 1 | 6mo | Review | Advanced |
| cpp-pro | 0 | 5mo | No flags | Advanced |
| add-uint-support | 18 | 9mo | No flags | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by sickn33
View all by sickn33 →You might also like
llvm-tooling
gmh5225
Expertise in LLVM tooling development including Clang plugins, LLDB debugger extensions, Clangd/LSP, and LibTooling. Use this skill when building source code analysis tools, refactoring tools, debugger extensions, or IDE integrations.
cpp-pro
sleepyvani
Writes, optimizes, and debugs C++ applications using modern C++20/23 features, template metaprogramming, and high-performance systems techniques. Use when building or refactoring C++ code requiring concepts, ranges, coroutines, SIMD optimization, or careful memory management — or when addressing per
add-uint-support
pytorch
Add unsigned integer (uint) type support to PyTorch operators by updating AT_DISPATCH macros. Use when adding support for uint16, uint32, uint64 types to operators, kernels, or when user mentions enabling unsigned types, barebones unsigned types, or uint support.
at-dispatch-v2
pytorch
Convert PyTorch AT_DISPATCH macros to AT_DISPATCH_V2 format in ATen C++ code. Use when porting AT_DISPATCH_ALL_TYPES_AND*, AT_DISPATCH_FLOATING_TYPES*, or other dispatch macros to the new v2 API. For ATen kernel files, CUDA kernels, and native operator implementations.
cpp-pro
sickn33
Write idiomatic C++ code with modern features, RAII, smart pointers, and STL algorithms. Handles templates, move semantics, and performance optimization. Use PROACTIVELY for C++ refactoring, memory safety, or complex C++ patterns.
defi-protocol-templates
wshobson
Implement DeFi protocols with production-ready templates for staking, AMMs, governance, and lending systems. Use when building decentralized finance applications or smart contract protocols.