Plugin Documentation

LoadScreenPro
Loading screens from Project Settings

Startup and level-transition loading screens with movies, backgrounds, tips, animated loading icons and five layouts. Configure once in Project Settings; the screen appears automatically on every map load and keeps animating while the level loads.

v1.0
UE 4.27 & 5.8
Win64 (verified)
Category User Interface
Alpha XP

Overview

LoadScreenPro gives your game a complete loading screen without any Blueprint or C++ work. It drives the engine's built-in movie player, which renders on its own thread while the game thread is blocked loading a map, so icons, tips and movies keep playing during the load. Everything is configured in Project Settings > Game > LoadScreenPro.

  • Two screens: a startup screen shown when the game launches (studio logo movies) and a default screen shown on every level transition.
  • Movies from Content/Movies, with shuffle, playback type, skippable and minimum display time options.
  • Background images picked at random, rotated on a timer or chosen by index from Blueprint, with stretch mode, padding and background colour.
  • Tips picked at random, rotated on a timer or chosen by index, with full text appearance settings and wrapping.
  • Loading icon: Throbber, Circular Throbber or an animated image sequence, next to or above/below a loading text.
  • Five layouts: Classic, Center, Letterbox, Sidebar and Dual Sidebar, each with its own alignment, padding, offsets and border brushes.
  • Loading complete text with a fade animation, so the player presses a key to continue.
  • PSO precache wait: keep the screen up until shader pipeline precompilation is done, with a timeout and an optional progress bar.
  • Blueprint control of the next loading screen: choose the background, tip or movie, disable the screen, or stop it manually.
  • 75 sample textures to build a screen in minutes.

Requirements

RequirementDetails
Unreal Engine4.27 and 5.8 (verified clean on both)
ModulesLoadScreenPro (Runtime, loading phase PreLoadingScreen; not loaded on dedicated-server targets)
DependenciesNone (uses the engine modules MoviePlayer, Slate, SlateCore, DeveloperSettings, RenderCore and RHI)
LanguageBlueprints and C++ (configuration needs neither)
PlatformsNo platform restriction in the plugin descriptor. Win64 is the platform built and verified by Alpha XP; other platforms with an engine movie player are supported by the code, not verified by Alpha XP.

Installation

  1. Copy the LoadScreenPro folder into your project's Plugins/ folder (create it if needed), or install the plugin to the engine from Fab.
  2. Open the project. For a C++ project, let the editor build the module or build it from your IDE.
  3. Enable LoadScreenPro in Edit > Plugins (category User Interface) and restart the editor.
  4. Disable any other plugin that also sets up a movie-player loading screen; only one system can own the movie player.
  5. C++ only: add "LoadScreenPro" to PublicDependencyModuleNames in your module's Build.cs to call the library or read the settings from code.
Verifying the installOpen Project Settings: a LoadScreenPro page appears under the Game section, and the six nodes of the LoadScreenPro category are available in any Blueprint graph.

Quick start

Blueprint / no-code setup

  1. Open Project Settings > Game > LoadScreenPro > General > Default Loading Screen.
  2. Keep bShowWidgetOverlay enabled (shown as Show Widget Overlay).
  3. Under Background > Images add one or more textures.
  4. Under Tip Widget > Tip Text add a few tips.
  5. Under Loading Widget pick a LoadingIconType. For Image Sequence, add the frames of /LoadScreenPro/Default/StickFigure/RunImages to Image Sequence Settings > Images in order.
  6. Pick a Layout (Classic by default).
  7. Launch with Play > Standalone Game (or a packaged build) and open another level with Open Level. The loading screen is shown while the level loads.

To choose what the next loading screen shows, call Set Display Background Index, Set Display Tip Text Index or Set Display Movie Index before Open Level, and enable the matching manual option in the settings. Call Set Enable Loading Screen with false to skip the screen for a transition.

C++

#include "LoadScreenProLibrary.h"
#include "LoadingScreenSettings.h"
#include "Kismet/GameplayStatics.h"

