Skip to content
k-mods.com

Base-Game Unlock Classes

Every base-game FGUnlock class, with paths, exact field types, accepted values, nested structs, examples, and caveats.

Type: schematic → Instanced unlocks and Type: unlock both work with any concrete FGUnlock subclass. The mechanism is fully generic (resolve class:, NewObject it onto the schematic’s CDO, apply properties:, append to mUnlocks). Only a couple of unlock types show up in most examples (FGUnlockRecipe, FGUnlockInventorySlot); this page catalogs every one the base game ships, so you don’t have to go spelunking through engine headers to find them. For the unlock classes installed mods add on top, see Mod Unlock Classes.

ℹ️ Native /Script/FactoryGame.FGUnlock… paths with shipped Blueprint variants are accepted. KDataForge remaps them to concrete generated classes; exact Blueprint paths remain accepted. Linter reports native mapped form as warning class.native-remapped, never error. Abstract classes with no Blueprint variant cannot be instanced. Every property name below comes from FactoryGame reflection data.

Unreal Asset Registry scan found 26 native classes and 22 shipped Blueprint variants in FGUnlock hierarchy. Native paths in mapped rows resolve to same Blueprint automatically.

Native classAbstractBlueprint variant / use this pathConfigurable fields and accepted types
FGUnlockyesbase only; never instance
FGUnlockArmEquipmentSlotyes/Game/FactoryGame/Unlocks/BP_UnlockArmEquipmentSlot.BP_UnlockArmEquipmentSlot_CmNumArmEquipmentSlotsToUnlock: int32
FGUnlockBlueprintsyes/Game/FactoryGame/Unlocks/BP_UnlockBlueprints.BP_UnlockBlueprints_Cinherited mRecipes: TArray<TSubclassOf<UFGRecipe>>
FGUnlockBuildEfficiencyyes/Game/FactoryGame/Unlocks/BP_UnlockBuildEfficiency.BP_UnlockBuildEfficiency_C
FGUnlockBuildOverclockyes/Game/FactoryGame/Unlocks/BP_UnlockBuildOverclock.BP_UnlockBuildOverclock_C
FGUnlockBuildProductionBoostyes/Game/FactoryGame/Unlocks/BP_UnlockBuildProductionBoost.BP_UnlockBuildProductionBoost_C
FGUnlockCentralStorageItemLimityes/Game/FactoryGame/Unlocks/BP_UnlockCentralStorageItemLimit.BP_UnlockCentralStorageItemLimit_CmItemStackLimitIncrease: int32
FGUnlockCentralStorageUploadSlotsyes/Game/FactoryGame/Unlocks/BP_UnlockCentralStorageUploadSlots.BP_UnlockCentralStorageUploadSlots_CmNumSlotsToUnlock: int32
FGUnlockCentralStorageUploadSpeedyes/Game/FactoryGame/Unlocks/BP_UnlockCentralStorageUploadSpeed.BP_UnlockCentralStorageUploadSpeed_CmUploadSpeedPercentageDecrease: float (Percent)
FGUnlockCheckmarkyes/Game/FactoryGame/Unlocks/BP_UnlockCheckmark.BP_UnlockCheckmark_Cinherited mUnlockName: FText
mUnlockDescription: FText
mUnlockIconBig: TObjectPtr<UTexture2D>
mUnlockIconSmall: TObjectPtr<UTexture2D>
mUnlockIconCategory: TObjectPtr<UTexture2D>
FGUnlockCircuitDaisyChainingno/Game/FactoryGame/Unlocks/BP_UnlockCircuitDaisyChaining.BP_UnlockCircuitDaisyChaining_C
FGUnlockCustomizationno/Script/FactoryGame.FGUnlockCustomizationmCustomizationUnlocks: TArray<TSubclassOf<UFGPlayerCustomizationDesc>>
FGUnlockCustomizeryes/Game/FactoryGame/Unlocks/BP_UnlockCustomizer.BP_UnlockCustomizer_C
FGUnlockEmoteyes/Game/FactoryGame/Unlocks/BP_UnlockEmote.BP_UnlockEmote_CmEmotes: TArray<TSubclassOf<UFGEmote>>
FGUnlockGiveItemyes/Game/FactoryGame/Unlocks/BP_UnlockGiveItem.BP_UnlockGiveItem_CmItemsToGive: TArray<FItemAmount>
FGUnlockInfoOnlyyes/Game/FactoryGame/Unlocks/BP_UnlockInfoOnly.BP_UnlockInfoOnly_CmUnlockName: FText
mUnlockDescription: FText
mUnlockIconBig: TObjectPtr<UTexture2D>
mUnlockIconSmall: TObjectPtr<UTexture2D>
mUnlockIconCategory: TObjectPtr<UTexture2D>
FGUnlockInventorySlotyes/Game/FactoryGame/Unlocks/BP_UnlockInventorySlot.BP_UnlockInventorySlot_CmNumInventorySlotsToUnlock: int32
FGUnlockItemDescriptoryes/Game/FactoryGame/Unlocks/BP_UnlockItemDescriptor.BP_UnlockItemDescriptor_CmItemDescriptors: TArray<TSubclassOf<UFGItemDescriptor>>
FGUnlockMapyes/Game/FactoryGame/Unlocks/BP_UnlockMap.BP_UnlockMap_C
FGUnlockRecipeyes/Game/FactoryGame/Unlocks/BP_UnlockRecipe.BP_UnlockRecipe_CmRecipes: TArray<TSubclassOf<UFGRecipe>>
FGUnlockSAMIntensityyes/Game/FactoryGame/Unlocks/BP_UnlockSAMIntensity.BP_UnlockSAMIntensity_CmSAMIntensity: int32
FGUnlockScannableObjectyes/Game/FactoryGame/Unlocks/BP_UnlockScannableObject.BP_UnlockScannableObject_CmScannableObjects: TArray<FScannableObjectData>
FGUnlockScannableResourceyes/Game/FactoryGame/Unlocks/BP_UnlockScannableResource.BP_UnlockScannableResource_CmResourcePairsToAddToScanner: TArray<FScannableResourcePair>
legacy mResourcesToAddToScanner: TArray<TSubclassOf<UFGResourceDescriptor>>
FGUnlockSchematicyes/Game/FactoryGame/Unlocks/BP_UnlockSchematic.BP_UnlockSchematic_CmSchematics: TArray<TSubclassOf<UFGSchematic>>
FGUnlockTapeno/Script/FactoryGame.FGUnlockTapemTapeUnlocks: TArray<TSubclassOf<UFGTapeData>>
FGUnlockVisualizationModeyesprovide concrete mod subclassmVisualizationModes: TArray<TSubclassOf<UFGVisualizationModeDescriptor>>

