Quick Start

By the end of this page you'll have two actors on opposing teams that correctly read as enemies - the foundation everything else builds on. This needs only the agent component and some tags; declared teams, player auto-assignment, and cosmetics are separate How-To pages.

Prerequisites
CrimsonTeams enabled, and a couple of team tags to use (e.g. Team.Red, Team.Blue).
Create the team tags first
CrimsonTeams ships no team tags of its own - you define them. Open Project Settings -> Project -> GameplayTags, add Team.Red and Team.Blue (or edit Config/DefaultGameplayTags.ini directly). Any tag strings work.

1. Enable the plugin

Open Edit -> Plugins, type Crimson, tick CrimsonTeams, and restart the editor. For a Blueprint project that's the whole install.

Verify
CrimsonTeams shows enabled in the Plugins window and the editor restarts cleanly.

2. Make two actors team agents

Add a Crimson Team Agent Component to each actor (prefer the Player State for players - it survives respawns). Give one Team.Red and the other Team.Blue, and mark each as hostile to the other.

Open the actor Blueprint (the Player State for players), click + Add in the Components panel and pick Crimson Team Agent - it is under Teams in the picker. Select the new component and, in its Details under Teams, fill the two tag containers: Team Tags = Team.Red, Hostile To Tags = Team.Blue. Do the same on the second actor with the tags swapped. Both are plain editable defaults, so no graph nodes are needed for a static setup.

Server authority
All team mutations (JoinTeam, AddHostileTags, ...) are BlueprintAuthorityOnly and run only where HasAuthority() is true. There is no client->server RPC: clients receive the result by replication. A client-side call is a silent no-op.
Verify
Each actor lists its tags in the component's Details (or via Get Team Tags).

3. Check attitude

Ask the statics whether two actors are friend or foe - it resolves the component on an actor, its pawn, or its player state automatically.

Right-click in any graph and search Get Team Attitude Between (it sits under Teams). Wire Source = the asking actor and Target = the other actor; the Return Value is Friendly, Neutral, or Hostile. For a straight yes/no, use Should Cause Damage To Target (Source, Target) -> Branch instead - it returns a bool that is false only when the two are Friendly. Neither node needs a target object: both are static library nodes that resolve the team component on each actor, its pawn, or its player state for you.

Verify
Team.Red vs Team.Blue returns Hostile; two Team.Red actors return Friendly; an actor with no team returns Neutral.
What's next
Wire AI to it and pick how the component gets added (How-To: Make an Actor a Team Agent), react to changes (How-To: React to Team Changes), set up declared teams + colors (How-To: Declared Teams & Colors), or inspect it live (How-To: Debug at Runtime (Dev Tools)). For the model behind dynamic re-aggro, read Concept: Dynamic Attitude & Multiplayer.