How-To: Debug at Runtime (Dev Tools)
Goal: inspect and drive a live skill tree during Play-in-Editor - see node state, spend/refund points, force-unlock, and compare replication between the server and clients - without building any UI.
UCrimsonSkillTreeManager (Quick Start). The tool is editor-only and is inert outside PIE.1. Open the window
Open it from Tools -> Crimson Skill Tree -> Skill Tree Dev Tools, or type `Crimson.SkillTree.DevTools` in the console. It can stay open across Play sessions.
2. Pick a net context and target
Two dropdowns sit at the top. Net Context selects which world you're viewing - the Server or any Client - so you can verify each side independently. Target selects which actor's manager to inspect in that context.
3. Read the tree - hierarchy + graph
The Trees & Nodes tab shows the selected tree as an expandable hierarchy rooted at its Root node: children nest under parents, color-coded by state (a legend is shown), each row with level / prerequisites and per-node Activate / + / - / Deactivate. The Graph tab draws the tree the way it looks in game - nodes at their authored positions, connection lines, colored by live state. Drag to pan, wheel to zoom, click a node to select and act on it.
Images/CrimsonSkillTree/devtools-graph.png4. Drive, cheat, and persist
| Tab | What it does |
|---|---|
| Trees & Nodes | Hierarchy + per-node actions; activate/reset a tree; add a dynamic tree from an asset |
| Graph | Live node-graph canvas (pan / zoom / click to select) |
| Resources | Per-resource spent / available / total budget, with grant or drain for testing |
| Cheats | Force-unlock a node (and its descendants, optionally to a depth), or unassign all nodes in a tree |
| Loadouts/Save | Save / restore / delete named loadouts; snapshot a tree's save data |
| Replication | Server-vs-client per-node compare + a desync log |
| Event Log | Coalesced, timestamped tail of node state changes |
5. Verify multiplayer replication
The Replication tab compares the same player's tree on the server vs a chosen client, per node, and flags any mismatch in red. The Desync log records disagreements over time and when they re-converge - a quick way to confirm a client->server action round-trips correctly. (Comparison is meaningful for the player who owns the client, or when the manager replicates node state to all clients.)
See also
- Concept: Multiplayer - the server-authoritative model the tool drives
- How-To: Drive Node Actions - the same actions from your own code