Each properties entry’s path uses field name exactly. TSubclassOf<T> accepts Unreal class path; TObjectPtr<T> accepts object asset path or null; TArray<T> accepts YAML sequence; reflected struct accepts YAML mapping. C++ access (protected/private) does not change KDataForge property path because application uses Unreal reflection. Fields marked transient are not configuration contract and are omitted.

Struct fieldAccepted type
FItemAmount.ItemClassTSubclassOf<UFGItemDescriptor>
FItemAmount.Amountint32 (non-negative)
FScannableObjectData.ItemDescriptorTSubclassOf<UFGItemDescriptor>
FScannableObjectData.ActorsAllowedToScanTArray<TSubclassOf<UObject>>
FScannableResourcePair.ResourceDescriptorTSubclassOf<UFGResourceDescriptor>
FScannableResourcePair.ResourceNodeTypeEResourceNodeType: Node, FrackingSatellite, FrackingCore, Geyser, or Deposit
unlocks:
- class: /Game/FactoryGame/Unlocks/BP_UnlockRecipe.BP_UnlockRecipe_C
properties:
- path: mRecipes
value:
- /KDataForge/Gen/MyPack.Gen_MyPack_Recipe_MySuperIngot
- class: /Game/FactoryGame/Unlocks/BP_UnlockSchematic.BP_UnlockSchematic_C # unlocks OTHER schematics directly —
properties:
# bypasses MAM/HUB purchase entirely
- path: mSchematics
value:
- /Game/FactoryGame/Schematics/Progression/Schematic_2-3.Schematic_2-3_C

