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
| Skill | Cost | Max Rank | Effect |
|---|---|---|---|
| Basic Strike | 1 | 1 | Unlocks basic combo |
| Power Strike | 2 | 3 | +15% damage per rank |
| Execute | 3 | 1 | Finisher ability |
| Block | 1 | 1 | Unlocks blocking |
| Parry | 2 | 3 | -10% damage taken per rank |
| Fortress | 4 | 1 | Immunity for 3 seconds |
Latest Mode (Roguelike)
Setup Latest Mode
- Assign Selection Weights
For each skill in your tree, set the
Selection Weightfield:Rarity Weight Frequency Common 70-100 Very Frequent Uncommon 40-70 Frequent Rare 20-40 Occasional Epic 10-20 Rare Legendary 1-10 Very Rare - 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
- Setup Latest Mode Controller
Create a child GameObject under your UI with:
- • Add
LatestModeLayoutControllercomponent - • Create child GameObject "DetailsContainer" with RectTransform
- • Assign your ProgressionDetailsUI prefab
- • Reference controller in ProgressionTreeUIController
- • Add
- 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]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 pathsSetup in Graph Editor
- Create 3 skills: Warrior, Ranger, Mage
- In the tree settings, add a new Choice Group
- Set Group ID (e.g., "combat_style")
- Add description: "Choose your combat style"
- Add all three skills to this group
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.wavScene-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)Stats Integration
Skills can modify Game Creator 2 Stats when unlocked or upgraded.
Adding Stat Modifiers
- Select a ProgressionSkill asset
- In Inspector, find "Stat Modifiers" section
- Click "Add Stat Modifier"
- Select Target Stat (from your GC2 Stats)
- Set Value and Modifier Type
| Modifier Type | Example | Result |
|---|---|---|
| Flat | +10 Max Health | Character gains 10 HP |
| Percentage | +15% Attack Damage | 15% bonus to base damage |
| Per Rank | +5 per rank | Scales 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 HealthEvents & 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 damageBest 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.
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.