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

SystemKey TypesPurpose
AssetUCrimsonSkillTree, UCrimsonSkillTree_Node, UCrimsonSkillTree_EdgeData-driven tree definition; nodes hold costs, conditions, events
Two-graph editorLogic Graph + Visual GraphGameplay rules and player-facing layout edited independently on one asset
Connection stylesUCrimsonSkillTreeWidget_LineDrawingPolicyBase (+ Straight / Elbow / Spline)Swappable per-asset line drawing; the Spline policy gives material-capable, hand-authored curves
Runtime managerUCrimsonSkillTreeManagerServer-authoritative actions, point budgets, atomic batches, respec, loadouts
Host contractICrimsonSkillTreeInterfaceThe actor that hosts the manager must implement this - the manager calls it to resolve its logical owner (see Quick Start step 2)
Widget primitivesUCrimsonSkillTreeWidget_Node / _Decoration / _NodeTooltipStyleable per-node / decoration / tooltip widgets; the ready-made screen + canvas live in the CrimsonCore plugin (UCrimsonCoreSkillTreeScreen)
ToolingValidators + PIE debugger + Dev ToolsCompile-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

TypeName
CrimsonCrimsonCommon
Engine pluginsGameplayAbilities, CommonUI, GameFeatures, ModularGameplay
Engine modulesCore, 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.