Progression Tree Builder

v1.2.0

Usage Guide

Advanced patterns, Latest Mode setup, and best practices for creating progression systems.

Introduction

This guide covers advanced usage patterns and best practices for Progression Tree Builder. Learn how to implement roguelike progression, create complex skill dependencies, and optimize your trees.

Traditional Skill Trees

Creating a Character Class Tree

Example: Warrior skill tree with three branches (Offense, Defense, Utility)

Step 1: Structure Your Tree

Warrior Skills
├── Offense Branch
│   ├── Basic Strike (root)
│   ├── Power Strike (requires: Basic Strike)
│   └── Execute (requires: Power Strike)
│
├── Defense Branch
│   ├── Block (root)
│   ├── Parry (requires: Block)
│   └── Fortress (requires: Parry)
│
└── Utility Branch
    ├── Dash (root)
    └── Sprint (requires: Dash)

Step 2: Configure Costs

SkillCostMax RankEffect
Basic Strike11Unlocks basic combo
Power Strike23+15% damage per rank
Execute31Finisher ability
Block11Unlocks blocking
Parry23-10% damage taken per rank
Fortress41Immunity for 3 seconds

Latest Mode (Roguelike)

Latest Mode shows a random pool of N skills that players can choose from. Perfect for roguelike/roguelite games like Hades, Vampire Survivors, or Risk of Rain 2.

Setup Latest Mode

  1. Assign Selection Weights

    For each skill in your tree, set the Selection Weight field:

    RarityWeightFrequency
    Common70-100Very Frequent
    Uncommon40-70Frequent
    Rare20-40Occasional
    Epic10-20Rare
    Legendary1-10Very Rare
  2. Configure UI Controller

    Select your ProgressionTreeUIController in the scene:

    • • Set Layout Mode = Latest
    • • Set Latest Node Count = 3 (or 2-6)
    • • Enable Auto Refresh On All Maxed
    • • Set Column Width = 0 (auto-fit) or fixed value
  3. Setup Latest Mode Controller

    Create a child GameObject under your UI with:

    • • Add LatestModeLayoutController component
    • • Create child GameObject "DetailsContainer" with RectTransform
    • • Assign your ProgressionDetailsUI prefab
    • • Reference controller in ProgressionTreeUIController
  4. Test & Iterate

    Press Play and award points to see random skills appear. Adjust weights as needed.

Example: Survivors-Style Game

Complete example for a level-up based progression system:

Tree Structure

Combat Skills (15 total)
├── Pistol Path (5 skills)
│   ├── Basic Pistol (Weight: 80, Rank: 1)
│   ├── Rapid Fire (Weight: 60, Rank: 2)
│   ├── Armor Pierce (Weight: 40, Rank: 3)
│   ├── Explosive Rounds (Weight: 25, Rank: 3)
│   └── Infinite Ammo (Weight: 10, Rank: 1)
│
├── Shotgun Path (5 skills)
│   └── ... (similar structure)
│
└── Rifle Path (5 skills)
    └── ... (similar structure)

Game Creator Flow

Trigger: On Character Level Up
├── Instruction: Award Progression Points
│   ├── Tree: [Combat Skills]
│   └── Amount: 1
│
├── Instruction: Refresh Latest Pool
│   ├── Tree: [Combat Skills]
│   ├── Node Count: 3
│   └── Only If All Maxed: false
│
└── Instruction: Open Progression Tree UI
    └── Tree: [Combat Skills]
Design Tip: For Latest mode, create 15-25 skills total with 3-5 skills per path. This ensures variety while maintaining manageable pool sizes.

Custom Layout Strategies

Create custom positioning logic for skill nodes by implementing the ILayoutStrategy interface. This allows you to create unique tree visualizations beyond the built-in Grid, Graph, and List modes.

When to Use Custom Layouts

  • You need non-standard grid dimensions
  • Skills should follow a specific visual pattern
  • Different branches require different layouts

Best Practices

Keep It Simple

For most cases, modifying grid columns and cell size in Prepare() is sufficient. Only implement custom CalculatePositions() if you need truly unique positioning logic.

Debug Output

Add debug logs in Prepare() to verify your strategy is being called and settings are applied correctly.

Choice Groups

Choice Groups force players to choose between mutually exclusive options. Perfect for class specializations.

Example: Class Selection

Root Skill: "Choose Your Path"
├── Choice Group: "Combat Style"
│   ├── Warrior Path (melee focus)
│   ├── Ranger Path (ranged focus)
│   └── Mage Path (magic focus)
│
→ Player can only choose ONE of these three paths

Setup in Graph Editor

  1. Create 3 skills: Warrior, Ranger, Mage
  2. In the tree settings, add a new Choice Group
  3. Set Group ID (e.g., "combat_style")
  4. Add description: "Choose your combat style"
  5. Add all three skills to this group
