Combat Text Foundations
Floating combat numbers, replicated right: motion presets, a tag-driven style registry, pooled widgets, per-player filters.
What you'll learn
- Explain the server → replication component → client subsystem flow
- Author a motion set and a hierarchical tag-driven style registry
- Broadcast combat text from server code safely
- Filter what each player sees with local player settings
- Position pops with sockets and scale them by camera distance
- Exercise everything with the built-in dev tools
Curriculum
- 1Display-Only, By DesignThe server broadcasts an event; each client filters, styles, and pools its own widgets.2 min
- 2Enable the PluginTick CrimsonCombatText (and CrimsonCommon), restart. C++ projects add one module line.2 min
- 3Create the Motion Set & Style RegistryTwo data assets: how pops move, and how tags choose their look — hierarchy and modifiers instead of a rule per combination.5 min
- 4Create the Combat Text Widget & Point SettingsA Rich Text Block named TextBlock, a text style set, and the project settings that load your assets.4 min
- 5Replicate & BroadcastThe replication component goes on the Game State; the server builds an event and broadcasts it.5 min
- 6Per-Player FiltersEach player chooses what they see: own damage, ally damage, heals, crits-only — locally, never replicated.4 min
- 7Position & ScaleSockets and offsets place the pop; a distance curve keeps it readable at any range.4 min
- 8Test with the Dev ToolsSpawn pops on demand, flip filters live, watch how a tag resolved, and inspect the pool — without writing a damage system first.4 min