CrimsonCombatText

Displays floating damage, healing, and custom numbers above actors. The server broadcasts a FCrimsonCombatTextEvent through UCrimsonCombatTextReplicationComponent (on the GameState); each client's UCrimsonCombatTextSubsystem applies the local player's display filters, resolves a visual style from a tag-driven registry, and recycles a pooled UCrimsonCombatTextWidget to play the pop. It is display-only: the subsystem never runs on dedicated servers, and dropping an event costs nothing but a missing cosmetic.

Two ways to read this
Use the Blueprint / C++ / Both switch at the top of the window. Blueprint readers get editor screenshots; C++ readers get code; Both shows them side by side. Where something exists in only one world, the page says so.

What's included

SystemKey TypesPurpose
Event broadcastUCrimsonCombatTextReplicationComponent, FCrimsonCombatTextEventServer-authoritative entry point on the GameState; call BroadcastCombatText and every relevant client shows the number
Server cullingUCrimsonCombatTextClientComponent, ServerCullDistanceOptional per-client delivery that sends each event only to players in range, instead of multicasting to everyone
Style registryUCrimsonCombatTextRegistry, FCrimsonCombatTextStyleRule, FCrimsonCombatTextStyleData asset mapping FGameplayTagQuery rules to visual configs (format string, rich-text styles, physics, animation name)
Widget poolUCrimsonCombatTextSubsystem, UCrimsonCombatTextWidgetClient-side subsystem that pre-warms, recycles, and screen-projects pooled pop widgets
Per-player filtersUCrimsonCombatTextPlayerSettingsPlayerController component: show/hide categories, crits-only, distance cap, widget scale, number-format override
Anchor pointUCrimsonCombatTextTargetComponentPer-actor socket or offset deciding where on an actor a pop is anchored
PlacementUCrimsonCombatTextPlacement, UCrimsonCombatTextPlacementSetNamed, tag-routed policies deciding WHERE text appears - over the target, under it, or at a fixed spot on the HUD
Widget anchorsUCrimsonCombatTextAnchorSubsystem, UCrimsonCombatTextAnchorWidgetMakes your UI addressable by tag so pops can land on a health bar or nameplate
Project settingsUCrimsonCombatTextSettingsRegistry + widget class, number format, distance-scale curve, pool size, active-pop cap, server cull distance
User settings glueUCrimsonCoreCombatTextSettingsComponent (CrimsonCore)Applies saved CrimsonCombatText.* CrimsonSettings values to the local player automatically on the full Crimson stack

Plugin dependencies

TypeName
CrimsonCrimsonCommon (logging + shared utilities)
Engine pluginsGameplayAbilities
Engine modulesCore, CoreUObject, Engine, GameplayTags, DeveloperSettings, GameplayAbilities, UMG
Multiplayer-first, cosmetic-only
Events travel server-to-client over unreliable RPCs (NetMulticast or per-client) because pops are cosmetic - an occasional drop is invisible. BroadcastCombatText validates authority itself, so it is safe to call from shared gameplay code like an AttributeSet's PostGameplayEffectExecute.

Where to go next

  • New here? Start with Quick Start - damage numbers over a target, end to end.
  • Want text somewhere other than over the enemy? Read How-To: Position Pops, then How-To: Show Pops on the HUD or a Health Bar.
  • Need a specific task? See the How-To pages (per-player filters, team system bridge, pop placement, custom widget animation, distance-based scaling, server culling, user settings, dev-tools testing).
  • Want the mental model? Read the Concept pages (event flow and replication; styles, formatting, and the widget pool).
  • Looking up a signature? Jump to API Reference.