The current game build ships no Blueprint variant for FGUnlockVisualizationMode; use a mod-provided concrete subclass for that abstract native type.

ClassKey propertyWhat it does
FGUnlockRecipemRecipes: TArray<TSubclassOf<UFGRecipe>>Unlocks the given recipes for manufacturing
FGUnlockSchematicmSchematics: TArray<TSubclassOf<UFGSchematic>>Directly purchases/unlocks other schematics (no MAM/HUB step for those)
FGUnlockBlueprintsmRecipes (inherited from FGUnlockRecipe)Unlocks the Blueprint Designer feature and the designer’s own recipe together
unlocks:
- class: /Game/FactoryGame/Unlocks/BP_UnlockInventorySlot.BP_UnlockInventorySlot_C
properties:
- path: mNumInventorySlotsToUnlock
value: 3
- class: /Game/FactoryGame/Unlocks/BP_UnlockArmEquipmentSlot.BP_UnlockArmEquipmentSlot_C
properties:
- path: mNumArmEquipmentSlotsToUnlock
value: 1
ClassKey propertyWhat it does
FGUnlockInventorySlotmNumInventorySlotsToUnlock: int32Adds inventory slots
FGUnlockArmEquipmentSlotmNumArmEquipmentSlotsToUnlock: int32Adds arm-equipment slots (extra equipped tool)
FGUnlockGiveItemmItemsToGive: TArray<FItemAmount>A container of items other systems read; it doesn’t hand out items on its own. Use FGUnlockRecipe/direct inventory grants for an actual give-on-purchase effect
FGUnlockItemDescriptormItemDescriptors: TArray<TSubclassOf<UFGItemDescriptor>>Makes descriptors available to item-selection UIs such as Smart/Programmable Splitters

Three separate classes, one per axis. Combine as many as you need on one schematic:

unlocks:
- class: /Game/FactoryGame/Unlocks/BP_UnlockCentralStorageItemLimit.BP_UnlockCentralStorageItemLimit_C
properties:
- path: mItemStackLimitIncrease
value: 5
- class: /Game/FactoryGame/Unlocks/BP_UnlockCentralStorageUploadSpeed.BP_UnlockCentralStorageUploadSpeed_C
properties:
- path: mUploadSpeedPercentageDecrease
value: 10 # % faster upload (decreases UFGCentralStorageSettings::mDefaultTimeToUpload)
- class: /Game/FactoryGame/Unlocks/BP_UnlockCentralStorageUploadSlots.BP_UnlockCentralStorageUploadSlots_C
properties:
- path: mNumSlotsToUnlock
value: 1
ClassKey propertyWhat it does
FGUnlockCentralStorageItemLimitmItemStackLimitIncrease: int32More item stacks storable in Central Storage
FGUnlockCentralStorageUploadSpeedmUploadSpeedPercentageDecrease: float (Percent)Faster central-storage uploads
FGUnlockCentralStorageUploadSlotsmNumSlotsToUnlock: int32More concurrent upload queue slots
unlocks:
- class: /Game/FactoryGame/Unlocks/BP_UnlockScannableResource.BP_UnlockScannableResource_C
properties:
- path: mResourcePairsToAddToScanner
value:
- ResourceDescriptor: /Game/FactoryGame/Resource/RawResources/Bauxite/Desc_OreBauxite.Desc_OreBauxite_C
ResourceNodeType: Node # Node | FrackingSatellite | FrackingCore | Geyser | Deposit
- class: /Game/FactoryGame/Unlocks/BP_UnlockScannableObject.BP_UnlockScannableObject_C
# Add mScannableObjects entries for world-object scan targets such as crates or POIs.
ClassKey propertyWhat it does
FGUnlockScannableResourcemResourcePairsToAddToScanner: TArray<FScannableResourcePair> (ResourceDescriptor + ResourceNodeType)Grants Object Scanner detection for a resource
FGUnlockScannableObjectmScannableObjects: TArray<FScannableObjectData>Grants Object Scanner detection for non-resource world objects
FGUnlockMap(no properties)Unlocks the in-game map
unlocks:
- class: /Script/FactoryGame.FGUnlockCustomization
# Add mCustomizationUnlocks entries for outfits or skins.
- class: /Game/FactoryGame/Unlocks/BP_UnlockEmote.BP_UnlockEmote_C
properties:
- path: mEmotes
value:
- /Game/FactoryGame/Emotes/Wave/Emote_Wave.Emote_Wave_C
ClassKey propertyWhat it does
FGUnlockCustomizationmCustomizationUnlocks: TArray<TSubclassOf<UFGPlayerCustomizationDesc>>Player outfit/skin customization options
FGUnlockCustomizer(no properties)Unlocks the build-gun paint customizer feature itself
FGUnlockEmotemEmotes: TArray<TSubclassOf<UFGEmote>>Grants emotes
FGUnlockVisualizationModemVisualizationModes: TArray<TSubclassOf<UFGVisualizationModeDescriptor>>Grants factory visualization modes (e.g. production/power overlays)

