How-To: Show Tips & Backgrounds

Goal: show a weighted random tip and a random background image on every load, authored entirely in data assets.

Prerequisites
Quick Start is done (widget registered and reading GetCurrentTip / GetCurrentBackground). You know how to create the data assets (How-To: Get the Building Blocks step 3).

1. Author the tips collection

Open your DA_LoadingTips (UCrimsonLoadingTipsCollection) and add entries to the Tips array. Each FCrimsonLoadingTip has three fields:

FieldTypePurpose
TextFTextThe tip shown to the player (localizable)
CategoryFGameplayTagOptional grouping tag (e.g. LoadingTips.Combat) used by the category filter
Weightfloat (min 0.01, default 1.0)Relative selection probability - 2.0 appears twice as often as 1.0
Screenshot pendingImages/CrimsonLoadingScreen/howto-tips-collection.png
DA_LoadingTips Details: Tips array with several entries, each showing Text, Category, and Weight.
Verify
The asset saves with at least two entries so you can see the tip change between loads.

2. Author the backgrounds collection

Backgrounds are materials, not textures - make a simple UI material per image first: Texture Sample into Emissive Color, Material Domain = User Interface. Then open DA_LoadingBackgrounds (UCrimsonLoadingBackgroundCollection) and add each material to the Backgrounds array. Entries are soft references, so nothing loads into memory until a loading screen actually shows.

Screenshot pendingImages/CrimsonLoadingScreen/howto-backgrounds-collection.png
DA_LoadingBackgrounds Details: Backgrounds array of soft UMaterialInterface references (M_Loading_KeyArt01, M_Loading_KeyArt02, ...).
Verify
Each array entry resolves to a UI-domain material (a texture asset will not appear in the picker).

3. Register both in Project Settings

In Project Settings -> Crimson -> Crimson Loading Screen, set Tips -> Tips Collection and Backgrounds -> Background Collection to your assets. The neighboring options control selection behavior:

SettingDefaultEffect
bPickNewTipEachLoadtruefalse = the first tip picked stays for the whole session ('tip of the day')
TipCategoryFilteremptyWhen set, only tips whose Category matches are candidates
bPickNewBackgroundEachLoadtruefalse = one background for the whole session
Screenshot pendingImages/CrimsonLoadingScreen/howto-tips-settings.png
Project Settings -> Crimson -> Crimson Loading Screen: Tips Collection and Background Collection assigned; bPickNewTipEachLoad / TipCategoryFilter / bPickNewBackgroundEachLoad visible.
A filter with no matches shows nothing
If TipCategoryFilter is set and no tip carries a matching Category, selection fails silently and GetCurrentTip stays empty. Check the filter first when tips stop appearing.
Verify
Both settings resolve to your assets (no 'None').

4. Read them in the widget

The manager picks the tip and background when the screen opens, before your widget constructs - so read once in Construct, no waiting or events needed. (This is the same code as Quick Start step 2; shown here with the category tag and a dynamic material.)

Screenshot pendingImages/CrimsonLoadingScreen/howto-tips-read-bp.png
Event Construct -> Get CrimsonLoadingScreenManager -> Get Current Tip -> SetText (TipText). Get Current Background -> Is Valid -> Set Brush from Material (BackgroundImage). Optionally Get Current Tip Category -> use the tag to pick an icon.
Verify
Travel between maps a few times in PIE: the tip and background change per load (with the pick-new flags at their defaults).

See also

  • How-To: Live Render Target Preview - replace the static background with a live 3D scene.
  • API Reference - UCrimsonLoadingTipsCollection::GetRandomTip is also callable directly (Blueprint and C++) if you want tips outside the loading screen.