Announcement

Collapse
No announcement yet.

Loading Screen System (Level Transitions w/ Progress)

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    [RELEASED] Loading Screen System (Level Transitions w/ Progress)

    Store: UE4 Marketplace Link | Itch.io
    Doc: Documentation & FAQ
    Download: Executable Demo (Google Drive) The whole example project is available as an executable demo.
    Videos: Playlist

    Latest Update: May 29, 2018 - Version 1.04
    This update adds a Pawn Handling feature that provides full control over Spawn Location and Pawn Type in Streaming Levels, as well as an Actor Pool to keep the active Pawn alive between (and during) Level Transitions.
    You can find the full documentation of changes in 1.04 here: Link [^]

    Click image for larger version  Name:	2_00003_LoadingScreen01.jpg Views:	1 Size:	198.1 KB ID:	1428003

    The Loading Screen System (LSS) is a framework intended to add dynamic loading screens to your games. It's incredibly easy to include in your projects and the visuals of your loading screens are entirely yours to design as you see fit.

    The LSS uses UE4’s Level Streaming and shows a transition level while your actual levels get loaded in the background. This transition level can be any map you want and can either be static (point a camera on some pretty objects or put a 2D UMG interface up on screen) or fully interactive with a controllable camera or character.

    LSS simplifies the whole setup and handling of level streaming down to a couple of nodes, drop the “LSS_Actor” blueprint into your persistent root level and set everything up in its details (loading screen scene, UI overlay, “press key” requirement, autoplay, cinematic mode input handling etc.). Call level transitions from anywhere using just the target level’s name and a readily available node from a globally accessible Blueprint Library. The system will handle the transition and show an interactive loading screen for the duration of the loading.
    • Easy to use & Easily extendable
    • Create/customise your own loading screens
    • Unlimited setup options (2D UI & full 3D scenes)
    • Loading screens during level transitions and on start up
    • Playable INTERACTIVE loading screens (think Assassin's Creed)
    • MINI GAMES during loading ("Pong" and "Space Invaders" examples included)
    • Use different loading screens in a single project
    • Fully customizable UMG overlays (e.g. Random Game Hints, example included)
    • Support for "Press [Key] To Continue" option
    • Advanced features (event handling, latent actions, see documentation)
    • 15 well commented tutorial levels included
    • Standalone Fade Component included
    • VR compatible
    • Blueprint Nativization Ready
    • Pawn Handling (control spawn location & pawn type)
    • Actor Pool (use Player Pawn across levels)
    • Loading Progress Indication (Progress Bars)

    Mini Games during loading

    As the loading screen itself can be any type of level, you can easily set up interactive content to be on screen during the loading of your levels, such as complete minigames.
    The project includes two examples, a “Pong” inspired game and the “Space Shooter” example from Unreal’s Content Demos (available in the Epic Launcher). You can add any type of game you like or just create a scene with a character to run and jump around a simplified scene (as seen for example in the Assassin’s Creed series).

    Click image for larger version  Name:	2_00004_LoadingScreen_Pong_Minigame.jpg Views:	1 Size:	81.9 KB ID:	1428000Click image for larger version  Name:	2_00004_LoadingScreen_SpaceShooter_Minigame.jpg Views:	1 Size:	186.2 KB ID:	1428011

    Tutorials / Example Maps included

    The asset includes 14 tutorial levels with the following setup and usability examples:
    1. Minimal Setup (Drag&Drop Example)
    2. Blueprint Only Setup (everything spawned and set up in BP)
    3. Reference Handling (shows how to access the actor reference)
    4. Switching between Multiple Loading Screens (use different screens in one project)
    5. Level Persistence (keep levels in memory after they get closed)
    6. Advanced Event Handling (access to a wealth of event dispatchers)
    7. Mini Game in Loading Screen example: Pong
    8. Mini Game example: “SpaceShooter” from Launcher content
    9. Main Menu & Pause Menu Example
    10. User Interface handling
    11. Advanced: Alternative Loading Order (advanced use case)
    12. Optional transition via common OpenLevel node (a mix common approach with streaming)
    13. Loading Progress Plugin integration (Progress Bars)
    14. Video Playback
    15. Pawn Handling
    Click image for larger version  Name:	image_129403.jpg Views:	2 Size:	275.1 KB ID:	1428004

    Simplest step by step example
    1. Create an empty level (example name “Root_Map”)
    2. Drop BP_LSS_Actor into the scene
    3. Add an existing level (your game scene) to the Levels list of your persistent level (1.)
    4. Select the BP_LSS_Actor and in its Details add the name of your game scene (3.) Into “List Of Levels”
    5. Add another level to the Levels list of the root level, this one will act as your loading screen
    6. In the details of BP_LSS_Actor add the name of your loading scene (5.) as “Loading Screen Level”
    7. Make sure “Autoplay” is checked In the details of BP_LSS_Actor
    Now Play in Editor. The scene should start with a Fade In, then show your loading scene for a short while and finally smoothly Fade to your game scene

    To be able to switch between levels:
    1. Add more levels similar to 3. and 4. above
    2. Add either a key input in the Level Blueprint of your persistent level (1.) or a box collider in your game scene (as an example)
    3. On execution of the above (b.) add the node “LSS Open Level” (right click anywhere and start typing “LSS” and you should see functions categorized as “Loading Screen System (Function Library)”)
    4. As the parameter of “LSS Open Level” enter the name of the level you want to transition to.
    Play in Editor, press your input (2.) or enter the collider and the system will smoothly fade into the loading scene and then into the target level (provided as parameter for the “LSS Open Level” node).
    This of course is merely the simplest approach, the system offers much more complexity.


    Blueprint Function Library

    All relevant functions to control the Loading Screen System are available in a special Blueprint Function Library (BP_LSS_FunctionLibrary). This is a comprehensive set of methods to interact with the system without ever needing to worry about any references or actual code. It’s meant to be as easy and straightforward as it gets. Just right click anywhere in your blueprints and start typing “LSS” and these functions will show up.

    Each function has a tooltip description explaining what it does.

    Click image for larger version  Name:	image_129398.png Views:	1 Size:	144.9 KB ID:	1428007

    Advanced Event Handling

    During the loading process each level triggers a number of events, depending on whether it is loaded / unloaded or shown / hidden. The available Events can be used through bindings to execute custom game logic in specific situations. Usage examples: Show UI, spawn or posses pawns after the level has been loaded, remove UI or save the game before the level closes. The binding itself is very easy, you need the map name and a custom event to connect to.

    A list of Available Events:

    On Before Level Loaded, On After Level Loaded, On Before Level Shown, On Level Shown, On After Level Shown, On Before Level Hidden, On After Level Hidden, On Before Level Unloaded, On After Level Unloaded

    Each of these events can be configured on a per level basis to pause the transition until a special node (“LSS Send Confirmation”) is executed. This allows the system to pause the loading queue when needed to wait for Latent Actions that an individual level migh tneed to conclude (e.g. save game before unloading).


    Latent Actions

    As stated above, in case your game logic requires latent actions (e.g. delays) to be performed during the loading process, you can communicate to the system to keep the loading screen going while your tasks are being executed.

    Example: generation of procedural levels, additional level streaming, database communication, etc.
    There’s a whole example map dedicated to this topic.


    Fade In/Out Controls

    The Loading Screen System uses a Fade Component (Blueprints/BPC_ScreenFadeComponent) to make transitions as smooth as possible by fading in and out to black. The fade overlays the screen with a black UMG screen (it could be customized to use any pattern as it uses a simple UMG widget).

    Stand-alone usability: you can use the BPC_ScreenFadeComponent on its own independently from the Loading Screen System - just add the Actor Component to any Actor in your scene (e.g. Game Mode)


    Important Notes
    • Currently the system is available for 4.18+ only (mostly because of several quality of life improvements added to the Engine by Epic, such as DPI scale, which make it hard to go back to an older engine version for me). Support for older engine versions may come at a later date if there is any demand for it - please let me know if you would be interested in a 4.12-4.17 version.
    • No multiplayer support in the initial release. Will be added soon, already being working on.
    • Tested on PC, but should work on all platforms
    • Works with Blueprint Nativization

    This thread is primarily intended for helping users with any questions, concerns, or issues they may come across. But all feedback is more than welcome!
    Last edited by Cpt.Trips; 10-12-2018, 02:57 PM.
    [Marketplace] Loading Screen System (ᴘʀᴏᴘᴇʀ ʟᴏᴀᴅɪɴɢ sᴄʀᴇᴇɴs, ɴᴏᴡ ᴡɪᴛʜ ᴘʀᴏɢʀᴇss ʙᴀʀs)
    [Free][Script] Automate Download of Mixamo Animations
    [VłĐɆØ] Performance: BP vs C++ vs Blueprint Nativization

    #2
    Asset is Free For The Month of October, 2019.

    New Tutorial Videos available: Playlist



    May 29, 2018: Updated to Version 1.04

    This update adds a sophisticated Pawn Management feature that provides full control over Spawn Location and Pawn Type in Streaming Levels, as well as an Actor Pool to keep the active Pawn alive between and during Level Transitions.

    April 3, 2018: Updated to Version 1.03
    This version introduces Loading Percentage display (Progress Bars) as well as a couple of quality of life improvements (e.g. a Load List of Levels node and Open All Levels On Autoplay option)

    March 7, 2018: Updated to Version 1.02
    This version adds VR Compatibility to the Screen Fade Component.
    Last edited by Cpt.Trips; 10-03-2019, 05:55 PM.
    [Marketplace] Loading Screen System (ᴘʀᴏᴘᴇʀ ʟᴏᴀᴅɪɴɢ sᴄʀᴇᴇɴs, ɴᴏᴡ ᴡɪᴛʜ ᴘʀᴏɢʀᴇss ʙᴀʀs)
    [Free][Script] Automate Download of Mixamo Animations
    [VłĐɆØ] Performance: BP vs C++ vs Blueprint Nativization

    Comment


      #3
      Subscribed and looking forward to the network update

      Comment


        #4
        Progress on the network update:

        [Marketplace] Loading Screen System (ᴘʀᴏᴘᴇʀ ʟᴏᴀᴅɪɴɢ sᴄʀᴇᴇɴs, ɴᴏᴡ ᴡɪᴛʜ ᴘʀᴏɢʀᴇss ʙᴀʀs)
        [Free][Script] Automate Download of Mixamo Animations
        [VłĐɆØ] Performance: BP vs C++ vs Blueprint Nativization

        Comment


          #5
          4.19 Added to Supported Engine Versions
          [Marketplace] Loading Screen System (ᴘʀᴏᴘᴇʀ ʟᴏᴀᴅɪɴɢ sᴄʀᴇᴇɴs, ɴᴏᴡ ᴡɪᴛʜ ᴘʀᴏɢʀᴇss ʙᴀʀs)
          [Free][Script] Automate Download of Mixamo Animations
          [VłĐɆØ] Performance: BP vs C++ vs Blueprint Nativization

          Comment


            #6
            Version 1.03 submitted
            This Update introduces proper Loading Progress Indicators (Progress Bars).
            [Marketplace] Loading Screen System (ᴘʀᴏᴘᴇʀ ʟᴏᴀᴅɪɴɢ sᴄʀᴇᴇɴs, ɴᴏᴡ ᴡɪᴛʜ ᴘʀᴏɢʀᴇss ʙᴀʀs)
            [Free][Script] Automate Download of Mixamo Animations
            [VłĐɆØ] Performance: BP vs C++ vs Blueprint Nativization

            Comment


              #7
              Update v1.03 has been released Today!

              This version introduces Loading Percentage display (Progress Bars) as well as a couple of quality of life improvements (e.g. a Load List of Levels node and Open All Levels On Autoplay option)


              IMPORTANT: The new Loading Progress functionality requires the installation of a small code plugin,
              as this feature is not supported with Blueprint alone. The plugin is available with source and precompiled for Win64.
              Note: This plugin is only required for this new feature, the Loading Screen System itself will still work without it.

              The documentation has been updated to reflect the changes, below are direct links to the most relevant parts thereof.

              1. Loading Progress (including Plugin Installation guide)
              2. Change Log (including all new blueprint nodes)
              Last edited by Cpt.Trips; 04-03-2018, 06:00 PM.
              [Marketplace] Loading Screen System (ᴘʀᴏᴘᴇʀ ʟᴏᴀᴅɪɴɢ sᴄʀᴇᴇɴs, ɴᴏᴡ ᴡɪᴛʜ ᴘʀᴏɢʀᴇss ʙᴀʀs)
              [Free][Script] Automate Download of Mixamo Animations
              [VłĐɆØ] Performance: BP vs C++ vs Blueprint Nativization

              Comment


                #8
                Plugin Installation Guide - Loading Progress Feature For The Loading Screen System

                [Marketplace] Loading Screen System (ᴘʀᴏᴘᴇʀ ʟᴏᴀᴅɪɴɢ sᴄʀᴇᴇɴs, ɴᴏᴡ ᴡɪᴛʜ ᴘʀᴏɢʀᴇss ʙᴀʀs)
                [Free][Script] Automate Download of Mixamo Animations
                [VłĐɆØ] Performance: BP vs C++ vs Blueprint Nativization

                Comment


                  #9
                  Hi there! Would this work for loading screens on map transitions for clients changing maps on dedicated servers?

                  Comment


                    #10
                    Originally posted by Piepants View Post
                    Hi there! Would this work for loading screens on map transitions for clients changing maps on dedicated servers?
                    Good question. I will look into it further, but so far I'm afraid this is not achievable at all.
                    It would certainly work when all clients travel simultaneously (e.g. start a match from lobby when all players are ready), but not for individual clients joining a session that is already in progress (e.g. enter a persistent game world at any time).

                    PS: The system is not yet replicated, expect the network update to be available later this month.
                    [Marketplace] Loading Screen System (ᴘʀᴏᴘᴇʀ ʟᴏᴀᴅɪɴɢ sᴄʀᴇᴇɴs, ɴᴏᴡ ᴡɪᴛʜ ᴘʀᴏɢʀᴇss ʙᴀʀs)
                    [Free][Script] Automate Download of Mixamo Animations
                    [VłĐɆØ] Performance: BP vs C++ vs Blueprint Nativization

                    Comment


                      #11
                      Ok thanks for the info!

                      Comment


                        #12
                        Tutorial Video: Loading Screen On Startup



                        More videos to come, next up: Getting Started with Level Transitions
                        [Marketplace] Loading Screen System (ᴘʀᴏᴘᴇʀ ʟᴏᴀᴅɪɴɢ sᴄʀᴇᴇɴs, ɴᴏᴡ ᴡɪᴛʜ ᴘʀᴏɢʀᴇss ʙᴀʀs)
                        [Free][Script] Automate Download of Mixamo Animations
                        [VłĐɆØ] Performance: BP vs C++ vs Blueprint Nativization

                        Comment


                          #13
                          No multiplayer support in the initial release. Will be added soon, already being working on.
                          Hi. Am I correct in understanding that if my multiplayer setup consists of multiple root levels, your asset will not function even after you add multiplayer support? The client won't know which root level the server is using, and switching between root levels (while connecting) wouldn't allow your asset to function properly?
                          Last edited by CodeSpartan; 04-21-2018, 07:40 AM.
                          MMO Starter Kit
                          Dialogue Plugin
                          Voxel Plugin
                          Character Customization: Female
                          Character Custmization: Male

                          Comment


                            #14
                            Originally posted by CodeSpartan View Post
                            Am I correct in understanding that if my multiplayer setup consists of multiple root levels, your asset will not function even after you add multiplayer support? The client won't know which root level the server is using
                            Hey CodeSpartan,

                            Multiple root levels aren't the problem - when the client connects to a server or the server uses ServerTravel at any point, the client(s) will "know which root level the server is using" and follow accordingly.
                            The limitation however (mentioned here) is, that once the server streams sublevels, any clients connecting after that point, will start opening the root level with those streaming levels already active (i.e. at the time the game framework starts for the client and the Loading Screen System gets initialized, the level is already loaded).

                            Originally posted by CodeSpartan View Post
                            switching between root levels (while connecting) wouldn't allow your asset to function properly?
                            While ServerTravel for all clients simultaneously would work, connecting individually to a (root) level that already has sublevels loaded server-side will not allow the asset to work at all for that transition.

                            The client would need to be able to connect to an empty root level with no streaming levels loaded yet, then handle streaming client-side for the levels already active on the server.
                            Thus far I haven't been able to find a way to achieve that without desyncing the client from the server by creating separate, unreplicated level instances.

                            As it stands, when connecting to already existing worlds (server-side), there doesn't seem to be any substitute for out-of-the-box TransitionMap / Seamless Travel.
                            [Marketplace] Loading Screen System (ᴘʀᴏᴘᴇʀ ʟᴏᴀᴅɪɴɢ sᴄʀᴇᴇɴs, ɴᴏᴡ ᴡɪᴛʜ ᴘʀᴏɢʀᴇss ʙᴀʀs)
                            [Free][Script] Automate Download of Mixamo Animations
                            [VłĐɆØ] Performance: BP vs C++ vs Blueprint Nativization

                            Comment


                              #15
                              Is there also a way to use this loader with non-seamless map loading (open a map)? Couldn't find this in the demo videos.

                              LEGENDS of EPICA [Twitter] [Facebook] [YouTube] [Vimeo]

                              Comment

                              Working...
                              X