ue-actor-component-arc…
Use this skill when working with Actor and component design in Unreal Engine. Triggers on:…
Use this skill when working with Game Feature plugins, modular gameplay, GameFeatureAction, GameFeatureData, GameFrameworkComponentManager, init state system, experience system, modular components, UPawnComponent, UControllerComponent, UGameStateComponent, UPlayerStateComponent,
$ npx -y skills add quodsoler/unreal-engine-skills --skill ue-game-features --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/ue-game-featuresContext preview
The summary Claude sees to decide when to auto-load this skill.
Use this skill when working with Game Feature plugins, modular gameplay, GameFeatureAction, GameFeatureData, GameFrameworkComponentManager, init state system, experience system, modular components, UPawnComponent, UControllerComponent, UGameStateComponent, UPlayerStateComponent,
name: ue-game-features description: "Use this skill when working with Game Feature plugins, modular gameplay, GameFeatureAction, GameFeatureData, GameFrameworkComponentManager, init state system, experience system, modular components, UPawnComponent, UControllerComponent, UGameStateComponent, UPlayerStateComponent, or Lyra-style modular architecture. See references/ for code templates and experience system patterns." metadata: version: 1.0.0
You are an expert in Unreal Engine's Game Features plugin system and modular gameplay architecture.
Read `.agents/ue-project-context.md` before proceeding. Determine:
Ask the developer: 1. Are you creating a new Game Feature plugin or extending an existing one? 2. What components or abilities should the feature inject into gameplay actors? 3. Does the feature need async loading or runtime activation/deactivation? 4. Is there an experience/game mode composition system (Lyra-style)? 5. Do components need ordered initialization across features?
---
A Game Feature plugin is a standard UE plugin with `Type` set to `"GameFeature"` in its `.uplugin` descriptor. This tells the engine to manage its lifecycle through the Game Features subsystem rather than loading it as a regular plugin.
{
"Type": "GameFeature",
"BuiltInInitialFeatureState": "Active", // or "Registered", "Installed"
"Plugins": [
{ "Name": "GameFeatures", "Enabled": true },
{ "Name": "ModularGameplay", "Enabled": true }
]
}`BuiltInInitialFeatureState` controls how far the plugin advances on startup. Use `"Active"` for always-on features, `"Registered"` for features activated by gameplay code, or `"Installed"` for downloadable content loaded on demand.
Each Game Feature plugin contains a `UGameFeatureData` primary data asset (extends `UPrimaryDataAsset`) that defines what the feature does:
// From GameFeatureData.h UPROPERTY(EditDefaultsOnly, Instanced, Category = "Game Feature | Actions") TArray<TObjectPtr<UGameFeatureAction>> Actions; UPROPERTY(EditAnywhere, Category = "Game Feature | Asset Manager") TArray<FPrimaryAssetTypeInfo> PrimaryAssetTypesToScan;
`Actions` is the core — an instanced array of `UGameFeatureAction` subclasses that execute when the feature activates.
Plugins/GameFeatures/
├── ShooterCore/
│ ├── ShooterCore.uplugin (Type: GameFeature)
│ ├── Content/
│ │ └── ShooterCore.uasset (UGameFeatureData)
│ └── Source/ShooterCoreRuntime/
└── DeathmatchRules/
├── DeathmatchRules.uplugin
└── Content/DeathmatchRules.uasset---
Game Feature plugins transition through a well-defined state machine. Actions fire at specific transitions and runtime activation must target valid destination states.
Uninitialized → Terminal → UnknownStatus → StatusKnown
→ Installed → Registered → Loaded → ActiveEach major state has transition states between them (e.g., `Registering`, `Loading`, `Activating`). You target a destination state and the subsystem walks the chain.
| State | Description | |-------|-------------| | `Terminal` | Plugin removed from tracking entirely | | `StatusKnown` | Availability confirmed (exists on disk or bundle) | | `Installed` | Files on local storage, not yet registered | | `Registered` | Assets registered with Asset Manager, actions notified | | `Loaded` | Assets loaded into memory | | `Active` | Actions fully activated, components injected |
URL protocols: `file:` for built-in disk plugins, `installbundle:` for downloadable features. Convert descriptor path to URL with `UGameFeaturesSubsystem::GetPluginURL_FileProtocol(Path)`.
---
`UGameFeatureAction` (`UCLASS(MinimalAPI, DefaultToInstanced, EditInlineNew, Abstract)`) is the base class for all actions. `DefaultToInstanced` + `EditInlineNew` allow instances to be created inline within `UGameFeatureData`'s `Actions` array.
// Registration phase virtual void OnGameFeatureRegistering(); virtual void OnGameFeatureUnregistering(); // Loading phase virtual void OnGameFeatureLoading(); virtual void OnGameFeatureUnloading(); // Activation — primary override point virtual void OnGameFeatureActivating(FGameFeatureActivatingContext& Context); virtual void OnGameFeatureActivating(); // legacy no-arg fallback // Post-activation confirmation virtual void OnGameFeatureActivated(); // Deactivation — supports async via context virtual void OnGameFeatureDeactivating(FGameFeatureDeactivatingContext& Context);
`OnGameFeatureActivating(Context)` is the primary override. The base calls the legacy no-arg version for backward compatibility.
When deactivation requires async work, pause it via the context:
void UMyAction::OnGameFeatureDeactivating(FGameFeatureDeactivatingContext& Context)
{
FSimpleDelegate ResumeDelegate = Context.PauseDeactivationUntilComplete(
TEXT("MyAction_AsyncCleanup"));
// Start async work — MUST invoke ResumeDelegate when done or deactivation hangs
AsyncTask(ENamedThreads::GameThread, [ResumeDelegate]()
{
// ... cleanup ...
ResumeDelegate.ExecuteIfBound();
});
}See `references/game-feature-patterns.md` for complete custom action subclass templates.
---
`UCLASS(MinimalAPI, meta=(DisplayName="Add Components"), final)`. The most commonl
A collection of 27 AI agent skills for Unreal Engine C++ development. Built for game developers who want AI coding agents to help write correct, production-quality UE5 C++ code.
Use this skill when working with Actor and component design in Unreal Engine. Triggers on:…
Use this skill when implementing AI, AIController, behavior tree, blackboard, AI perception,…
Use this skill when working with Unreal Engine animation: AnimInstance, montage playback,…
Use this skill when working with Unreal Engine async operations, threading, parallel…
Use this skill when working with audio, sound, music, UAudioComponent, PlaySoundAtLocation,…
Use this skill when working with character movement, CharacterMovementComponent, CMC,…