What is the best way to do an initial loading screen?

The walking animation is simply a bunch of UMG image widgets hidden in an overlay.
When the loading screen is made, it picks one at random and makes it visible.
As the loading screen ticks, it reduces a simple timer.
When it hits 0, the visibility the current images is changed to hidden and the next child in the overlay is picked and has its visibility to set visible.
If its the last child overlay, it’ll pick the first child.
That’s it - not particularly fancy :slight_smile:

See my solution above.
Create your own game instance, create your loading screen, place it on the screen and keep a reference in your game instance.
Once the loading screen is in place, connect to the server.
Once the client has connected to the server, use the reference kept by the game instance to find and remove the loading screen.
This can be done manually in your player controller, if, for instance, you wish to wait until the player has fully connected and pre-cached anything required by your game.
Or it can be done simply when the map finishes loading by binding something to the movie players “OnMoviePlaybackFinished” delegate.

Not sure if that is exposed to the Blueprint system, but it definitely is in C++.