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.

Prerequisites
You're in PIE and at least one actor hosts a 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.

Verify
Before Play it shows "PIE is not running". Hit Play and it populates.

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.

Actions follow authority
Mutating buttons go through the manager's normal Server RPCs, so they only fire where they legitimately can: on the server, or on a client's locally-controlled player. A simulated proxy shows its buttons disabled with a note - that's expected, not a bug. Driving an action on a client exercises the real client->server round-trip.

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.

Screenshot pendingImages/CrimsonSkillTree/devtools-graph.png
Graph tab: nodes colored by state; a connection turns green when its parent is set and the child's prerequisites are met.
Connection color
A line is active (bright green) when its parent node is Set/Max and the child's prerequisites are met - the same rule the in-game lines use. Otherwise it's dim grey.

4. Drive, cheat, and persist

TabWhat it does
Trees & NodesHierarchy + per-node actions; activate/reset a tree; add a dynamic tree from an asset
GraphLive node-graph canvas (pan / zoom / click to select)
ResourcesPer-resource spent / available / total budget, with grant or drain for testing
CheatsForce-unlock a node (and its descendants, optionally to a depth), or unassign all nodes in a tree
Loadouts/SaveSave / restore / delete named loadouts; snapshot a tree's save data
ReplicationServer-vs-client per-node compare + a desync log
Event LogCoalesced, 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.)

Verify
Run PIE as Client with 2+ players. Activate a node on Client 1 - it round-trips: the Server and Client 1 both update, the Replication tab stays green, and the Desync log briefly logs then resolves.

See also

  • Concept: Multiplayer - the server-authoritative model the tool drives
  • How-To: Drive Node Actions - the same actions from your own code