CrimsonLoadingScreen

CrimsonLoadingScreen shows and hides a loading screen for you. UCrimsonLoadingScreenManager, a UGameInstanceSubsystem, evaluates a set of conditions every frame - no world yet, GameState not replicated, pending or seamless travel, missing local PlayerController, plus any votes from your own game code - and puts your UMG widget on the viewport while any condition holds. You never call Show or Hide. On top of that it picks a weighted random tip and a random background material per load, blocks input in packaged builds, switches the engine into loading-friendly performance modes, and can feed a live 3D character showcase into the widget via a render target.

New here? Read in this order
Do Quick Start first (a working loading screen with a tip and background), then How-To: Get the Building Blocks - it shows the exact Blueprint nodes and C++ for reaching the manager, the settings, and the data assets that every other page assumes you can reach. Use the Blueprint / C++ / Both switch at the top to see the path for your project type.

What's included

SystemKey TypesPurpose
Automatic show/hideUCrimsonLoadingScreenManagerGame-instance subsystem; evaluates 16 conditions every frame and manages the widget - no manual calls
Project settingsUCrimsonLoadingScreenSettingsWidget class, hold delay, tips, backgrounds, live preview - Project Settings -> Crimson -> Crimson Loading Screen
Hold votesICrimsonLoadingProcessInterface, UCrimsonLoadingProcessTaskGame code keeps the screen up until it is really ready (data replication, async loads)
TipsUCrimsonLoadingTipsCollection, FCrimsonLoadingTipWeighted random tip per load, optionally filtered by a FGameplayTag category
BackgroundsUCrimsonLoadingBackgroundCollectionRandom UMaterialInterface background per load (soft references, loaded on demand)
Character showcaseICrimsonLoadingCharacterProvider, FCrimsonLoadingCharacterInfoYour game supplies the player's meshes/materials/anim so a showcase level can display them
Showcase directorICrimsonLoadingCinematicInterfaceAn actor in your showcase level receives start/end callbacks with the character data
Live previewbUseLivePreview + GetShowcaseRenderTarget()A SceneCapture2D render target becomes the widget background - world rendering stays on
EventsNative delegates + Blueprint-assignable mirrorsReact to visibility changes and content-ready from Blueprint or C++
Input + performanceFLoadingScreenInputPreProcessor, performance hooksInput eaten in packaged builds; shader cache to Fast batch mode, world rendering off, hitch detector suspended
Debug toolingCVars, -NoLoadingScreen, crimson.loading.get_stateForce the screen on, log the show reason every frame, query state via MCP

Plugin dependencies

TypeName
CrimsonCrimsonCommon (logging macros)
Engine modules (public)Core, CoreUObject, GameplayTags
Engine modules (private)Engine, Slate, SlateCore, InputCore, PreLoadScreen, RenderCore, DeveloperSettings, UMG
Multiplayer-ready by design
The manager never creates on dedicated servers (ShouldCreateSubsystem returns false), and the built-in conditions already wait for GameState replication and local PlayerController spawn - the two things that most often finish after the map loads on a client. Everything here is client-side presentation; no gameplay state is involved.
Not the same as CrimsonUI's loading subsystem
CrimsonUI ships an unrelated UCrimsonLoadingScreenSubsystem that only stores a per-map widget class. This plugin's manager is UCrimsonLoadingScreenManager. If a node search shows both, pick the Manager for everything on these pages.

Where to go next

  • Quick Start - a working loading screen with tip text and a background, end to end.
  • How-To: Get the Building Blocks - the exact nodes/code to reach the manager, the settings, and the data assets (read this second).
  • Task pages: show tips and backgrounds, hold the screen from game code, react to events, showcase the player's character, live render target preview.
  • Mental model: Concept: Lifecycle & Show Conditions and Concept: The Cinematic Preview Pipeline.
  • Looking up a signature? Jump to API Reference.