Animated loading screen and UMG.

Right, don’t worry. You’re so close!

If you absolutely CAN’T use a level streaming option and have to use the black background approach. Just create a black plane somewhere in your map your player doesn’t see and put a camera there. When the player touches the level complete, use this:

http://blueprintue.com/view/JMGETrem/

(Just copy it into your project) <PlayerController should be plugged into Target and New View should be the camera facing the black background>.

If you want it to animate, you’re out of luck without level streaming. If you did it via level streaming, you could put a run cycle of your main character (As a Paper2D flipbook animation) slap bang in the middle to make a nice transition!

Something you’ve just gotta simplify your thinking :slight_smile:

Edit: Better yet, when the player gets the level complete, Make a matinee with a director and fade track and fade to black, THEN transition to the other camera, for that nice fade-out look :slight_smile:

Another case where simplifying will come in handy :wink: Let’s take a time-warp back to my first, poorly written book:

If you’re using level streaming: Create a BOOL which when true will draw the movietexture on the screen. When it’s true it’s on there, when it’s false it isn’t. When the next level is loaded and visible… You know what to do! Simply set the bool to false! :wink:

If not using LevelStreaming; This is where it gets a tiny bit harder; You’d actually have to put your animated material into a HUD class (This is the only way I’ve gotten it to work thus far) and do the same as above. For some reason, it’s super-hard to get it to work with UMG .etc but with a HUD class? It gobbles it up all happy.

If you want to know about this method, checking out the loading screen in the first book I wrote. It’s poorly written but the information should still be good!

Thank you so much for everything but i think your suggestions are the reason i want them to make UMG /blueprints to load on a different thread.
I can already create a black background or a static image. I make it into a BP, spawn it from a scene component from my main character (he is centered to the screen) and then when the new level loads i respawn it and then i destroy it.
Matinee fade as i mention in my link above does not work for paper2d projects.
So you are essentially telling me that i cannot animate anything without using level streaming? I know that!! lol
Love you man! You are awesome and you helped me a ton to understand how the HUD works with your book!

Cheers!

It’s not irrational - but blueprints are not the entire engine and they shouldn’t be expected to meet all needs out of the box. Blueprints are first and foremost a way to empower more people on the team to contribute to the game in a way that previously was the exclusive domain of programmers. We’ve made them powerful enough to do a great deal of stuff, but not everything is safe or efficient to do in blueprints. They are for the most part associated with a world, only recently have we begun to expose out of world classes to blueprints (Game Instance). Over time we’re trying to expose more things to blueprints when it makes sense, but sometimes you’ve gota write some C++.

Loading is just one of those things - when it’s happening, the core game loop isn’t really running, so much more care must be taken with what code is run at that time. Especially when things like multiple threads are involved. We plan to have a simpler loading screen system, but it will definitely not be a solution that solves everyone’s needs for a loading screen out of the box. Maybe the system we make just allows a movie, or a texture, some stock progress bar, or spinning icon. But if you want people to be able to play pac-man or take controller input and spin a model around while they wait, or display some tips, you’re definitely going to need to write some C++, unless you use the level streaming system.

btw you can do animated loading screen in UE4/UE3 without a problem it’s even possible in mobile (example: Hellraid: The Escape) just use streaming which is really simple. On persistent place your loading screen with animated objects and UMG and then just stream in gameplay levels, when they are streamed open game or create Press Any Key To Continue.

Hint: Level streaming is the way forward, we’re all saying it :wink:

My thoughts exactly!
This is what i said in my first post . QUOTE: You create something that works for 90% of people,post a tutorial and if someone wants to make something out of the norm,then he can do it by himself since he has the skill,budget and manpower to do it.

Any ETA for this awesome new feature??

Not until November this year! Namco still own the patent of playing mini-games during load times (Which I believe runs out in November), Doing this in your project pre-november could possibly get you in some legal hot water :stuck_out_tongue:

Nope - the resources that would work on it are already loaded up with work :slight_smile:

…And now?

November?! I’m so happy it’s so soon! I just hope they don’t get lucky with a tiny “improvement” and end up owning it for another 20 years :stuck_out_tongue:

any progress info?

No progress has been made on this; it’s not on anyone’s plate to improve ATM.

My god our patent system is beyond stupid. I will avoid anything these people do for creating such a stupid patent.

Yes please!

I would love a Tutorial :3 right now I having headaches only with this

Hey guys, is there any progress on the feature?

I’ve tried using LoadPackageAsync function like this:



LoadPackageAsync(TEXT("/Game/SomeMap"), FLoadPackageAsyncDelegate::CreateLambda(](const FName& packageName, UPackage* package, EAsyncLoadingResult::Type result) {

			UWorld* world = nullptr;
			for (TObjectIterator<AActor> obj; obj; ++obj)
				if (obj->IsActorInitialized()) { world = obj->GetWorld(); break; }

			if (world->WorldType == EWorldType::PIE) // to prevent crush in PIE 
				package->GetOutermost()->PackageFlags |= PKG_PlayInEditor;

			UGameplayStatics::OpenLevel(world, "SomeMap");
		}));


It seems to be async-loading the map, but when calling OpenLevel it won’t use the loaded package but load it again, only in blocking mode this time. Am I doing something wrong, or this feature is still not implemented?

I’ve looked through the sources briefly and it seems that the default map loading logic checks if the requested map is already loaded in memory: https://.com/EpicGames/UnrealEngine/blob/release/Engine/Source/Runtime/Engine/Private/UnrealEngine.cpp#L9545

But somehow it’s not detecting previously loaded map package in my case… Could it be that its being immediately destroyed by the GC? Or maybe I have to set a specific name for the loaded package so it could be found by the FindPackage function?

I could not get the Gethub to work, tried everything, will not work with the BP “Open Level” node.

Are you saying all you have to do is create a material and put it into the HUD and it will act as a animated loading screen without having to use streaming levels?

“If not using LevelStreaming; This is where it gets a tiny bit harder; You’d actually have to put your animated material into a HUD class (This is the only way I’ve gotten it to work thus far) and do the same as above. For some reason, it’s super-hard to get it to work with UMG .etc but with a HUD class? It gobbles it up all happy.”

I have also seen people use animated GIF’s in menus. Not “real animation” but it can work if your subject is simple. :slight_smile: