truong-bui / AsyncLoadingScreen

Async Loading Screen is a free and open-source plugin for Unreal Engine. Async Loading Screen allows you to easily configure a Loading Screen System in the project settings, and automatically add a Loading Screen whenever you open a new level, without Level Streaming.
https://www.unrealengine.com/marketplace/en-US/product/async-loading-screen
MIT License
776 stars 98 forks source link
ue4 ue4-plugin unreal-engine unreal-engine-plugin unrealengine

Contents

Trailer

Unreal Engine Async Loading Screen Plugin

About

Loading screens aren't trivial in general, especially in Unreal Engine. And this makes a lot of UE newcomers are confused at first. Due to User Widget is destroyed at level transition, and level loading runs on the main thread, it blocks any other game activities until it's completed. That's why you need to use Level Streaming for loading screens otherwise your widget blueprint will not work. You have to manually control which object is loaded/unloaded, you can't use different Game Mode, Player Controller for each level, and sometimes there's still occasional freezing.

That said, you may need to change your game logic to fit with Level Streaming mechanic and it requires a lot of works to achieve a simple thing: Add a Loading Screen. To create a custom loading screen without Level Streaming, you have to do it in Unreal C++. However, this is a hard task for artists and designers, even for developers who are not familiar with the Slate framework and engine module code. Async Loading Screen plug-in comes to a savior.

Async Loading Screen allows you to easily configure a Loading Screen System in the project settings, and automatically add a Loading Screen whenever you open a new level. Async Loading Screen also comes with pre-design UI layouts and default icons that make it easy to custom your loading screen in a few minutes (less than 5 minutes I swear).

How it works

Async Loading Screen uses MoviePlayer to play a movie at level transition, on a different thread than game thread. MoviePlayer is not only playing movie files but also can display a Slate widget on top of the movie. We use this widget for the loading screen.

MoviePlayer is registered to PreLoadMap and PostLoadMapWithWorld delegates so it will be called and shut down automatically by the engine whenever you open a new level.

Features

Changelog

Version 1.5.0 (6/4/2023)

image image

Version 1.4.0 (25/1/2023)

ALS-ShowHideLoadingScreen

Version 1.3.0 (29/08.2021)

async-loading-screen-01

Show Loading Complete Text Settings: async-loading-screen-02

Example: async-loading-screen-03


Version 1.1 (14/09/2020):

Requirements

Async Loading Screen plug-in requires Visual Studio and a C++ code project. If your project is blueprint based then you will need to convert it to C++ project otherwise you cannot package your game with code plug-in. It doesn't require c++ project anymore.

Installation

:warning: After installed Async Loading Screen plugin, the "Project/Movies" setting won't work anymore. You need to set up your startup movies in the 'Startup Loading Screen' section of the plugin's setting.

async-loading-screen-screenshot-01

Architecture

Async Loading Screen has four main components: Background, Loading Widget, Tip Widget, and Layout.

Background

The background is a static image, you can add many images as you want, it will be displayed randomly (unless Set Display Background Manually option is enabled). Leave it empty if you just want to show a movie instead of a static image.

background-settings

Tip Widget

Just some useful texts that will be shown randomly (unless Set Display Tip Text Manually option is enabled) for players to have something to look at while waiting for a new level loaded.

tip-widget-settings

Loading Widget

This is the most important component of the plug-in, Loading Widget lets players know that the game is still running and not freezing.

Loading Widget has two parts: Loading Icon and Loading Text. The Loading Text is just a text shown beside the Loading Icon, we mostly care about the Loading Icon. Async Loading Screen supports 3 types of Loading Icon: Throbber, Circular Throbber, and Image Sequence.

loading-widget-settings

Loading Icon

throbber-settings

throbber-loading-01 throbber-loading-02


circular-throbber-settings

circular-throbber-loading-01 circular-throbber-loading-02


image-sequence-settings

image-sequence-loading-03 image-sequence-loading-01 image-sequence-loading-02


Layout

This is the way Async Loading Screen widgets are arranged on the screen. In version 1.0 Async Loading Screen supports 5 different Layouts: Classic, Center, Letterbox, Sidebar, and Dual Sidebar.

