CrimsonNumberPop

Displays floating damage, healing, and custom numbers above actors. The server broadcasts a FCrimsonNumberPopEvent through UCrimsonNumberPopReplicationComponent (on the GameState); each client's UCrimsonNumberPopSubsystem applies the local player's display filters, resolves a visual style from a tag-driven registry, and recycles a pooled UCrimsonNumberPopWidget 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 broadcastUCrimsonNumberPopReplicationComponent, FCrimsonNumberPopEventServer-authoritative entry point on the GameState; call BroadcastNumberPop and every relevant client shows the number
Server cullingUCrimsonNumberPopClientComponent, ServerCullDistanceOptional per-client delivery that sends each event only to players in range, instead of multicasting to everyone
Style registryUCrimsonNumberPopRegistry, FCrimsonNumberPopStyleRule, FCrimsonNumberPopConfigData asset mapping FGameplayTagQuery rules to visual configs (format string, rich-text styles, physics, animation name)
Widget poolUCrimsonNumberPopSubsystem, UCrimsonNumberPopWidgetClient-side subsystem that pre-warms, recycles, and screen-projects pooled pop widgets
Per-player filtersUCrimsonNumberPopPlayerSettingsPlayerController component: show/hide categories, crits-only, distance cap, widget scale, number-format override
Spawn placementUCrimsonNumberPopTargetComponentPer-actor socket or offset that decides where a pop appears
Project settingsUCrimsonNumberPopSettingsRegistry + widget class, number format, distance-scale curve, pool size, active-pop cap, server cull distance
User settings glueUCrimsonCoreNumberPopSettingsComponent (CrimsonCore)Applies saved NumberPop.* 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. BroadcastNumberPop 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.
  • 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.