void AMyGameMode::TravelToArena()
{
    // Requires bSetDisplayBackgroundManually / bSetDisplayTipTextManually in the Default Loading Screen settings.
    ULoadScreenProLibrary::SetDisplayBackgroundIndex(2);
    ULoadScreenProLibrary::SetDisplayTipTextIndex(0);

    // Show the loading screen for this transition (true is the default).
    ULoadScreenProLibrary::SetEnableLoadingScreen(true);

    UGameplayStatics::OpenLevel(this, TEXT("Arena"));
}

int32 AMyGameMode::GetNumberOfTips() const
{
    const ULoadingScreenSettings* Settings = GetDefault<ULoadingScreenSettings>();
    return Settings->DefaultLoadingScreen.TipWidget.TipText.Num();
}

How it works

  • The module loads in the PreLoadingScreen phase and immediately sets up the Startup Loading Screen with the engine movie player.
  • Every time the engine prepares a loading screen for a map load, the Default Loading Screen is set up, unless it was disabled with Set Enable Loading Screen.
  • Seamless travel does not open a movie-player loading screen; use a transition map or a regular map load if you need the screen there.
  • When bWaitForPSOPrecachingToComplete is enabled, the plugin keeps the movie player waiting after the level has loaded, polls the number of outstanding pipeline precompiles and stops the screen when it reaches zero, when PSOPrecacheMaxWaitTime expires, and only after MinimumLoadingScreenDisplayTime. The priority boost (bBoostPSOPrecachePriority) requires UE 5.8; on UE 4.27 the wait uses the bundled PSO cache count only.

Blueprint nodes

All nodes are static functions of ULoadScreenProLibrary, category LoadScreenPro.

NodeTypeDescription
Set Display Background IndexCallableChooses the background image (index into Background > Images) for the next loading screen. Needs bSetDisplayBackgroundManually; an invalid index falls back to a random image.
Set Display Tip Text IndexCallableChooses the tip (index into Tip Widget > Tip Text). Needs bSetDisplayTipTextManually; an invalid index falls back to a random tip.
Set Display Movie IndexCallableChooses the movie (index into Movie Paths). Needs bSetDisplayMovieIndexManually; an invalid index plays the whole list.
Set Enable Loading ScreenCallableEnables or disables the loading screen for the following level loads (enabled by default).
Get Is Enable Loading ScreenPureReturns whether the loading screen is currently enabled.
Stop Loading ScreenCallableStops the current loading screen. Used with bWaitForManualStop; requires bAllowEngineTick so Blueprint code runs while the screen is up (call it from BeginPlay, for example after a Delay).

C++ API

TypeKindDescription
ULoadScreenProLibraryClassBlueprint function library above; also exposes GetDisplayBackgroundIndex(), GetDisplayTipTextIndex() and GetDisplayMovieIndex() to C++. Header LoadScreenProLibrary.h.
ULoadingScreenSettingsClassThe Project Settings object (UDeveloperSettings, saved to DefaultGame.ini). Read with GetDefault<ULoadingScreenSettings>(). Header LoadingScreenSettings.h.
FLoadingScreenProfileStructOne complete loading screen (movies + widget overlay + layout choice). Used for StartupLoadingScreen and DefaultLoadingScreen.
ELoadScreenProLayoutEnumLSPL_Classic, LSPL_Center, LSPL_Letterbox, LSPL_Sidebar, LSPL_DualSidebar.
ELoadingIconTypeEnumLIT_Throbber, LIT_CircularThrobber, LIT_ImageSequence.
ELoadingWidgetTypeEnumLWT_Horizontal, LWT_Vertical (text beside or above/below the icon).
LogLoadScreenProLogLog category for the plugin's warnings.

Settings

Location: Project Settings > Game > LoadScreenPro. Values are stored in Config/DefaultGame.ini under [/Script/LoadScreenPro.LoadingScreenSettings]. The editor shows each property name split into words (boolean names without the leading b).

SettingDefaultDescription
StartupLoadingScreenWidget overlay off, tip wrap 1000Screen shown when the game starts. Typically used for logo movies only.
DefaultLoadingScreenWidget overlay on, tip wrap 1000Screen shown on every level transition.
Classicsee Layout settingsSettings of the Classic layout.
Centersee Layout settingsSettings of the Center layout.
Letterboxsee Layout settingsSettings of the Letterbox layout.
Sidebarsee Layout settingsSettings of the Sidebar layout.
DualSidebarsee Layout settingsSettings of the Dual Sidebar layout.

