Tag-based teams & factions with dynamic attitude — change a tag at runtime and even AI perception re-evaluates friend or foe.

Gameplay · Multiplayer · Unreal Engine 5

Teams that change mid-match — and the AI actually notices.

A replicated, tag-based team & faction system where attitude is computed live from gameplay tags. Flip a team or hostility tag at runtime and every actor re-evaluates friend or foe — including AI perception, which Unreal otherwise checks once and never again.

Video coming soon

Why CrimsonTeams

A complete friend-or-foe layer — replicated, GAS-aware, AI-aware, and built to change at runtime.

Tags, not numeric IDs

Teams are gameplay tags, so an actor can belong to several at once and factions nest naturally. Attitude is a pure function of the tags on each side — friendly, neutral, or hostile.

Dynamic attitude & live re-aggro

Change a team or hostility tag at runtime and every actor re-evaluates. The system refreshes AI perception so enemies re-aggro without re-perceiving from scratch — the mid-match defection problem, solved.

Built for multiplayer

Server-authoritative team state with delta-replicated tags. Clients receive results by replication and re-fire change delegates from OnRep, so gameplay and UI stay correct on every machine.

Damage gating & GAS targeting

One call gates friendly fire; MakeFilteredTargetDataFromActors filters AoE by attitude (hostile-only, friendly-only, and more) straight into a GAS target-data handle.

Declared teams & team colors

Declare named teams on the Game State, auto-assign players, and drive per-team material/Niagara colors from a display asset — with async observers that keep nameplates and UI in sync.

A multiplayer dev-tools window

Inspect every agent, an N×N attitude matrix, the team registry, and a server-vs-client replication diff — edit teams live and watch them propagate. Plus CycleTeam / SetTeam / ListTeams cheats.

A closer look

Friend or foe in three steps

Add a Team Agent Component, give each actor its team and hostile tags, and ask GetTeamAttitudeBetween. Team.Red vs Team.Blue reads Hostile; two reds read Friendly; no team reads Neutral. That's the whole foundation.

Video coming soon

Decoupled by design

The team contract — ICrimsonTeamAgentInterface — lives in CrimsonCommon, not here. Any plugin can read a team or attitude through it with zero dependency on CrimsonTeams. The Cardinal Rule in action.

Video coming soon

Wire it to AI in one override

Unreal's perception reads attitude off the perceiving actor, so you forward one method on your AI controller or pawn to GetTeamAttitudeBetween. Using CrimsonCore? Its classes already do it — perception reads Crimson attitudes out of the box.

Video coming soon

Technical details

Engine
UE 5.8
Platforms
Windows, Mac, Linux
Blueprint-ready
Yes
C++ required
No
Network replicated
Yes
Dependencies
CrimsonCommon, GameplayAbilities, AIModule, Niagara
Last updated
June 2026

Frequently asked questions

Do I need C++ to use it?
No. Components, tags, attitude queries, observers, the dev-tools window, and the cheats are all Blueprint-accessible. C++ is there if you want it.
Does it work in multiplayer?
Yes — that's the point. Team state is server-authoritative and replicated; clients re-fire change events from OnRep. A built-in dev-tools tab diffs server vs client so you can confirm it.
Will my AI actually re-evaluate when teams change?
Yes. On any change the system refreshes AI perceivers (preserving last-known location, no ForgetActor), so an actor that just turned hostile gets perceived and a new ally is ignored — without leaving and re-entering perception.
Does it depend on other Crimson plugins?
Only CrimsonCommon, per the suite's Cardinal Rule. The team contract itself lives in CrimsonCommon, so other plugins read attitude without depending on CrimsonTeams.
Does it integrate with GAS?
Yes. It gates damage by attitude and filters ability targets (hostile-only, friendly-only, …) into a GAS target-data handle for AoE.

Build factions that react in real time

Drop in the agent component, tag your actors, and you've got replicated friend-or-foe with live AI re-aggro. Start with the Quick Start or follow the course.