Floating damage numbers done right — pooled, tag-styled, and replicated for multiplayer.
Free · Gameplay · Unreal Engine 5
Damage numbers that pop — without the frame drops.
A floating number-pop system for damage, healing, and custom values. The server broadcasts one event; every client pulls a pooled widget, picks a style from a tag-driven registry, applies its own display filters, and plays the animation — so combat reads clearly on every machine and never hitches under a flurry of hits.
Why CrimsonNumberPop
Everything you need to show numbers above actors — pooled for performance, styled by tags, and correct in multiplayer.
Tag-driven style registry
A UCrimsonNumberPopRegistry data asset pairs a FGameplayTagQuery with a priority and a style config. The highest-priority matching rule wins, with a DefaultConfig fallback — so crits, heals, and damage types each get their own look without a line of branching code.
Pooled widgets, no hitches
The subsystem async-loads and pre-warms a configurable pool at startup, then recycles widgets as their animations finish. New creations are capped to 5 per frame when the pool runs dry, so a burst of hits never spikes the frame time.
Multiplayer by design
A UCrimsonNumberPopReplicationComponent on your GameState multicasts each event to all clients over a NetMulticast Unreliable RPC. WorldLocation is resolved server-side, so clients render without re-deriving anything.
Per-player display filters
An optional UCrimsonNumberPopPlayerSettings component lets each player choose what they see: own, ally, enemy, and incoming damage, heals, a crits-only mode, and a max-distance cap — with a delegate that bridges to your team system.
Formatting & motion presets
Pick a number format — CommaSeparated, Abbreviated (1.1K, 2.3M), or Raw — plus a global widget scale. Per-style physics (duration, spread, vertical boost, gravity) gives crits a floating arc and heals a gentle rise.
Blueprint-authored visuals
Subclass the abstract UCrimsonNumberPopWidget, bind a URichTextBlock, and implement StartPop to play your own UMG animation. The format string drives rich-text styling per token — all authored in Blueprint.
A closer look
One server event, every client renders locally
On the server, build a FCrimsonNumberPopEvent and call BroadcastNumberPop — from an AttributeSet's PostGameplayEffectExecute, an ability, or Blueprint. It validates authority, resolves the spawn location from the target's UCrimsonNumberPopTargetComponent, and multicasts. Each client's subsystem takes it from there.
Styled by tags, not branches
Incoming event tags are matched against the registry's rules; the highest-priority match supplies the format string, rich-text style, physics, and animation name. Add a new pop type by adding a rule — crits shoot up and float, normal hits arc down, heals drift upward — no code changes.
Every player sees their own fight
Drop a UCrimsonNumberPopPlayerSettings component on the local PlayerController and each player tunes their own clutter: hide enemy damage, show only crits, cap by distance — while incoming damage to you always shows. Bind IsActorFriendly to your team system and ally-vs-enemy filtering just works.
Technical details
- Engine
- UE 5.8
- Platforms
- Windows, Mac, Linux
- Blueprint-ready
- Yes
- C++ required
- No
- Network replicated
- Yes
- Dependencies
- UMG, GameplayTags, GameplayAbilities, Slate, DeveloperSettings
- Last updated
- June 2026
Frequently asked questions
Do I need C++ to use it?
BroadcastNumberPop is BlueprintCallable. The C++ snippets in the docs show the common GAS integration point, but they're optional — C++ is there if you want it.Does it depend on other Crimson plugins?
Does it work in multiplayer?
RequestNumberPop on the subsystem directly.Will hundreds of numbers tank my framerate?
Is it free?
Make every hit land — on screen
CrimsonNumberPop is free and quick to wire up: enable the plugin, build a style registry, add the component to your GameState, and broadcast from the server. The Quick Start walks through it end to end.
Ready for more? Add a premium system
You're already on the Crimson foundation — these paid systems drop straight in, no glue code.
A full Gameplay Ability System layer for UE5.
- Custom ASC & Abilities
- Slot-Based Augments
- Modifiers & Phases
- Graph-Based Combos
Replicated, GAS-native skill trees with a two-graph editor.
- Two-Graph Editor
- Material Splines
- Server-Authoritative
- Atomic Respec & Loadouts