Loading screen profile (Startup / Default Loading Screen)

SettingDefaultDescription
MinimumLoadingScreenDisplayTime-1Minimum time the screen stays up, in seconds; -1 means no minimum.
bAutoCompleteWhenLoadingCompletestrueCloses the screen as soon as loading is done.
bMoviesAreSkippabletrueMovies can be skipped with a click once loading is done.
bWaitForManualStopfalseKeeps the screen up until it is stopped (key press when the minimum time is -1, or Stop Loading Screen).
bAllowInEarlyStartupfalseStarts movies very early on supported platforms; the widget overlay and PSO wait are ignored in this mode.
bAllowEngineTickfalseTicks the engine while waiting for the screen to finish (needed for Stop Loading Screen).
bWaitForPSOPrecachingToCompletefalseKeeps the screen up until outstanding PSO precompiles are done (takes over Wait For Manual Stop).
PSOPrecacheMaxWaitTime0Safety timeout for the PSO wait, counted from the end of level loading; 0 waits without limit.
bBoostPSOPrecachePrioritytrueRaises outstanding PSO precompiles to the highest priority while the screen is up (UE 5.8; no effect on 4.27).
PlaybackTypeMT_NormalMovie playback mode: Normal Playback, Looped Playback or Looped Last Playback (loops the last movie until loading is done).
MoviePathsemptyMovie names without extension, relative to Content/Movies.
bShufflefalseShuffles the movie list before playing.
bSetDisplayMovieIndexManuallyfalsePlays only the movie chosen with Set Display Movie Index.
bShowWidgetOverlaytrue (Startup: false)Shows the background, tips and loading widget on top of the movie.
bShowLoadingCompleteTextfalseShows a text when loading is done (use with Wait For Manual Stop and minimum time -1).
LoadingCompleteTextSettingssee belowText, appearance, alignment, padding and fade animation of the loading complete text.
Backgroundsee belowBackground image settings.
TipWidgetsee belowTip text settings.
LoadingWidgetsee belowLoading icon and loading text settings.
PSOPrecacheProgressWidgetsee belowPSO precache progress bar settings.
LayoutLSPL_ClassicLayout used to arrange the widgets.

Background

SettingDefaultDescription
ImagesemptyTextures shown as background; one is picked at random.
UpdateInterval0Seconds between random image changes; 0 or less never changes it.
ImageStretchScaleToFitHow the image is scaled to the screen.
Padding0Space between the screen edge and the image.
BackgroundColorBlackFills the screen when no image is set, otherwise visible in the padding.
bSetDisplayBackgroundManuallyfalseUses the index set with Set Display Background Index (and stops the timed rotation).

Tip Widget

SettingDefaultDescription
TipTextemptyTips (multi-line); one is picked at random.
UpdateInterval0Seconds between random tip changes; 0 or less never changes it.
AppearanceRoboto 20, whiteText appearance (see Text appearance below).
TipWrapAt1000Width at which the tip wraps to the next line.
bSetDisplayTipTextManuallyfalseUses the index set with Set Display Tip Text Index.

Loading Widget

SettingDefaultDescription
LoadingIconTypeLIT_CircularThrobberThrobber, Circular Throbber or Image Sequence.
LoadingWidgetTypeLWT_HorizontalText beside the icon (horizontal) or above/below it (vertical).
TransformTranslation(0, 0)Render translation of the icon.
TransformScale(1, 1)Render scale of the icon; a negative value flips it.
TransformPivot(0.5, 0.5)Render transform pivot (normalized).
LoadingText"LOADING"Text shown next to the icon; empty hides it.
bLoadingTextRightPositiontrueHorizontal type: text on the right of the icon.
bLoadingTextTopPositiontrueVertical type: text above the icon.
AppearanceRoboto 32 Bold, whiteLoading text appearance.
ThrobberSettings3 pieces, animate allNumberOfPieces (1-25), bAnimateHorizontally, bAnimateVertically, bAnimateOpacity, piece Image.
CircularThrobberSettings6 pieces, 0.75 s, radius 64NumberOfPieces, Period, Radius, piece Image.
ImageSequenceSettingsscale (1, 1), 0.05 sImages (frames in order), Scale, Interval between frames (0 = every frame), bPlayReverse.
TextAlignmentCenter / CenterAlignment of the loading text.
LoadingIconAlignmentCenter / CenterAlignment of the icon.
Space1Space between text and icon.
bHideLoadingWidgetWhenCompletesfalseHides the loading widget once loading is done.

