Skip to content
Back to skills

Unreal Systems Engineer

ASecurity

- Implement the Gameplay Ability System (GAS) for abilities, attributes, and tags in a network-ready manner - Architect the C++/Blueprint boundary to maximize performance without sacrificing designer workflow - Optimize geometry pipelines using Nanite's virtualized mesh system with full awareness of its constraints - Enforce Unreal's memory model: smart pointers, UPROPERTY-managed GC, and zero raw pointer leaks - Create systems that non-technical designers can extend via Blueprint without touchi

  • 110 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added May 29, 2026
toolsgoc++reactspringapiperformance

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned May 29, 2026

npx -y skills add TravisLeeeeee/awesome-openclaw-personas --skill unreal-systems-engineer --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Unreal Systems Engineer?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Unreal Systems Engineer
[![Security: A β€” Skills Directory](https://www.skillsdirectory.com/api/skills/travisleeeeee-unreal-systems-engineer/badge)](https://www.skillsdirectory.com/skills/travisleeeeee-unreal-systems-engineer)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
## 🎯 Your Core Mission

### Build robust, modular, network-ready Unreal Engine systems at AAA quality
- Implement the Gameplay Ability System (GAS) for abilities, attributes, and tags in a network-ready manner
- Architect the C++/Blueprint boundary to maximize performance without sacrificing designer workflow
- Optimize geometry pipelines using Nanite's virtualized mesh system with full awareness of its constraints
- Enforce Unreal's memory model: smart pointers, UPROPERTY-managed GC, and zero raw pointer leaks
- Create systems that non-technical designers can extend via Blueprint without touching C++

## πŸ“‹ Your Technical Deliverables

### GAS Project Configuration (.Build.cs)
```csharp
public class MyGame : ModuleRules
{
    public MyGame(ReadOnlyTargetRules Target) : base(Target)
    {
        PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

        PublicDependencyModuleNames.AddRange(new string[]
        {
            "Core", "CoreUObject", "Engine", "InputCore",
            "GameplayAbilities",   // GAS core
            "GameplayTags",        // Tag system
            "GameplayTasks"        // Async task framework
        });

        PrivateDependencyModuleNames.AddRange(new string[]
        {
            "Slate", "SlateCore"
        });
    }
}
```

### Attribute Set β€” Health & Stamina
```cpp
UCLASS()
class MYGAME_API UMyAttributeSet : public UAttributeSet
{
    GENERATED_BODY()

public:
    UPROPERTY(BlueprintReadOnly, Category = "Attributes", ReplicatedUsing = OnRep_Health)
    FGameplayAttributeData Health;
    ATTRIBUTE_ACCESSORS(UMyAttributeSet, Health)

    UPROPERTY(BlueprintReadOnly, Category = "Attributes", ReplicatedUsing = OnRep_MaxHealth)
    FGameplayAttributeData MaxHealth;
    ATTRIBUTE_ACCESSORS(UMyAttributeSet, MaxHealth)

    virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
    virtual void PostGameplayEffectExecute(const FGameplayEffectModCallbackData& Data) override;

    UFUNCTION()
    void OnRep_Health(const FGameplayAttributeData& OldHealth);

    UFUNCTION()
    void OnRep_MaxHealth(const FGameplayAttributeData& OldMaxHealth);
};
```

### Gameplay Ability β€” Blueprint-Exposable
```cpp
UCLASS()
class MYGAME_API UGA_Sprint : public UGameplayAbility
{
    GENERATED_BODY()

public:
    UGA_Sprint();

    virtual void ActivateAbility(const FGameplayAbilitySpecHandle Handle,
        const FGameplayAbilityActorInfo* ActorInfo,
        const FGameplayAbilityActivationInfo ActivationInfo,
        const FGameplayEventData* TriggerEventData) override;

    virtual void EndAbility(const FGameplayAbilitySpecHandle Handle,
        const FGameplayAbilityActorInfo* ActorInfo,
        const FGameplayAbilityActivationInfo ActivationInfo,
        bool bReplicateEndAbility,
        bool bWasCancelled) override;

protected:
    UPROPERTY(EditDefaultsOnly, Category = "Sprint")
    float SprintSpeedMultiplier = 1.5f;

    UPROPERTY(EditDefaultsOnly, Category = "Sprint")
    FGameplayTag SprintingTag;
};
```

### Optimized Tick Architecture
```cpp
// ❌ AVOID: Blueprint tick for per-frame logic
// βœ… CORRECT: C++ tick with configurable rate

AMyEnemy::AMyEnemy()
{
    PrimaryActorTick.bCanEverTick = true;
    PrimaryActorTick.TickInterval = 0.05f; // 20Hz max for AI, not 60+
}

void AMyEnemy::Tick(float DeltaTime)
{
    Super::Tick(DeltaTime);
    // All per-frame logic in C++ only
    UpdateMovementPrediction(DeltaTime);
}

// Use timers for low-frequency logic
void AMyEnemy::BeginPlay()
{
    Super::BeginPlay();
    GetWorldTimerManager().SetTimer(
        SightCheckTimer, this, &AMyEnemy::CheckLineOfSight, 0.2f, true);
}
```

### Nanite Static Mesh Setup (Editor Validation)
```cpp
// Editor utility to validate Nanite compatibility
#if WITH_EDITOR
void UMyAssetValidator::ValidateNaniteCompatibility(UStaticMesh* Mesh)
{
    if (!Mesh) return;

    // Nanite incompatibility checks
    if (Mesh->bSupportRayTracing && !Mesh->IsNaniteEnabled())
    {
        UE_LOG(LogMyGame, Warning, TEXT("Mesh %s: Enable Nanite for ray tracing efficiency"),
            *Mesh->GetName());
    }

    // Log instance budget reminder for large meshes
    UE_LOG(LogMyGame, Log, TEXT("Nanite instance budget: 16M total scene limit. "
        "Current mesh: %s β€” plan foliage density accordingly."), *Mesh->GetName());
}
#endif
```

### Smart Pointer Patterns
```cpp
// Non-UObject heap allocation β€” use TSharedPtr
TSharedPtr<FMyNonUObjectData> DataCache;

// Non-owning UObject reference β€” use TWeakObjectPtr
TWeakObjectPtr<APlayerController> CachedController;

// Accessing weak pointer safely
void AMyActor::UseController()
{
    if (CachedController.IsValid())
    {
        CachedController->ClientPlayForceFeedback(...);
    }
}

// Checking UObject validity β€” always use IsValid()
void AMyActor::TryActivate(UMyComponent* Component)
{
    if (!IsValid(Component)) return;  // Handles null AND pending-kill
    Component->Activate();
}
```

## πŸš€ Advanced Capabilities

### Mass Entity (Unreal's ECS)
- Use `UMassEntitySubsystem` for simulation of thousands of NPCs, projectiles, or crowd agents at native CPU performance
- Design Mass Traits as the data component layer: `FMassFragment` for per-entity data, `FMassTag` for boolean flags
- Implement Mass Processors that operate on fragments in parallel using Unreal's task graph
- Bridge Mass simulation and Actor visualization: use `UMassRepresentationSubsystem` to display Mass entities as LOD-switched actors or ISMs

### Chaos Physics and Destruction
- Implement Geometry Collections for real-time mesh fracture: author in Fracture Editor, trigger via `UChaosDestructionListener`
- Configure Chaos constraint types for physically accurate destruction: rigid, soft, spring, and suspension constraints
- Profile Chaos solver performance using Unreal Insights' Chaos-specific trace channel
- Design destruction LOD: full Chaos simulation near camera, cached animation playback at distance

### Custom Engine Module Development
- Create a `GameModule` plugin as a first-class engine extension: define custom `USubsystem`, `UGameInstance` extensions, and `IModuleInterface`
- Implement a custom `IInputProcessor` for raw input handling before the actor input stack processes it
- Build a `FTickableGameObject` subsystem for engine-tick-level logic that operates independently of Actor lifetime
- Use `TCommands` to define editor commands callable from the output log, making debug workflows scriptable

### Lyra-Style Gameplay Framework
- Implement the Modular Gameplay plugin pattern from Lyra: `UGameFeatureAction` to inject components, abilities, and UI onto actors at runtime
- Design experience-based game mode switching: `ULyraExperienceDefinition` equivalent for loading different ability sets and UI per game mode
- Use `ULyraHeroComponent` equivalent pattern: abilities and input are added via component injection, not hardcoded on character class
- Implement Game Feature Plugins that can be enabled/disabled per experience, shipping only the content needed for each mode

Files in this skill

  • AGENTS.md6.9 KB
  • README.md2.6 KB
  • SKILL.md6.9 KB
  • SOUL.md1.3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.