Overview
The Skill Tree Forge generates skill tree databases — grid-based talent trees where nodes reference skills from Skill Forge databases and are connected by directed parent-child edges. Each tree supports branch groups for specialization paths, point costs, level requirements, and single-level dynamic properties.
Generated databases implement ISimpleSkillTreeDataSource and produce the same 4-file
output as the Skill Forge (enum, database, editor, asset), with the suffix Tree
(e.g., ARPGTreeType.cs, ARPGTreeDatabase.cs).
Open the Skill Tree Forge wizard from the Unity menu:
Key features:
- Grid-based node layout with row/column positioning
- Parent-child connections enforcing unlock order
- Branch groups for specialization paths (e.g., "Fire", "Ice", "Lightning")
- Per-node point cost, required level, and required points in tree
- Nodes reference skill codes from any linked Skill Forge database
- Single-level dynamic properties on each tree
- Runtime tracker with unlock/reset/snapshot support
- Character class restrictions via SAF Character Templates
The 5-Step Wizard
The Skill Tree Forge follows the same 5-step wizard pattern as all forges.
Step 1: Setup
Configure the database name, namespace, class prefix, and template. The Skill Tree Forge adds a
Linked Skill Databases section where you drag-and-drop Skill Forge database assets.
Linking a skill database enables searchable dropdown menus for node skillCode fields
in Step 3. You can link multiple skill databases.
You can also link SAF Character Template assets for class restriction support.
ARPG generates ARPGTreeType,
ARPGTreeDatabase, etc.
Step 2: Definitions
Define single-level dynamic properties for your trees. Unlike the Skill Forge, there is no rank-level — properties apply to the tree definition itself (e.g., "Tree Type", "Total Point Cap", "Is Starter Tree"). The JSON schema export/import section is available for AI-assisted content generation.
Step 3: Builder
Split-panel editor (280px left panel). The left panel lists all tree definitions with search, filter, sort, bulk operations, and pagination. The right panel shows foldout sections for:
- Identity — code, display name, description, icon
- Categories / Flags / Numerics / Texts — single-level properties
- Nodes — ReorderableList of tree nodes (9 editable fields per node)
- Connections — ReorderableList of directed edges (from/to node dropdowns)
- Character Class Restrictions — allowed character classes
Step 4: Settings
Output paths, custom paths toggle, generation toggles, and file preview.
Step 5: Generate
Two-phase generation producing {Prefix}TreeType.cs,
{Prefix}TreeDatabase.cs, {Prefix}TreeDatabaseEditor.cs, and the
.asset file.
Nodes
Each tree contains an array of SimpleSkillTreeNode structs. A node represents a single
unlockable entry in the tree, referencing a skill from a linked Skill Forge database.
| Field | Type | Description |
|---|---|---|
nodeId |
int |
Unique identifier within this tree (auto-assigned) |
skillCode |
string |
Skill code referencing a Skill Forge database entry |
row |
int |
Row position in the tree grid (for visual layout) |
column |
int |
Column position in the tree grid (for visual layout) |
pointCost |
int |
Skill points required to unlock this node |
requiredLevel |
int |
Minimum character level required to unlock this node |
requiredPointsInTree |
int |
Minimum total points already spent in this tree to unlock |
branchGroup |
string |
Specialization path identifier (e.g., "Fire", "Ice"). Nodes with the same branchGroup form a specialization track. Empty = no specific branch. |
isRequired |
bool |
Whether this node must be unlocked to proceed further down its branch |
Querying Nodes
Connections
Connections are directed edges (SimpleSkillTreeConnection) that define parent-child
unlock dependencies between nodes. A child node cannot be unlocked until all parent nodes are
unlocked.
| Field | Type | Description |
|---|---|---|
fromNodeId |
int |
Parent node ID (must be unlocked first) |
toNodeId |
int |
Child node ID (unlockable after parent) |
Querying Connections
Single-Level Properties
Skill trees use single-level dynamic properties (Categories, Flags, Numerics, Texts) on the tree definition itself. There is no child-level like the Skill Forge's rank-level properties.
Runtime: SimpleSkillTreeTracker
SimpleSkillTreeTracker is a runtime state tracker that manages skill tree node unlocks,
point spending, prerequisite validation, cascade resets, and serializable snapshots.
Setup
Unlocking Nodes
UnlockNode tracks points spent internally
(for requiredPointsInTree validation) but does not deduct from a
player point balance. Your game code is responsible for checking and deducting available points
before calling UnlockNode.