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 | ICrimsonSkillTreeNodeWidget / ICrimsonSkillTreeDecorationWidget (+ optional ready-made widgets) | Styleable per-node / decoration / tooltip widgets plus the connection layer that paints the lines; you host them on a canvas of your own (How-To: Display the Skill Tree) |
| 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 | None - fully standalone |
| Engine plugins | GameplayAbilities, CommonUI, GameFeatures, ModularGameplay, EnhancedInput, SlateIM, GameplayTagsEditor |
| Engine modules | Core, CoreUObject, Engine, UMG, FieldNotification, GameplayAbilities, GameplayTags, GameFeatures, ModularGameplay, CommonUI, Slate, SlateCore, NetCore, InputCore, DeveloperSettings, Projects (EnhancedInput is available to subclasses but the base plugin binds no input) |
You build the screen; this plugin ships the parts
The node, decoration, tooltip and connection-line widgets are all here, and How-To: Display the Skill Tree walks the host canvas that assembles them - CrimsonSkillTree alone is enough for a working, navigable tree.
A prebuilt screen and canvas (
A prebuilt screen and canvas (
UCrimsonCoreSkillTreeScreen / UCrimsonCoreSkillTreeGraph) also exist (CrimsonCore - requires all Crimson plugins): free to download, but compiles only with every Crimson plugin installed. Treat it as an alternative to that page, not a prerequisite for it.Using with other Crimson plugins
This plugin works alone: it exposes its state through
OnSkillTreeStateUpdated, a plain save struct, node events and the CrimsonSkillTreeTags::SystemReadyFeatureName feature state. When you own the other Crimson plugins, CrimsonCore contains the full-suite wiring in Source/CrimsonCore/{Public,Private}/ - UserInterface/SkillTree/ for the prebuilt UCrimsonCoreSkillTreeScreen, SaveIntegration/ for UCrimsonSkillTreeSaveComponent, and SkillTree/Events/ for UCrimsonCoreSkillTreeNodeEvent_EquipAugment. To wire it yourself, see CrimsonCommon -> Concept: Connecting Crimson Plugins; for what CrimsonCore installs, see CrimsonCore -> Concept: The Integration Layer.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.