Feels kind of weird to post on this forum after posting such a long while on the epicgames forum. Anyways. I’ll get to the point.
I am content developer of a game called Renegade-X () which is made in UDK. We’d like to implement custom loading screens for that game, it is relatively easy to just use 1 generic loading screen for everything BUT, that’s not what we’re after.
We’d like to implement custom loading screen for each map individually. So when the map Islands comes up, the Islands loading screen should pop up, when the map Walls comes up, the Walls loading screen should kick in… etc… etc…
As of now, I’ve spent a couple of hours digging the interwebs for information on how to achieve such an effect. Unfortunately I could not find anything that suited my needs.
Is there anyone here who can tell me how I should approach this issue or maybe even solve it?
Thanks in advance.
you need your loading screens to be made entirely in Canvas and not use bink movies at all.
beware, if you use Canvas loadingscreens it means they cannot be animated. they will only get drawn for one frame and then the rendering gets pretty much frozen. the only thing that is made to render/play continuously and autonomously are bink movies.
first you need to ensure your DefaultEngine has no LoadMapMovies assigned
check out the UTGameViewportClient class, the DrawTransition function. there it checks the map name (and other things) and tells it do act accordingly. you’d be drawing your Canvas loadscreen in that same function.
you use your regular animated bink movie as “background”, and then draw map-specific text on top, also in your GameViewportClass, in the DrawTransition function.
you overlay text with class’Engine’.static.AddOverlay(), which yes, only allows you to draw text.
and no, you cannot overlay a semi-transparent bink movie on top of a canvas-drawn loadingscreen (tried it)
As an update to this, I came up with a really hacky way to incorporate this into RenX. Since others may find this useful, I’ve tossed the source for the main portion onto GitHub here.
To make use of this:
Change ‘frontend_level_name’ to whatever your FrontEnd map is in the code above. Make sure you look at ‘movie_filename’ as well.
Compile it.
Copy the .dll to the “UserCode” directory
DLLBind the ‘SetStartupMovie’ function, as done below:
Have a class extend the viewport client, and implement something similar to the following:
Ensure that you don’t have any loading movies marked as ‘AlwaysLoaded’ in the config
Ensure that you only have one LoadMapMovies listed in the config (by default, the application linked uses “UDKFrontEnd.udk_loading”)
Ensure that your movie specified in “LoadMapMovies” isn’t in also in “StartupMovies”
Add movies to the “Movies” directory, with the following naming scheme: “LoadingScreen_{MAP NAME}.bik”
Note: For this to work, users must have read/write permissions in the Movies folder; otherwise, it’ll just use your default movie.
as it’s a canvas, you add a material or draw a texture, so the supported ‘image types’ are just unreal texture assets as you get them inside the editor (no linking of external files)
like I said, the rendering gets frozen. even if you make an animated material, a flipbook or anything else you can come up, it will show you the first frame and freeze. so again, no animation is possible with this method.
: the method no. 1 that I described is pretty much that
he mentions this: “I havent checked if Canvas can draw materials. If they can then draw animated materials.(hinthint bik movies)”
I did check, and it can’t
also his code doesn’t compile. at one point I added a comment with the corrected part but his blog needs manual comment moderation and he never accepted it
I am extremely sorry I missed your comment. I just came across this post from my blog stats. If possible, can you please send that comment again? Even though I dont use UDK anymore it will help any future users.