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 Number Pop -> 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 Number Pop -> 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. The final render scale is the per-player WidgetScale (stored on the widget as BaseRenderScale at dispatch) multiplied by the curve value - so player preference and distance falloff stack cleanly.

Curve culling vs MaxDisplayDistance
The per-player MaxDisplayDistance filter 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 Pops Per Player - the WidgetScale the curve multiplies and the MaxDisplayDistance filter.
  • Concept: Styles, Formatting & the Widget Pool - where in the per-frame update the curve applies.