How-To: Debug at Runtime (Dev Tools)

Goal: inspect and drive teams during Play-in-Editor - read every agent's tags, see who's friendly/hostile to whom, edit teams server-side, and confirm state replicates to clients - without building any UI.

Prerequisites
You're in PIE and at least one actor has a UCrimsonTeamAgentComponent. The tool is editor-only and inert outside PIE.

1. Open the window

Open it from Tools -> Crimson Teams -> Teams Dev Tools, or type `Crimson.Teams.DevTools` in the console. It can stay open across Play sessions.

Verify
Before Play it shows a "PIE not running" gate; hit Play and it populates.

2. Pick a net context

The Net Context dropdown at the top selects which world you're viewing - the Server or any Client - so you can verify each side independently. Every tab reflects the selected context.

Edits are server-authoritative
Team state has no client->server RPC, so the Agents tab's Join / Leave / +Host / -Host buttons enable only on authoritative agents. Switch the Net Context to Server to edit, then watch the change reach clients in the Replication tab. (On a client context the buttons are disabled - that's expected, not a bug.)

3. The tabs

TabWhat it does
AgentsEvery team agent in the world with its team/hostile tags + authority badge. Type a tag, then Join / Leave / +Host / -Host any authoritative agent
Attitude MatrixAn NxN grid of GetTeamAttitudeBetween for every agent pair, colour-coded F (friendly) / N (neutral) / H (hostile) - your whole faction graph at a glance
TeamsThe subsystem registry: each declared team, its display asset, and live member counts
ReplicationServer-vs-client compare of every agent's tags (players matched by PlayerId, others by name), listing only differences, plus a desync log
Event LogA live, coalesced feed of team/hostile tag changes in the selected context
Screenshot pendingImages/CrimsonTeams/devtools-attitude-matrix.png
The Attitude Matrix: each row agent's attitude toward each column agent, green/grey/red for friendly/neutral/hostile.

4. Verify dynamic re-aggro in multiplayer

This is the fastest way to confirm the dynamic-attitude system end to end:

  1. Run PIE as Client with 2+ players (and an AI that perceives by affiliation).
  2. In the Agents tab, with the Net Context on Server, add or remove a hostility tag on a player.
  3. Watch the Attitude Matrix flip that pairing, the Event Log record the change, and the Replication tab stay green as it reaches the client.
  4. Confirm a nearby AI re-evaluates (aggros or de-aggros) without the target leaving and re-entering its perception.
Verify
The Replication tab reports 0 mismatches once the change settles, and the desync log briefly logs then resolves.

Console cheats (quick alternative)

CommandEffectAuthority
CycleTeamMove the local player to the next registered team (wraps)server / host
SetTeam <index>Move the local player to the team at that registry indexserver / host
ListTeamsPrint all registered team tagsany

See also

  • Concept: Dynamic Attitude & Multiplayer - the server-authoritative model the tool drives
  • How-To: Query Attitude & Gate Damage - the same attitude from your own code