CrimsonSkillTree
A replicated, GAS-integrated skill tree system. You author each tree in a two-graph asset editor: the Logic Graph captures gameplay structure (nodes, dependencies, conditions, events, costs) and the Visual Graph captures the player-facing layout with a live UMG preview of every node. The runtime is server-authoritative with delta-only FastArray replication, and it exposes its state as a plain save struct - no save-system dependency.
Two ways to read this
Use the Blueprint / C++ / Both switch at the top of the window. Blueprint readers get editor screenshots; C++ readers get code; Both shows everything side by side.
What's included
| System | Key Types | Purpose |
|---|---|---|
| Asset | UCrimsonSkillTree, UCrimsonSkillTree_Node, UCrimsonSkillTree_Edge | Data-driven tree definition; nodes hold costs, conditions, events |
| Two-graph editor | Logic Graph + Visual Graph | Gameplay rules and player-facing layout edited independently on one asset |
| Connection styles | UCrimsonSkillTreeWidget_LineDrawingPolicyBase (+ Straight / Elbow / Spline) | Swappable per-asset line drawing; the Spline policy gives material-capable, hand-authored curves |
| Runtime manager | UCrimsonSkillTreeManager | Server-authoritative actions, point budgets, atomic batches, respec, loadouts |
| Host contract | ICrimsonSkillTreeInterface | The actor that hosts the manager must implement this - the manager calls it to resolve its logical owner (see Quick Start step 2) |
| Widget primitives | UCrimsonSkillTreeWidget_Node / _Decoration / _NodeTooltip | Styleable per-node / decoration / tooltip widgets; the ready-made screen + canvas live in the CrimsonCore plugin (UCrimsonCoreSkillTreeScreen) |
| Tooling | Validators + PIE debugger + Dev Tools | Compile-time checks (jump-to-node), live runtime state tinting in PIE, and a Dev Tools window (Crimson.SkillTree.DevTools) to inspect / drive trees during play - multiplayer-aware |
Plugin dependencies
| Type | Name |
|---|---|
| Crimson | CrimsonCommon |
| Engine plugins | GameplayAbilities, CommonUI, GameFeatures, ModularGameplay |
| Engine modules | Core, UMG, GameplayTags, Slate, SlateCore, NetCore (EnhancedInput is available to subclasses but the base plugin binds no input) |
The runtime UI lives in CrimsonCore
This plugin ships the styleable node / decoration / tooltip / line primitives. The ready-made player-facing screen (
UCrimsonCoreSkillTreeScreen) and canvas (UCrimsonCoreSkillTreeGraph) live in the CrimsonCore plugin, where input is bound through a UCrimsonInputConfig and is fully rebindable to any key. See How-To: Display the Skill Tree.Where to go next
- New here? Start with Quick Start - a tree on screen and a node activating end to end.
- Need a specific task? See the How-To pages (author a tree, style connections, runtime actions, save/load, display the tree, debug at runtime).
- Want the mental model? Read the Concept pages (two-graph editor, connection styles, compile, multiplayer).
- Looking up a signature? Jump to API Reference.