
Unreal Engine Cpp Pro
- 1.1k installs
- 44k repo stars
- Updated July 27, 2026
- sickn33/antigravity-awesome-skills
unreal-engine-cpp-pro is a game-development skill that generates production-grade Unreal Engine C++ actor and component code following Epic best practices for developers shipping UE gameplay systems.
About
unreal-engine-cpp-pro is an antigravity-awesome-skills package that produces Unreal Engine C++ actors and components aligned with Epic conventions. Example patterns include DEFINE_LOG_CATEGORY_STATIC log categories, PrimaryActorTick disabled by default, CreateDefaultSubobject for UBoxComponent root setup, BeginPlay caching of UGameplayStatics::GetPlayerController references instead of per-tick lookups, and strict constructor initialization. Developers reach for unreal-engine-cpp-pro when scaffolding new AActor subclasses, UActorComponent modules, or refactoring tick-heavy prototypes into production-safe UE C++ that passes code review and performs predictably in packaged builds.
- Generates correct Unreal Engine C++ class prefixes (A, U, F, etc.)
- Enforces proper UPROPERTY, UCLASS, and UINTERFACE macros
- Implements BeginPlay/EndPlay patterns with cached references instead of Tick
- Includes forward declarations and static log categories to reduce compile times
- Produces ready-to-compile header and source files for actors and components
Unreal Engine Cpp Pro by the numbers
- 1,130 all-time installs (skills.sh)
- +48 installs in the week ending Jul 28, 2026 (Skillselion tracking)
- Ranked #360 of 1,896 Design & UI/UX skills by installs in the Skillselion catalog
- Security screen: LOW risk (skills.sh audit)
- Data as of Jul 28, 2026 (Skillselion catalog sync)
npx skills add https://github.com/sickn33/antigravity-awesome-skills --skill unreal-engine-cpp-proAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1.1k |
|---|---|
| repo stars | ★ 44k |
| Security audit | 3 / 3 scanners passed |
| Last updated | July 27, 2026 |
| Repository | sickn33/antigravity-awesome-skills ↗ |
How do you write production-grade Unreal Engine C++ actors?
Generate production-grade Unreal Engine C++ actor and component code that follows Epic's strict best practices.
Who is it for?
Unreal Engine C++ developers implementing actors and components who want Epic-aligned patterns out of the box.
Skip if: Blueprint-only UE projects or teams working in Unity, Godot, or non-C++ engine stacks.
When should I use this skill?
A task creates or refactors Unreal Engine C++ actors, components, or gameplay classes needing Epic best practices.
What you get
Epic-conformant .h/.cpp actor files, component hierarchies, and log-category definitions.
- Actor .h/.cpp files
- Component class implementations
Files
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
1. 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.
2. 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.
3. 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.
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.
#include "ExampleActor.h"
#include "Components/BoxComponent.h"
#include "Kismet/GameplayStatics.h"
// Define a static log category for this specific file/module
DEFINE_LOG_CATEGORY_STATIC(LogExampleActor, Log, All);
AExampleActor::AExampleActor()
{
// Default to strict settings
PrimaryActorTick.bCanEverTick = false;
PrimaryActorTick.bStartWithTickEnabled = false;
RootCollision = CreateDefaultSubobject<UBoxComponent>(TEXT("RootCollision"));
RootComponent = RootCollision;
bIsActive = true;
}
void AExampleActor::BeginPlay()
{
Super::BeginPlay();
// Cache references here, not in Tick
CachedPC = UGameplayStatics::GetPlayerController(this, 0);
if (bIsActive)
{
UE_LOG(LogExampleActor, Log, TEXT("ExampleActor %s started!"), *GetName());
}
}
void AExampleActor::EndPlay(const EEndPlayReason::Type EndPlayReason)
{
// Clean up any strict delegates or handles here
Super::EndPlay(EndPlayReason);
}
void AExampleActor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
// Ticking is disabled by default in constructor, so this won't run unless enabled explicitly.
}
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "ExampleActor.generated.h"
// Forward overrides to reduce compile times
class UBoxComponent;
/**
* AExampleActor
*
* Demonstrates:
* 1. Correct class prefix (A)
* 2. UPROPERTY usage
* 3. Soft references for assets
*/
UCLASS()
class MYGAME_API AExampleActor : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
AExampleActor();
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
// Called when the game ends
virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
/** Component exposed to Blueprint, but immutable logic in C++ */
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Components")
UBoxComponent* RootCollision;
/**
* Soft reference to an actor class to lazy load.
* Prevents hard reference chains.
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Config")
TSoftClassPtr<AActor> ActorTypeToSpawn;
/** Proper boolean naming convention 'b' */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "State")
uint8 bIsActive:1;
private:
/** Cached reference, not exposed to Blueprints */
UPROPERTY(Transient)
APlayerController* CachedPC;
};
Related skills
How it compares
Choose unreal-engine-cpp-pro over generic C++ snippets when output must follow Unreal Engine actor lifecycle and component conventions.
FAQ
What Unreal patterns does unreal-engine-cpp-pro enforce?
unreal-engine-cpp-pro enforces Epic-style actor constructors with disabled ticks, CreateDefaultSubobject component roots, BeginPlay reference caching, and DEFINE_LOG_CATEGORY_STATIC logging instead of per-tick lookups.
When should developers use unreal-engine-cpp-pro?
unreal-engine-cpp-pro fits tasks creating or refactoring Unreal Engine C++ actors and components where production-grade Epic conventions matter more than quick Blueprint prototypes.
Is Unreal Engine Cpp Pro safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.