Skip to main content

Getting Started

Installation

  1. Copy the PerkSystem folder to your project's Plugins/ directory
  2. Regenerate project files
  3. Restart the editor

Quick Start

1. Create a Perk Definition

  1. Right-click in Content Browser → Blueprint Class
  2. Search for and select PerkDefinition as parent class
  3. Name it (e.g., BP_Perk_HealthBoost)
  4. Open and configure properties:
PropertyDescription
Display NameName shown in UI
DescriptionPerk description text
Max LevelMaximum upgrade level (1 = single unlock)
Unlock CostPoints required to unlock
Gameplay Effects To ApplyEffects applied when unlocked
Abilities To GrantAbilities granted when unlocked
Required PerksPrerequisites that must be unlocked first

2. Create a Perk Tree

  1. Right-click in Content Browser → Miscellaneous → Data Asset
  2. Select PerkTreeDefinition
  3. Name it (e.g., DA_PerkTree_Combat)
  4. Double-click to open the Perk Tree Editor

3. Design Your Tree

  1. In the Perk Tree Editor, nodes represent perks
  2. Drag nodes to position them
  3. Set Parent Perks in the Details panel to create prerequisites
  4. Connection wires are drawn automatically

4. Add Perk Manager to Your Pawn

  1. Open your Character or Pawn Blueprint
  2. Add Component → Perk Manager Component
  3. The component manages all perks for that pawn

5. Apply Perks at Runtime

Blueprint:

Get Perk Manager Component
→ Can Apply Perk (check requirements)
→ Branch
→ Apply Perk

C++:

#include "PerkManagerComponent.h"
#include "PerkDefinition.h"

// Find the component
UPerkManagerComponent* PerkManager = UPerkManagerComponent::FindPerkManagerComponent(MyPawn);

// Check and apply
if (PerkManager && PerkManager->CanApplyPerk(UMyPerkDefinition::StaticClass()))
{
UPerkInstance* Instance = PerkManager->ApplyPerk(UMyPerkDefinition::StaticClass());
}

6. Check Perk Status

Blueprint:

Get Perk Manager Component → Has Perk → Branch

C++:

if (PerkManager->HasPerk(UMyPerkDefinition::StaticClass()))
{
int32 Level = PerkManager->GetPerkLevel(UMyPerkDefinition::StaticClass());
}

Next Steps

Examples

The PerkSystemExample plugin contains:

  • ExamplePerkDefinitions - Sample perk blueprints
  • ExamplePerkInstance - Custom perk instance class
  • ExamplePerkTree - Sample perk tree asset