Important: Once a player chooses one skill from a Choice Group, all other skills in that group become permanently locked (unless the tree is respec'd).

Game Creator Instructions

Skills support two types of instruction execution for maximum flexibility: Asset-Based (in ScriptableObject) and Scene-Based (via SkillInstructions Component).

Asset-Based Instructions

Configured in the ProgressionSkill asset

  • • Works across all scenes
  • • Stat modifications
  • • Achievements, messages
  • • No GameObject references

Scene-Based Instructions

Via SkillInstructions Component

  • • Scene-specific behavior
  • • GameObject Drag & Drop ✓
  • • UI panels, scene objects
  • • Per-scene customization

Asset-Based Instructions

Example: Power Strike Skill (Asset-Based)

On Skill Unlocked:
├── Change Stat: +10 Attack Damage
├── Play Audio: unlock_sound.wav
└── Show Message: "Power Strike Learned!"

On Skill Activated:
├── Play Animation: power_strike_cast
├── Wait: 0.3 seconds
└── Spawn Prefab: strike_effect (from Resources)

On Skill Upgrade:
└── Play Audio: rank_up.wav

Scene-Based Instructions

Example: UI Feedback (Scene-Based)

GameObject: "PowerStrike_Instructions"
└── SkillInstructions Component
    ├── Skill: [Power Strike]
    │
    ├── ☑ On Unlocked
    │   └── Instructions:
    │       ├── Set Active: UIPanel "SkillUnlockedPanel" → True
    │       ├── Change Text: TextMeshPro "SkillNameText" → "Power Strike"
    │       ├── Wait: 2 seconds
    │       └── Set Active: UIPanel "SkillUnlockedPanel" → False
    │
    ├── ☑ On Activated
    │   └── Instructions:
    │       ├── Instantiate Prefab: StrikeVFX at Transform "CastPoint"
    │       ├── Camera Shake: MainCamera (intensity 0.5)
    │       └── Set Active: GameObject "ImpactEffect" → True
    │
    └── ☐ On Upgrade (disabled)
Execution Order: When a skill event fires, asset instructions execute first, then scene instructions. Both can be used together for maximum flexibility.

Stats Integration

Skills can modify Game Creator 2 Stats when unlocked or upgraded.

Adding Stat Modifiers

  1. Select a ProgressionSkill asset
  2. In Inspector, find "Stat Modifiers" section
  3. Click "Add Stat Modifier"
  4. Select Target Stat (from your GC2 Stats)
  5. Set Value and Modifier Type
Modifier TypeExampleResult
Flat+10 Max HealthCharacter gains 10 HP
Percentage+15% Attack Damage15% bonus to base damage
Per Rank+5 per rankScales with skill rank (Rank 3 = +15)

Example: Health Skill

Skill: "Vitality"
├── Type: Passive
├── Max Rank: 5
├── Cost: 1 per rank
└── Stat Modifiers:
    └── Target Stat: Max Health
        ├── Type: Per Rank
        └── Value: +10

Result:
Rank 1 → +10 Health
Rank 2 → +20 Health
Rank 3 → +30 Health
...
Rank 5 → +50 Health

Events & Custom Actions

React to skill events with Game Creator instructions for visual effects, sounds, and gameplay logic.

Available Events

On Skill Unlocked

Fires when a skill is unlocked for the first time (Rank 1)

Use for: Unlock rewards, achievements, tutorials

On Skill Activated

Fires when an Active skill is used

Use for: Spell effects, ability cooldowns, animations

On Skill Upgraded

Fires when skill rank increases

Use for: Visual feedback, rank-up effects

Example: Fireball Skill

Skill: "Fireball"
├── Type: Active
├── On Skill Unlocked:
│   ├── Show Message: "Fireball Learned!"
│   └── Play Audio: magic_learn.wav
│
└── On Skill Activated:
    ├── Play Animation: cast_spell
    ├── Wait: 0.3 seconds
    ├── Spawn Prefab: fireball_projectile
    ├── Wait: 0.5 seconds
    └── Condition: If target hit
        └── Reduce Health: 50 damage

Best Practices

Tree Size

Keep trees under 50-100 skills for optimal performance and player comprehension. Use multiple trees for different systems (combat, crafting, social).

Skill Costs

Balance costs with game progression. Early skills should cost 1-2 points, mid-tier 2-4 points, and ultimate abilities 5-10 points.

Point Economy

Award points regularly (1 per level is common). Players should unlock 2-4 skills per character level in early game, slowing to 1-2 in late game.

Latest Mode Pool Size

For roguelike games, show 3-4 skills at once. Ensure you have at least 10-15 total skills to maintain variety across runs.

Testing

Enable Debug Mode on ProgressionTreeManager during development for detailed console logs. Test with varied point amounts to ensure balanced progression.

UI Widgets Integration

Progression Tree Builder includes optional UI widgets that provide real-time feedback to players. These are completely optional but highly recommended for better UX.

See the UI Widgets Guide for detailed setup instructions.

Notification System

Toast-style notifications for skill unlocks, upgrades, and points awarded.

Points HUD Widget

Real-time display of available skill points with click-to-open functionality.

Unlock Animation Overlay

Fullscreen celebration effect when skills are unlocked.