Creating a loading screen progress bar with blueprints?

Title says it all. Is it possible? I tried researching but came with nothing.

If it is, how?

I’m not sure if there is a “wait until everything that needs to be loaded at start is complete” sort of node or smaller system but what you can do is that right after you run an open level you can make a widget with some image,text, basically whatever you want to have that UMG can provide and also have a progress bar (if it can be connected to some sort of load progress) or use the throbber / circular throbber (havent looked into these myself) and just wait x-amount of time before removing said widget and allowing the player control of it’s character.

A throbber would be a good idea.

Is it possible to play a 1080p video as a loading screen? Or should i just use a full image background and have some animated gif as a circular throbber. I dont really know about the formats and how things work in this engine.

Hmm, to me it seems rather un-fitting to use a video in a loading screen, UE4 Unreal Motion Graphics does have support for using images, spacers and whatnot and even already has a ready to use throbber.
I would suggest reading https://docs.unrealengine.com/latest/INT/Engine/UMG/UserGuide/WidgetTypeReference/index.html or why not jump into the engine, create a “User Interface” -> “Widget Blueprint” and start testing it, note though that UMG is very young and as you create more complex systems some support might be missing.

Thanks for the answers!

One question bugs me tho before i really start learning UMG. And its about an in-game main menu. I want to create a 2D main menu, without any 3d rendering, just like in a game like cs go or old rainbow six games, and an other alternative is to have a video playing in background. Is the only way to use an empty level and just fill the user’s view with the stuff that i make? Of course there would be a soundtrack in the background. I hope i was clear!:slight_smile:

What I have done so far is just like you said, I´ve made en empty level and just populated it with a UMG “main menu widget” and from what I know that is the simplest solution, but it sure is possible that it is not the best. I would love for people that have shipped titles and/or high knowledge of UE4 to comment on things like this and share their experiences :slight_smile:

This is the simplest solution, yes. I’m doing something similar, and that’s exactly how I’ve got it set up. What I don’t know, though, is how to get the actual proportion of loaded vs. needed assets to populate the progress bar. It’s easy enough to pipe a dummy float from a timeline into the progress bar, but that obviously doesn’t address the real problem.

http://blueprintue.com/view/hiQNTrNH/

As for playing video, I’d take a look at this: Media Framework in Unreal Engine | Unreal Engine 5.3 Documentation

Are you using level streaming / C++ futures to load the level? If not, and you’re using “Open Level” nodes to open levels, there’s no way to see what the progress on it is. It loads on the main thread to boot, so even if there were a variable to check, there’d be no way for the widget to actually update since all of the resources would be poured into loading the level.

Level streaming is the easiest way to go about this which even has a “Is Level Loaded” boolean you can check, but still doesn’t offer a way of checking the progress of the level loading. At the very least though, it doesn’t block the main thread so things like video processing can actually run.

I’m using OpenLevel nodes for the moment, just to roughly block out flow from menu to menu to game.

Seems like loading progress should be easier to expose, though, since that feedback is sort of important for avoiding panicky players.

I agree, it’s something pretty basic for modern games to include. But then again we didn’t have a robust UI system until 6 months ago.

There’s a listing on the documentation trello about loading screens. Hopefully that’ll have some useful info when it drops. I’ve been taking an inventory of every object in a level and having it register itself with my widget On Begin Play as it streams in. Then I divide number of registered objects by total number of objects and use that as the progress bar’s percentage.

Clever girl.

That seems a little circuitous, though. Here’s hoping something comes along with 4.8 and the open world sexiness.