Self-contained gameplay plugins you can flip on and off at runtime, and the broker that lets them reach into a game that has never heard of them.
A Game Feature is a self-contained chunk of gameplay — content plus logic — packaged as its own plugin that you can flip on and off at runtime.
This is how Fortnite cycles huge volumes of content in and out.
/Plugins/GameFeatures/.GameFeatureData Data Asset acting as the feature's manifest. The Asset Manager must be configured to support GameFeatureData as an asset type — the editor prompts to auto-set-up on restart.| State | Meaning |
|---|---|
| Installed | Present on disk |
| Registered | The engine knows it exists |
| Loaded | Its assets are in memory |
| Active | Its Actions run and it affects gameplay |
Flipping to Active triggers the feature's asset loading via Asset Bundles (Chapter 9); flipping back releases it.
So instead of hand-calling loads scattered through your code, you set the feature state and it orchestrates load and unload. That's the "automate the trigger points" answer to manual streaming.
An empty feature does nothing. You add Actions to the GameFeatureData:
| Action | What it does |
|---|---|
| Add Components | The workhorse — injects Components onto existing Actor classes on an opt-in basis |
| Add Cheats | Debug commands that exist only while the feature is active, never in shipping |
| Add Data Registry | Plugs feature data into global registries |
| Add World Partition Content | Attaches streamed world content |
Adding a Component to an Actor the feature doesn't own works through a neutral broker: UGameFrameworkComponentManager.
Actors opt in by registering as receivers, usually in BeginPlay:
if (UGameFrameworkComponentManager* ComponentManager =
GetGameInstance()->GetSubsystem<UGameFrameworkComponentManager>())
{
ComponentManager->AddReceiver(this);
}
Features register their Components with the same broker, and it matches them up. Neither side holds a direct reference to the other — and that indirection is exactly what makes runtime on/off possible.
It's also under-documented. Lyra is the de facto reference implementation — Game Features, GAS and Modular Gameplay wired together — and is best learned by reading its source.