ue-subsystems

Implement engine-managed singleton services using Unreal Engine's Subsystem framework in C++.

55|5|Updated Mar 26, 2026
One-click install
npx skills add https://github.com/kevinpbuckley/unreal-engine-skills --skill ue-subsystems-kevinpbuckley
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: ue-subsystems
Source: https://github.com/kevinpbuckley/unreal-engine-skills/tree/main/skills/core/ue-subsystems
Command: npx skills add https://github.com/kevinpbuckley/unreal-engine-skills --skill ue-subsystems-kevinpbuckley

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Choosing the right lifetime and ownership for a service or manager class in Unreal Engine is error-prone: hand-rolled singletons leak, manager actors get deleted, and GameInstance overrides conflict with plugins. This Skill provides the correct patterns for Unreal's Subsystem framework so services are created, initialized, and destroyed automatically by the engine. ## Core Features & Use Cases - Five subsystem types by lifetime: UEngineSubsystem (process), UGameInstanceSubsystem (session, survives level loads), UWorldSubsystem (per level), UTickableWorldSubsystem (per level with Tick), and ULocalPlayerSubsystem (per split-screen player). - Lifecycle and dependency management: Initialize/Deinitialize hooks, ShouldCreateSubsystem for conditional creation, and InitializeDependency for ordered initialization within a collection. - Decision guidance: Tables and deep-dive references for choosing between a subsystem, manager actor, GameInstance override, component, or replicated state on GameState/PlayerState. - Use Case: Building a save system that must persist across level loads — implement it as a UGameInstanceSubsystem with BlueprintCallable functions, access it via GetSubsystem<T>(), and skip creation on dedicated servers via ShouldCreateSubsystem. ## Quick Start Ask the agent to create a UGameInstanceSubsystem-based save system in Unreal C++ with proper Initialize, Deinitialize, and Blueprint exposure.

Frequently Asked Questions about ue-subsystems

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create a subsystem in Unreal Engine C++?

Derive a UCLASS from the subsystem base matching your desired lifetime, such as UGameInstanceSubsystem, and override Initialize and Deinitialize. The engine creates the instance automatically when the owning object is created; no manual instancing is needed.

What is the difference between UGameInstanceSubsystem and UWorldSubsystem?

UGameInstanceSubsystem persists across level loads for the whole game session, while UWorldSubsystem is recreated for every UWorld and reset on level changes or seamless travel. Choose based on whether your data should survive level transitions.

Can Unreal subsystems replicate state over the network?

No, subsystems are local-only and do not replicate. Keep authoritative networked state on AGameState, APlayerState, or replicated actors, and use subsystems for local coordination, caching, and UI logic driven by RPCs on actors.

Why does GetWorld return null in my GameInstanceSubsystem Initialize?

The world is not yet assigned to the game instance during Initialize, so GetWorld returns null at that point. Defer world-dependent work to a UWorldSubsystem, OnWorldBeginPlay, or a timer instead.

How do I make a subsystem tick every frame in Unreal?

Inherit from UTickableWorldSubsystem instead of UWorldSubsystem and override Tick plus the pure virtual GetStatId using RETURN_QUICK_DECLARE_CYCLE_STAT. You must call Super::Initialize and Super::Deinitialize so ticking starts and stops correctly.

When should I use a manager actor instead of a subsystem?

Use a manager actor when designers need to configure the object per level in the editor, when it must participate in actor replication, or when it represents a placed world object. Prefer subsystems for invisible infrastructure that must always exist.