Skip to content

Progress presentation in Blueprint ​

Use Forge Progress for ordinary linear tracks, radial outlines, square/rectangular perimeter outlines, segmented fills and whole charge cells. These are procedural UI styles. Sakura's requested cooldown uses the separate InterfaceForge Center Tint above its icon; keep that center-origin tint and its layering when reproducing that presentation.

Bind game-owned progress ​

Add Forge Progress to your widget, choose Style, Desired Size, Thickness, Segments, Reverse, Start Offset and theme options in the Designer. On your provider's changed event, call Set Fraction with a normalized0–1 value. The convenience IFEntryWidget already wires Notify Data Changed → On Entry Refreshed. A manual Set Fraction stops any previous UI-owned cooldown on this widget. For a decorative overlay above a clickable sibling, set its visibility to Not Hit-Testable (Self & All Children) (HitTestInvisible) so it cannot cover that sibling's input target.

The default RTS/RPG readouts use real provider-driven linear tracks. Pause → Field journal → Watchpost survey opens a Blueprint-only provider and custom entry. Observe ridge advances one of four observations; its count, fraction, availability and completed prose change through the same saved public graphs.

Customize the same saved entry ​

Open WBP_WatchpostEntry under /Game/UI/Blueprint. Set its Progress Presentation property in Watchpost | Presentation to Linear, Radial, Square Perimeter, Segmented or Charges. Pre Construct applies this property, including Designer previews. In this entry, use that property instead of changing only RecordProgress's Style; Pre Construct intentionally reapplies the entry's configured presentation.

Call Apply Progress Presentation on a live entry to change styles. This is an editable Blueprint custom event supplied by the example, using public plugin/engine nodes:

flowchart LR
    A[Apply Progress Presentation: Presentation Style] --> S[Set Progress Presentation]
    S --> B{Radial or Square Perimeter?}
    B -->|Yes| D[Configure Progress: 96x96 / 4 segments]
    B -->|No| L[Configure Progress: 440x8 / 4 segments]
    D --> C[Cast RecordProgress Slot to VerticalBoxSlot / Set Horizontal Alignment: Center]
    L --> F[Set Horizontal Alignment: Fill]
    E[Pre Construct] -->|Progress Presentation| A

Its On Entry Refreshed → Set Fraction and observation button graph are unchanged. The same source/model supports every style; no new subclass or gameplay implementation is needed. The helper also prevents a Vertical Box's fill alignment from stretching a96×96 dial. In your own layout, use the appropriate slot/alignment or Size Box.

Actual source interaction after one observation (UE5.6.1,1280×720):

One observation shown by the same Blueprint entry with radial progress

The same entry at enlarged UI/text scale with a reversed outline and another origin (UE5.8.3 source), and completed charge cells (UE5.7.4 Development package), are in enlarged reverse and completed survey. These are original game interfaces; simulated input produced the recorded interactions.

Public runtime controls ​

Node / propertyResult
Configure ProgressSets style, desired size, segment capacity, direction and origin; invalid style, nonpositive/nonfinite size or nonfinite origin returns false and preserves the previous configuration. Valid segment counts clamp1–64 and origin clamps0–1. It invalidates layout/paint and preserves the current reading/clock.
Set FractionFinite values clamp0–1; nonfinite values display0. Stops a previous local clock.
Get Displayed FractionThe actual manual or current timed reading.
Get Displayed ChargesWhole filled cells, quantized down using Segments as capacity. A tiny1e-5 cell-unit tolerance prevents floating-point count underruns. It owns no charges, item state or action rules.
ReverseFills from the right for line/cell styles, counterclockwise for radial/perimeter styles.
Start OffsetTurns/perimeter fraction: radial0 starts at the top; square0 at top-left. Only outline styles use this origin.
Use Theme Colors / Theme Override → Refresh AppearanceFollows Accent/Outline or a local theme; disable theme colors to retain your explicit Fill/Track colors.

For a charge display with three filled cells out of five, set Style=Charges and Segments=5, then Set Fraction to3÷5. The renderer and Get Displayed Charges return three whole cells, including normalized fractions that land a few floating-point units below an integer. A partly filled charge does not become a whole cell. Validate action availability and actual charges in your gameplay provider.

Timed UI presentation and countdown text ​

Start Cooldown(Duration Seconds) starts at1 and decreases to0 against an absolute game-time endpoint. Game-world pause freezes it; changing presentation does not restart it. Zero/negative/nonfinite duration completes immediately. Clear Cooldown clears its reading. Get Remaining Seconds → Ceil → To Text (Integer) → Set Text supplies a countdown label through your existing shared UI update path. Hide the label/tint when the remaining value reaches0.

Use this clock for a small transient UI timer when the widget owns its timing. For gameplay cooldowns, use the game's authoritative time/data and notify entries: rebuilding a UI widget must not restart an ability. The RPG example demonstrates provider-driven fraction/countdown fields; its center tint never starts a gameplay timer. Avoid independent per-widget population scans or creating one timer for every recycled list entry.

Current verification passes60source/exact Development-package progress runs acrossUE5.6.1/5.7.4/5.8.3, plus24shared RTS/RPG flow regressions and12real Ward/tint/world-entry regressions. All30saved BPs compile cleanly on each engine, and revised core builds/loads independently. Runtime record gives commands, hashes and limits. Physical controller testing remains deferred. The player-facing survey contains no instructional style selector or test-only timer controls; this scoped milestone is not whole-product release acceptance.

UIForge v0.1.0 · Blueprint and C++ development documentation.

Enlarged documentation image

Enlarged documentation image