layout-settings


classic-layout-01


center-layout-01


letterbox-layout-01


sidebar-layout-01


dual-sidebar-layout-01


Tutorial

In this tutorial, I will use a blank C++ project with UE version 4.25. But you can freely integrate Async Loading Screen plugin into your existing projects without problems. You should install the plugin following Installation steps above.

1) Create Testing Levels and Blueprints

tutorial-02

tutorial-03

tutorial-04

tutorial-05

tutorial-06

tutorial-07

tutorial-08

tutorial-09

Note that to see the plugin is actually working, you need to play as Standalone Game or Quick Launch. Play in Editor (PIE) will not work due to different level managing of Play in Editor and packaged game:

image

If you play Standalone Game or Launch the game, you will see a black screen with a white panel showing up very quickly. We'll need a little setting up to make the loading screen look better.


2) Gathering images and movies

You can use your own assets instead but for this tutorial, I'll use Unreal Engine 5 Wallpapers Desktop from this post and UE4 Startup Video Files from this page. Here are links download for you:

tutorial-11

tutorial-12


3) Setup Startup Movies

Now go to "Game/Async Loading Screen" setting in the Project Settings and open "Startup Loading Screen" section. This Startup Loading Screen only shows once when the player first opens the game so usually, you don't want to show a loading screen here. Instead, you'll want to show a UE4 logo intro movie, your studio logo movie, your sponsor 1 logo movie, your sponsor 2 logo movie, or some weird shit movies, depending on you.

Here is the Startup Loading Screen setting:

tutorial-13

Click play Standalone Game or Launch button, you will see UE4 logo movie show up here.


4) Configure Default Loading Screen setting

Open "Default Loading Screen" setting, here we actually set up a loading screen for our game. You can leave most of options default but for testing purpose, we'll change some options.

Here is Default Loading Screen setting:

tutorial-14

4.1) Default Loading Screen - Background setting

Open "Background" setting in the Default Loading Screen section. Add your background images to the Images array. You can leave other options default:

tutorial-15

4.2) Default Loading Screen - Tip Widget setting

Open "Tip Widget" setting in the Default Loading Screen. Add some useful texts, you can change text's appearance like color, font, shadow effect here:

tutorial-16

4.3) Default Loading Screen - Loading Widget setting

Open "Loading Widget" setting in the Default Loading Screen, here we will custom our loading icon. If you open AsyncLoadingScreen Content folder, you can see there are a lot of default loading images I had made. We'll use those default images in this tutorial.

tutorial-17

You can leave other options default.

tutorial-18


5) Configure Classic Layout setting

Because we already chose the Classic layout in previous step so we will configure the Classic layout and ignore other layouts. Open "Classic" setting in Layout category and change following options:

You can leave other options default.

tutorial-19


Alright! Now you can click play Standalone Game or Launch button to see your loading screen.

tutorial-20

6) Image Sequence Settings

Async Loading Screen also supports custom loading icon using Image Sequence. Open "Loading Widget" and change following options:

You can leave other options default.

tutorial-21

Click play or Launch button and you'll see the Mannequin is running as a loading icon:

tutorial-22


7) Set proper background and tip for each level:

In updated version 1.1, Async Loading Screen supports display specific background/tip/movie for each level as you want. In this tutorial we'll show proper background and tip for Level_1 and Level_2:


Congratulation! We have finished the tutorial. You should try other layouts and settings to see which is fit for your game.

Showcases

Colors:Zero


Elven Warmaiden


logic-keypad


witchtastic


cursed-spire-async-loading-screen


pumpkin-jack


cions-of-vega


BrightSeeker_Scr_(4)


If you're using Async Loading Screen plugin in your game and would like to showcase here, shoot me an email about your game's info, including screenshots(gif/png/jpeg/video) of your in-game loading screen.

Donate

If Async Loading Screen is useful for you or your team, you can buy me a coffee to support this project.

License

Async Loading Screen plug-in is licensed under the MIT License.

Acknowledgment

Async Loading Screen plug-in is inspired from Loading Screen plug-in by Nick Darnell.