# Seamless, Proper Loading Screens! \[Play Movies, Audio & Animated Widgets!\]

**URL:** <https://forums.unrealengine.com/t/seamless-proper-loading-screens-play-movies-audio-animated-widgets/50993>\
**Category:** Programming & Scripting\
**Tags:** unreal-engine\
**Created:** [December 28, 2015, 4:56pm UTC](https://forums.unrealengine.com/t/seamless-proper-loading-screens-play-movies-audio-animated-widgets/50993 "2015-12-28T16:56:46Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jambax](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/jambax/32/904177_2.png) [@Jambax](https://forums.unrealengine.com/u/Jambax)\
**Post date:** [December 28, 2015, 4:56pm UTC](https://forums.unrealengine.com/t/seamless-proper-loading-screens-play-movies-audio-animated-widgets/50993/1 "2015-12-28T16:56:46Z")

</div>

After being somewhat frustrated with the loading screen solutions I’ve seen people follow so far, I’ve decided to share how I handle Loading Screens in my Hovertank Game.

IMO I think this is personally the best (and most sensible) way to go about it. Current examples require all sorts of workarounds to implement such as loading into different levels, using streaming for the entire project etc - completely defeating the purpose of a loading screen in the first place. Less than 20 lines of code lets you avoid all of this.

- No temporary maps or streaming level nonsense!
- No additional calls, nodes or setup required, engine code automatically handles all transitions and kicks in when a map is triggered to load. All you have to do is call Open Level, or Join Session etc…
- No conflicts in PIE.
- Can easily play Movie Files, Audio Files & Animated widgets
- No Garbage Collection / reference issues.
- MoviePlayer is supported on all major platforms
- Integrates seamlessly with an existing project.

There’s a very minimal amount of C++ to set this up ( **very** minimal), and I’ve pasted full source that you can easily copy-paste into an existing project.

> **[A new, community-hosted Unreal Engine Wiki](https://forums.unrealengine.com/t/a-new-community-hosted-unreal-engine-wiki/141494)**
>
> After over a year in maintenance mode, the official Unreal Engine Wiki is now permanently offline. These resources now live on a new community-run Unreal Engine Community Wiki — ue4community.wiki! You will be able to find content from the official...

---

<div class="post-metadata">

**Author:** ![eXi](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/exi/32/906583_2.png) [@eXi](https://forums.unrealengine.com/u/eXi)\
**Post date:** [December 28, 2015, 5:06pm UTC](https://forums.unrealengine.com/t/seamless-proper-loading-screens-play-movies-audio-animated-widgets/50993/2 "2015-12-28T17:06:29Z")

</div>

Thanks for sharing this! (:

---

<div class="post-metadata">

**Author:** ![zerofiftyone](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@zerofiftyone](https://forums.unrealengine.com/u/zerofiftyone)\
**Post date:** [December 28, 2015, 5:14pm UTC](https://forums.unrealengine.com/t/seamless-proper-loading-screens-play-movies-audio-animated-widgets/50993/3 "2015-12-28T17:14:05Z")

</div>

Woo! It’s a Christmas miracle! Thanks for this 🙂

---

<div class="post-metadata">

**Author:** ![anonymous\_user\_29d468e51](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@anonymous\_user\_29d468e51](https://forums.unrealengine.com/u/anonymous_user_29d468e51)\
**Post date:** [December 28, 2015, 6:09pm UTC](https://forums.unrealengine.com/t/seamless-proper-loading-screens-play-movies-audio-animated-widgets/50993/4 "2015-12-28T18:09:18Z")

</div>

Thank you very much.

---

<div class="post-metadata">

**Author:** ![Geodav](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/geodav/32/1008648_2.png) [@Geodav](https://forums.unrealengine.com/u/Geodav)\
**Post date:** [December 28, 2015, 6:20pm UTC](https://forums.unrealengine.com/t/seamless-proper-loading-screens-play-movies-audio-animated-widgets/50993/5 "2015-12-28T18:20:32Z")

</div>

ok bookmarked for future referance

quick question though, see-ing as my project uses other(plug-in/steam) for the gameinstance how would i add that together with your fix

---

<div class="post-metadata">

**Author:** ![Zarkopafilis](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Zarkopafilis](https://forums.unrealengine.com/u/Zarkopafilis)\
**Post date:** [December 28, 2015, 9:15pm UTC](https://forums.unrealengine.com/t/seamless-proper-loading-screens-play-movies-audio-animated-widgets/50993/6 "2015-12-28T21:15:36Z")

</div>

Bookmarked as well. Such a mechanic should be built in the engine.

---

<div class="post-metadata">

**Author:** ![Jambax](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/jambax/32/904177_2.png) [@Jambax](https://forums.unrealengine.com/u/Jambax)\
**Post date:** [December 30, 2015, 12:41am UTC](https://forums.unrealengine.com/t/seamless-proper-loading-screens-play-movies-audio-animated-widgets/50993/7 "2015-12-30T00:41:07Z")

</div>

> [@Geodav;444387](#):
>
> ok bookmarked for future referance
> 
> quick question though, see-ing as my project uses other(plug-in/steam) for the gameinstance how would i add that together with your fix

The code in my Game Instance is absolutely minimal, you should be able to copy it into your custom game instance and everything will work as before 🙂

---

<div class="post-metadata">

**Author:** ![PeterLNewton](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@PeterLNewton](https://forums.unrealengine.com/u/PeterLNewton)\
**Post date:** [December 30, 2015, 12:53am UTC](https://forums.unrealengine.com/t/seamless-proper-loading-screens-play-movies-audio-animated-widgets/50993/9 "2015-12-30T00:53:20Z")

</div>

Nice share TheJamsh, I actually have a Blueprint equivalent – I had to do this for something I released last year requiring multiple levels / loading screens.

Its not as straight forward for obvious reasons, but achieves similar results.

> **[Create a Loading Screen While Level Loads](https://forums.unrealengine.com/questions/352954/loading-screen-while-level-loads.html)**
>
> So I am currently developing a level for my game which is loaded from the main menu which is on a separate level, Right now when I click the button it can take up to 5 seconds to load the level completed and until then the user is just stuck staring...

> [@](#):
>
> Hi Jamiex304,
> 
> Depending if your menu level is interactive. Such as if it has actors which are used as menu props. Then you want to be able to unload that level, and load another. Well! To do this is not entirely crazy.
> 
> You do this with Level Streaming. The way level streaming works is by having one persistent level, and other levels which you stream in at even given moment. So this persistent level will be the the “Transition” level. All it is responsible for is loading, and unloading levels.
> 
> There is a tutorial on level streaming here.
> 
> [A new, community-hosted Unreal Engine Wiki - Announcements - Epic Developer Community Forums](https://wiki.unrealengine.com/Blueprint_Manual_Level_Streaming)
> 
> So what you essentially do is on loading the persistent Transition level first. Then the persistent level is your constant state. Actors in this level will always be active, allowing your full control while other levels are interchanged. Next, you load your menu level. Then the player does whatever, and tells the menu it wants to load Deathmatch. Menu level now communicates to transition level, open Deathmatch. Now put up some video animations, and keep the main menu up. Keep in mind – while Deathmatch is streamed into the Transition level. Everything on the menu is still going. You can hide it or update it after Deathmatch is finished. Then jump in Deathmatch, unload the Menu. Done!
> 
> Doing it that way, you never once pause the state of the game preventing any unwanted waiting or unresponsiveness.
> 
> Best,
> 
> Peter

---

<div class="post-metadata">

**Author:** ![ProlixLegend](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@ProlixLegend](https://forums.unrealengine.com/u/ProlixLegend)\
**Post date:** [December 30, 2015, 9:53pm UTC](https://forums.unrealengine.com/t/seamless-proper-loading-screens-play-movies-audio-animated-widgets/50993/10 "2015-12-30T21:53:30Z")

</div>

Thanks for sharing with the community!

---

<div class="post-metadata">

**Author:** ![sleepingdragon](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@sleepingdragon](https://forums.unrealengine.com/u/sleepingdragon)\
**Post date:** [December 31, 2015, 1:07am UTC](https://forums.unrealengine.com/t/seamless-proper-loading-screens-play-movies-audio-animated-widgets/50993/11 "2015-12-31T01:07:58Z")

</div>

thanks share

---

<div class="post-metadata">

**Author:** ![Jambax](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/jambax/32/904177_2.png) [@Jambax](https://forums.unrealengine.com/u/Jambax)\
**Post date:** [December 31, 2015, 1:30am UTC](https://forums.unrealengine.com/t/seamless-proper-loading-screens-play-movies-audio-animated-widgets/50993/12 "2015-12-31T01:30:42Z")

</div>

Have updated the OP to contain a bit more information

---

<div class="post-metadata">

**Author:** ![Cultrarius](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Cultrarius](https://forums.unrealengine.com/u/Cultrarius)\
**Post date:** [January 7, 2016, 2:33am UTC](https://forums.unrealengine.com/t/seamless-proper-loading-screens-play-movies-audio-animated-widgets/50993/13 "2016-01-07T02:33:47Z")

</div>

Thank you, this is incredibly helpful!

---

<div class="post-metadata">

**Author:** ![Elvince](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Elvince](https://forums.unrealengine.com/u/Elvince)\
**Post date:** [January 7, 2016, 11:30am UTC](https://forums.unrealengine.com/t/seamless-proper-loading-screens-play-movies-audio-animated-widgets/50993/14 "2016-01-07T11:30:21Z")

</div>

Thanks for the sharing.

What happen in case of SeamLess Travel? Is it drawing your loading screen?

---

<div class="post-metadata">

**Author:** ![anonymous\_user\_10f3a621](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@anonymous\_user\_10f3a621](https://forums.unrealengine.com/u/anonymous_user_10f3a621)\
**Post date:** [January 7, 2016, 2:40pm UTC](https://forums.unrealengine.com/t/seamless-proper-loading-screens-play-movies-audio-animated-widgets/50993/15 "2016-01-07T14:40:56Z")

</div>

Thank you!!

---

<div class="post-metadata">

**Author:** ![Buddy\_Arief](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Buddy\_Arief](https://forums.unrealengine.com/u/Buddy_Arief)\
**Post date:** [January 8, 2016, 8:33am UTC](https://forums.unrealengine.com/t/seamless-proper-loading-screens-play-movies-audio-animated-widgets/50993/16 "2016-01-08T08:33:41Z")

</div>

Great tutorial man, thanks for sharing 😃

---

<div class="post-metadata">

**Author:** ![Amsirahc](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Amsirahc](https://forums.unrealengine.com/u/Amsirahc)\
**Post date:** [January 8, 2016, 4:08pm UTC](https://forums.unrealengine.com/t/seamless-proper-loading-screens-play-movies-audio-animated-widgets/50993/17 "2016-01-08T16:08:54Z")

</div>

Wow, thanks for sharing! I’ve been looking at several different ways of doing this, and this is by far the best method I’ve seen.

---

<div class="post-metadata">

**Author:** ![anonymous\_user\_10f3a621](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@anonymous\_user\_10f3a621](https://forums.unrealengine.com/u/anonymous_user_10f3a621)\
**Post date:** [January 11, 2016, 4:30pm UTC](https://forums.unrealengine.com/t/seamless-proper-loading-screens-play-movies-audio-animated-widgets/50993/18 "2016-01-11T16:30:36Z")

</div>

I have this working and it’s great! One thing to note is that it does not seem to work in PIE - so I actually had it working long before I knew I had it working… 🙂 As long as you run in standalone all is groovy. Many thanks to the author!!

---

<div class="post-metadata">

**Author:** ![anonymous\_user\_10f3a621](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@anonymous\_user\_10f3a621](https://forums.unrealengine.com/u/anonymous_user_10f3a621)\
**Post date:** [January 11, 2016, 4:36pm UTC](https://forums.unrealengine.com/t/seamless-proper-loading-screens-play-movies-audio-animated-widgets/50993/19 "2016-01-11T16:36:47Z")

</div>

I do have one question though. In the FLoadingScreenAttributes struct, it says that the WidgetLoadingScreen can be used to display a custom widget during loading. Can this be used with a UMG widget or is this a Slate widget? If it can be used with UMG can you provide info on how this is done? – Thanks, .

---

<div class="post-metadata">

**Author:** ![Druha](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Druha](https://forums.unrealengine.com/u/Druha)\
**Post date:** [January 12, 2016, 3:55pm UTC](https://forums.unrealengine.com/t/seamless-proper-loading-screens-play-movies-audio-animated-widgets/50993/21 "2016-01-12T15:55:32Z")

</div>

**antsonthetree** , Yes, this can be used with UMG widget:

```auto

UUserWidget* LoadingWidget; // Pointer to your UMG widget

FLoadingScreenAttributes LoadingScreen;
LoadingScreen.WidgetLoadingScreen = LoadingWidget->TakeWidget();

```

---

<div class="post-metadata">

**Author:** ![Beregron](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Beregron](https://forums.unrealengine.com/u/Beregron)\
**Post date:** [January 12, 2016, 8:30pm UTC](https://forums.unrealengine.com/t/seamless-proper-loading-screens-play-movies-audio-animated-widgets/50993/24 "2016-01-12T20:30:55Z")

</div>

Thanks for sharing this.

But i have no clue abaout C++. 8 years ago a coded in C (or LIITE-C), but i forgot all. Your WIKI is good, but i don’t know, in what files i have to put that code. Can you explain this with Little more Detail please? Thank you.

[Next page](https://forums.unrealengine.com/t/seamless-proper-loading-screens-play-movies-audio-animated-widgets/50993.md?page=2)