Loading Complete Text

SettingDefaultDescription
LoadingCompleteTextemptyText shown when loading is done (for example "Press any key to continue").
AppearanceRoboto 24, whiteText appearance.
AlignmentCenter / CenterPosition on screen.
Padding0Text padding.
bFadeInOutAnimtruePulses the text opacity.
AnimationSpeed1Fade speed (0-10).

PSO Precache Progress Widget

SettingDefaultDescription
bShowProgressWidgetfalseShows a progress bar while PSO precompiles are outstanding; it hides itself when they are done.
ProgressText"Compiling Shaders... {Percent}%"Text under the bar; supports {Percent} and {Remaining}; empty shows the bar only.
AppearanceRoboto 18, centeredProgress text appearance.
Styledark background, white fillProgress bar style (background and fill brushes).
BarSize(500, 20)Size of the bar.
AlignmentCenter / BottomPosition on screen.
Padding(0, 0, 0, 60)Padding around the widget.
UpdateInterval0.1Seconds between updates (0 = every frame).

Text appearance and alignment

SettingDefaultDescription
ColorAndOpacityWhiteText colour.
FontRoboto (size per widget)Font, size and typeface.
ShadowOffset(0, 0)Drop shadow offset in pixels.
ShadowColorAndOpacityWhiteShadow colour.
JustificationLeftText justification.
HorizontalAlignmentCenterHorizontal alignment of a widget alignment entry.
VerticalAlignmentCenterVertical alignment of a widget alignment entry.

Layout settings

Classic

A border with the loading widget and the tip, anchored to the bottom or top of the screen.

SettingDefaultDescription
bIsWidgetAtBottomtrueBorder at the bottom (false: top).
bIsLoadingWidgetAtLefttrueLoading widget left of the tip.
Space1Space between loading widget and tip.
TipAlignmentCenter / CenterAlignment of the tip.
BorderHorizontalAlignmentFillHorizontal alignment of the border.
BorderPadding0Padding inside the border.
BorderBackgrounddefault brushBorder background brush.

Center

The loading widget in the middle of the screen; the tip in a border at the bottom or top.

SettingDefaultDescription
bIsTipAtBottomtrueTip border at the bottom (false: top).
TipAlignmentCenter / CenterAlignment of the tip.
BorderHorizontalAlignmentFillHorizontal alignment of the border.
BorderVerticalOffset0Offset from the bottom or top edge.
BorderPadding0Padding inside the border.
BorderBackgrounddefault brushBorder background brush.

Letterbox

Two borders at the top and bottom; the loading widget in one, the tip in the other.

SettingDefaultDescription
bIsLoadingWidgetAtToptrueLoading widget in the top border (false: bottom).
TipAlignmentCenter / CenterAlignment of the tip.
LoadingWidgetAlignmentCenter / CenterAlignment of the loading widget.
TopBorderHorizontalAlignmentFillHorizontal alignment of the top border.
BottomBorderHorizontalAlignmentFillHorizontal alignment of the bottom border.
TopBorderPadding0Padding inside the top border.
BottomBorderPadding0Padding inside the bottom border.
TopBorderBackgrounddefault brushTop border brush.
BottomBorderBackgrounddefault brushBottom border brush.

Sidebar

One vertical border on the left or right, suited to long tips and story text.

SettingDefaultDescription
bIsWidgetAtRighttrueBorder on the right (false: left).
bIsLoadingWidgetAtToptrueLoading widget above the tip.
Space1Space between loading widget and tip.
VerticalAlignmentCenterVertical alignment of the widget column.
LoadingWidgetAlignmentCenter / CenterAlignment of the loading widget.
TipAlignmentCenter / CenterAlignment of the tip.
BorderVerticalAlignmentFillVertical alignment of the border.
BorderHorizontalOffset0Offset from the left or right edge.
BorderPadding0Padding inside the border.
BorderBackgrounddefault brushBorder background brush.

