How-To: Scale Pops by Camera Distance (Optional)

Goal: make far-away pops render smaller (and optionally disappear) instead of holding one fixed on-screen size. One float curve drives it: X = camera-to-pop distance in cm, Y = scale multiplier. Without a curve, pops render at a constant size (the class default; the plugin's demo content ships a sample curve you can replace or clear).

Prerequisites
You completed Quick Start.

1. Author the curve

Create a Curve Float asset (Content Browser -> right-click -> Miscellaneous -> Curve -> CurveFloat) and add keys mapping distance to scale. A good starting shape:

Key (X = distance, cm)Value (Y = scale)Effect
01.2Slightly oversized right at the camera
15001.0Normal size at typical combat range
50000.6Shrinks with distance
80000Hidden beyond max range
End the curve at Y = 0 to cull by range
A curve value of 0 or less hides the pop entirely at that distance - and float curves extrapolate their last key constantly, so a final key at Y = 0 keeps pops hidden at every distance beyond it. The pop still runs its lifetime and reappears if the camera moves back into range.

2. Assign it in Project Settings

Set Project Settings -> Crimson -> Crimson Combat Text -> Scaling -> Distance Scale Curve Path to your curve. It async-loads with the registry and widget class; if the path is set but fails to load, the subsystem logs a warning and falls back to constant size.

The CurveFloat asset with the four keys above, and Project Settings -> Crimson Combat Text -> Scaling -> Distance Scale Curve Path pointing at it.
Verify
In PIE, a pop near the camera renders larger than the same pop far away, and pops beyond your Y = 0 key vanish. The dev tools Status tab shows the loaded curve path (or (none - constant size)).

How it combines

The curve is evaluated every frame for every active pop, measuring from the local player's camera (PlayerCameraManager location) to the pop's tracked world point. Each pop carries a FCrimsonCombatTextInstance::BaseScale, fixed at spawn as the per-player WidgetScale times the style's ScaleMultiplier times any value-emphasis scale; the frame scale is then BaseScale * motion scale * distance-curve scale - so player preference, authored style, and distance falloff all stack cleanly.

Curve culling vs the Distance filter
The Distance filter row drops an event once at receive time, measured from the pawn - a dropped event never displays. The curve re-evaluates live from the camera during a pop's lifetime, so a hidden pop can reappear as the camera moves closer. Use the filter to cut noise; use the curve for the visual falloff.

See also

  • How-To: Filter Which Pops a Player Sees - the WidgetScale the curve multiplies, and the Distance filter row.
  • Concept: Style Resolution, Motion & Rendering - where in the per-frame update the curve applies.