Feature flags (no properties, presence alone unlocks the feature)

Section titled “Feature flags (no properties, presence alone unlocks the feature)”

These have no configurable properties at all; adding one to unlocks: is a bare class: entry:

unlocks:
- class: /Game/FactoryGame/Unlocks/BP_UnlockBuildOverclock.BP_UnlockBuildOverclock_C
- class: /Game/FactoryGame/Unlocks/BP_UnlockBuildProductionBoost.BP_UnlockBuildProductionBoost_C
- class: /Game/FactoryGame/Unlocks/BP_UnlockBuildEfficiency.BP_UnlockBuildEfficiency_C
- class: /Game/FactoryGame/Unlocks/BP_UnlockCircuitDaisyChaining.BP_UnlockCircuitDaisyChaining_C
ClassWhat it does
FGUnlockBuildOverclockUnlocks overclocking (potential shards) on buildings
FGUnlockBuildProductionBoostUnlocks inserting production-boost shards into buildings
FGUnlockBuildEfficiencyUnlocks the build-efficiency display on buildings
FGUnlockCircuitDaisyChainingUnlocks power-line daisy-chaining between poles
unlocks:
- class: /Game/FactoryGame/Unlocks/BP_UnlockSAMIntensity.BP_UnlockSAMIntensity_C
properties:
- path: mSAMIntensity
value: 2
- class: /Game/FactoryGame/Unlocks/BP_UnlockInfoOnly.BP_UnlockInfoOnly_C
properties:
- path: mUnlockName
value: 'A cosmetic note'
- path: mUnlockDescription
value: 'Shown in the unlock UI grants nothing by itself.'
ClassKey propertyWhat it does
FGUnlockSAMIntensitymSAMIntensity: int32Sets the intensity of SAM-node effects (e.g. VO)
FGUnlockInfoOnlymUnlockName/mUnlockDescription: FText, mUnlockIconBig/Small/Category: UTexture2DPure UI entry in the unlock list, grants no gameplay effect on its own
FGUnlockCheckmark(inherits FGUnlockInfoOnly’s fields)Same as FGUnlockInfoOnly, plus tracks a per-player “seen/unlocked” checkmark in the save
FGUnlockTapemTapeUnlocks: TArray<TSubclassOf<UFGTapeData>>Unlocks audio tapes in tape-player content

These classes plug into schematic instanced unlocks. Use Type: unlock to reuse one preconfigured unlock class across several schematics. Schematic dependencies: uses the equivalent instanced-array mechanism for mSchematicDependencies.