unreal-engine-cpp-pro
sickn33/agentic-awesome-skills
Expert C++ development guide for Unreal Engine 5.x with UObject hygiene, performance patterns, and best practices.
What is unreal-engine-cpp-pro?
This skill provides expert-level guidelines for Unreal Engine 5 C++ development, focusing on robust, performant, and standard-compliant code. Use it when writing Actors, Components, UObject-derived classes, optimizing performance-critical code, or following Epic Games' coding standards and the reflection system.
- Enforce UObject garbage collection best practices with UPROPERTY() and IsValid() checks
- Guide Unreal reflection system usage (UCLASS, USTRUCT, UENUM, UFUNCTION) and Blueprint exposure
- Optimize performance by disabling unnecessary ticking, caching casts, and using appropriate data structures
- Provide strict Epic Games naming conventions (U, A, F, E, I, T, S, b prefixes)
- Demonstrate robust component lookup, interface implementation, and async asset loading patterns
- Supply debugging techniques including UE_LOG categories, screen messages, and Visual Logger integration
How to install unreal-engine-cpp-pro
npx skills add https://github.com/sickn33/agentic-awesome-skills --skill unreal-engine-cpp-pro- Unreal Engine 5.x installed and configured
- C++ development environment set up for Unreal projects
- Basic understanding of UObject, Actors, and Components
How to use unreal-engine-cpp-pro
- 1.Review the core principles section to understand UObject garbage collection, reflection system usage, and performance-first mindset
- 2.Apply Epic Games' naming conventions to all new classes, structs, and variables in your codebase
- 3.Use the provided code patterns (component lookup, interface implementation, soft references) as templates for your implementation
- 4.Run through the PR checklist before submitting code: verify ticking necessity, UPROPERTY wrapping, soft reference usage, and delegate cleanup
- 5.Use the debugging techniques (UE_LOG categories, screen messages, Visual Logger) to validate behavior during development
Use cases
- Developing C++ code for Unreal Engine 5.x projects with proper memory management
- Writing performance-critical gameplay systems while avoiding hot-loop casting and unnecessary ticks
- Implementing Blueprint-exposed functionality with correct reflection macros and naming conventions
- Debugging memory leaks and garbage collection issues in complex Actor hierarchies
- Refactoring hard asset references to soft references to optimize load chains
- C++ game developers working with Unreal Engine 5.x
- Gameplay programmers optimizing performance-critical systems
- Engine programmers implementing Blueprint-exposed functionality
- Developers debugging memory and garbage collection issues
- Teams following Epic Games' coding standards and conventions
unreal-engine-cpp-pro FAQ
Always use UPROPERTY() for UObject* member variables to ensure they are tracked by the Garbage Collector. Use TStrongObjectPtr<> only if you need to keep a root reference outside of a UObject graph, but prefer addToRoot() generally.
No. Disable ticking (bCanEverTick = false) by default and only enable it if absolutely necessary. Prefer timers (GetWorldTimerManager()) or event-driven logic instead.
Cache references in BeginPlay or PostInitializeComponents instead of calling Cast<T>() repeatedly in Tick. Do component lookups once during initialization, not every frame.
Hard references (TSubclassOf) force assets to load immediately and can create load chains. Soft references (TSoftClassPtr, TSoftObjectPtr) defer loading until needed, improving startup performance.
Use IsValid() instead of nullptr checks, as IsValid() safely handles pending kill state. This is especially important for objects pending destruction.
Full instructions (SKILL.md)
Source of truth, from sickn33/agentic-awesome-skills.
name: unreal-engine-cpp-pro description: "Expert guide for Unreal Engine 5.x C++ development, covering UObject hygiene, performance patterns, and best practices." risk: safe source: self date_added: "2026-02-27"
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.
Related skills
More from sickn33/agentic-awesome-skills and the wider catalog.

vercel-deployment
Deploy Next.js applications to Vercel with expert guidance and best practices.

vulnerability-scanner
Advanced vulnerability analysis: OWASP 2025, supply chain security, attack surface mapping, and risk prioritization.

web-performance-optimization
Optimize website performance: Core Web Vitals, bundle size, caching, and runtime speed.

workflow-automation
Durable execution infrastructure for reliable AI agent workflows with automatic recovery from failures.

youtube-summarizer
Extract and summarize YouTube video transcripts with detailed analysis frameworks.

ab-test-setup
Structured guide for setting up A/B tests with mandatory gates for hypothesis, metrics, and execution readiness.