UE-203175 - GetMoviePlayer is not compatible with PreLoadScreen - UE 5.5 - Still present

Summary

In addition to bug tracked @ Unreal Engine Issues and Bug Tracker (UE-203175) - Reference UE-203175 When attempting to play a movie at the start of a packaged game, when implementing the plugin PreLoadScreen, the Movie no longer loads, with the error message Error: Only one system can use the SlateThread at the same time. GetMoviePlayer is not compatible with PreLoadScreen.

Please select what you are reporting on:

Creative

What Type of Bug are you experiencing?

Stability

Steps to Reproduce

Add PreLoadScreen plugin to a Unreal Engine project from any template in Unreal 5.5.
Add a movie and set it up in the project settings using the published method of Unreal Engine 5.5
Package the game in development or shipping

Expected Result

Movie plays at start of game launch sequence

Observed Result

No movie plays - Error reference Slate thread collision

Platform(s)

Windows

A way around this problem, if you are using CommonLoadingScreen and don’t need CommonStartupLoadingScreen, is to extend it so it doesn’t activate while the movie player is running. Here’s what we did:

  1. Use Bink instead of the conventional Windows Media Player, this is just an improvement overall. See Unreal’s Bink documentation
  2. Disable CommonStartupLoadingScreen; Simply change the LoadingPhase to “None” on CommonLoadingScreen.uplugin
  3. Update the LoadingScreenManager to not run if the Movie Player is active:

You’ll need to fiddle a bit with C++:

At ULoadingScreenManager::ShouldShowLoadingScreen

bool ULoadingScreenManager::ShouldShowLoadingScreen()
{
    ...
    // This snippet will prevent the loading screen manager 
    // from coming up if you are playing a movie. Do it early in this function. 
   if (IGameMoviePlayer* MoviePlayer = GetMoviePlayer())
   {
      if (MoviePlayer->IsMovieCurrentlyPlaying())
      {
         DebugReasonForShowingOrHidingLoadingScreen = FString(TEXT("A movie is playing"));
         return false;
      }
    }

   ...

This shall allow you to play your intro movie smoothly and show your level loading widget immediately afterwards (or if the movie is interrupted)

Hope this helps!