Dual Sidebar

Two vertical borders; the loading widget on one side, the tip on the other.

SettingDefaultDescription
bIsLoadingWidgetAtRighttrueLoading widget in the right border (false: left).
LeftVerticalAlignmentCenterVertical alignment of the left content.
RightVerticalAlignmentCenterVertical alignment of the right content.
LeftBorderVerticalAlignmentFillVertical alignment of the left border.
RightBorderVerticalAlignmentFillVertical alignment of the right border.
LeftBorderPadding0Padding inside the left border.
RightBorderPadding0Padding inside the right border.
LeftBorderBackgrounddefault brushLeft border brush.
RightBorderBackgrounddefault brushRight border brush.

Content

Sample textures under /LoadScreenPro/Default (in the Content Browser, open the LoadScreenPro plugin content folder; enable Show Plugin Content in the view options if it is hidden). Use them directly or as a template for your own art.

AssetTypeDescription
Default/Icon/Texture2D11 small white icons for throbber pieces: icon-5-point-star, icon-8-point-star, icon-cat-print, icon-circle, icon-flower-01 to icon-flower-04, icon-heart-card, icon-seal, icon-sheriffs-badge.
Default/LoadingImages/LoadingIcon01_*Texture2D8-frame spinner image sequence (LoadingIcon01_1 to LoadingIcon01_8).
Default/LoadingImages/LoadingIcon02_*Texture2D12-frame spinner image sequence (LoadingIcon02_1 to LoadingIcon02_12).
Default/LoadingImages/LoadingIcon03_*Texture2D12-frame spinner image sequence (LoadingIcon03_1 to LoadingIcon03_12).
Default/StickFigure/IdleImages/Texture2D16-frame idle stick figure image sequence (StickFigure_Idle-0 to StickFigure_Idle-15).
Default/StickFigure/RunImages/Texture2D16-frame running stick figure image sequence (StickFigure_Run-0 to StickFigure_Run-15).
Using an image sequenceSet LoadingIconType to Image Sequence and add the frames to Image Sequence Settings > Images in numeric order (0, 1, 2 ... 15). Adjust Interval for speed.

Packaging

  • The module loads before textures are found through normal references. Add the folders that hold your loading-screen textures to Project Settings > Packaging > Additional Asset Directories to Cook (for example /Game/LoadingScreen, or /LoadScreenPro/Default for the samples).
  • Movies are read as loose files: add Movies to Additional Non-Asset Directories To Copy so they are not packed into the .pak file.
  • For loading-screen textures, set Texture Group to UI and Compression Settings to UserInterface2D.

Troubleshooting

SymptomCause and fix
No loading screen in Play-In-EditorThe engine movie player is disabled in PIE. Test with Play > Standalone Game or a packaged build.
Background or icon images missing in a packaged buildThe textures were not cooked. Add their folder to Additional Asset Directories to Cook (see Packaging).
Startup movie does not playThe file must be in Content/Movies, the name in MoviePaths must have no extension, and Movies must be in Additional Non-Asset Directories To Copy.
The screen flashes and disappearsThe level loads very quickly. Set MinimumLoadingScreenDisplayTime to the number of seconds the screen should stay up.
The screen never closesbWaitForManualStop is enabled. Press a key (minimum time -1) or call Stop Loading Screen with bAllowEngineTick enabled. With the PSO wait enabled, set a PSOPrecacheMaxWaitTime.
Only the movie is shown, no widgetsbShowWidgetOverlay is off (default for the startup screen), or bAllowInEarlyStartup is on, which cannot show widgets; a warning in LogLoadScreenPro confirms the second case.
No loading screen in a Standalone or development buildThe game was started with the -NoLoadingScreen command-line switch, which disables the engine movie player in non-shipping builds. Remove the switch.
Another loading screen appears insteadAnother plugin or game code also sets up the movie player. Disable it; only one system can own the loading screen.
Chosen background or tip is ignoredEnable bSetDisplayBackgroundManually / bSetDisplayTipTextManually and pass a valid index; invalid indices fall back to a random entry.

Credits

© 2026 Alpha XP — alphaxp.net · Support: support@alphaxp.net. Built and verified for Unreal Engine 4.27 and 5.8.