CrimsonCombatText · Lesson 6 of 8

Per-Player Filters

Beginner4 minRuntimeSettings

Before you start

  • Completed: Replicate & Broadcast
Video coming soon

Chapters

1. Add the settings component

Add `CrimsonCombatTextPlayerSettings` to your Player Controller. The subsystem finds it on the local controller automatically; it never replicates, so every player filters their own screen. It's entirely optional — without it, every event displays.

2. The toggles

bShowMyDamageDealt, bShowAllyDamageDealt, bShowEnemyDamageDealt (off by default), bShowIncomingDamage (overrides the instigator filters — you always see what hits you), bShowHeals, bShowCritsOnly — plus HealTags/CritTags to classify, Max Display Distance (default 3000 cm; local-pawn targets are exempt; 0 = unlimited), Widget Scale (0.5–2.0), and a per-player Number Format Override. Everything is BlueprintReadWrite, so an options menu can drive it live.

3. Teaching it your teams

Ally/enemy filters need to know who's friendly. Subclass the settings component and override the friendliness event in Blueprint, or bind the C++ delegate — the Blueprint override wins when both exist. The dev tools' Filters tab tells you which hook is active.

Null instigators
An instigator that isn't net-relevant arrives null on clients and is treated as third-party — distant AoE sources simply follow the enemy-damage toggle.
On the full stack, skip the wiring
With CrimsonCore and CrimsonSettings in the project, the settings glue creates and drives this component from saved user settings for you — see How-To: Expose Pop Options as User Settings.