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
| System | Key Types | Purpose |
|---|---|---|
| Event broadcast | UCrimsonNumberPopReplicationComponent, FCrimsonNumberPopEvent | Server-authoritative entry point on the GameState; call BroadcastNumberPop and every relevant client shows the number |
| Server culling | UCrimsonNumberPopClientComponent, ServerCullDistance | Optional per-client delivery that sends each event only to players in range, instead of multicasting to everyone |
| Style registry | UCrimsonNumberPopRegistry, FCrimsonNumberPopStyleRule, FCrimsonNumberPopConfig | Data asset mapping FGameplayTagQuery rules to visual configs (format string, rich-text styles, physics, animation name) |
| Widget pool | UCrimsonNumberPopSubsystem, UCrimsonNumberPopWidget | Client-side subsystem that pre-warms, recycles, and screen-projects pooled pop widgets |
| Per-player filters | UCrimsonNumberPopPlayerSettings | PlayerController component: show/hide categories, crits-only, distance cap, widget scale, number-format override |
| Spawn placement | UCrimsonNumberPopTargetComponent | Per-actor socket or offset that decides where a pop appears |
| Project settings | UCrimsonNumberPopSettings | Registry + widget class, number format, distance-scale curve, pool size, active-pop cap, server cull distance |
| User settings glue | UCrimsonCoreNumberPopSettingsComponent (CrimsonCore) | Applies saved NumberPop.* CrimsonSettings values to the local player automatically on the full Crimson stack |
Plugin dependencies
| Type | Name |
|---|---|
| Crimson | CrimsonCommon (logging + shared utilities) |
| Engine plugins | GameplayAbilities |
| Engine modules | Core, 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.