Search Unity

  1. Unity 2019.2 is now released.
    Dismiss Notice

Showing tips/info on a "Loading" screen

Discussion in 'Game Design' started by dgoyette, Oct 15, 2019.

  1. dgoyette

    dgoyette

    Joined:
    Jul 1, 2016
    Posts:
    2,046
    Whenever a player dies, or switches to a significantly different level in my game, I show a "Loading..." screen so they know something is happening. Recently I added a feature where tips/info/story is shown on this screen as well. The issue I'm running into is that even though these messages are short (never more than a single sentence), some times the load times are quick enough that there really isn't enough time to read the message.

    Short load times are probably one of those "problems" that are good to have, but it feels a bit annoying if a player is unable to read the loading messages completely.

    I considered something like, maybe don't show the message unless loading is taking a while. For example, wait until t = N before I show the message. But that doesn't really help, since maybe the scene was going to take N + 1 seconds to load, now it's right back to the same problem.

    I've played plenty of games with loading screen tips like this. Usually those scenes are beasts, and always take a while, so there's lots of time to read the messages.

    One thing I've done is collect all these "tips" into part of my UI so people can go read them in one place if they feel they missed something important. But that is kind of a bandaid.

    Anyone else run into this? Any recommendations? I'm assuming that it's not feasible to predict how long the loading will take, for various reasons, so I don't think I can dynamically show the tips or not depending on whether a particular scene will take a while to load.
     
  2. Kazen

    Kazen

    Joined:
    Feb 17, 2015
    Posts:
    47
    Define some sort of minimum duration to be able to properly read the information you're providing. If the loading takes a longer time than this, then you're good, load the next scene. If your loading is quicker, wait until the minimum duration has passed until you go to the next scene. That's probably what I would do. The players don't know how fast your game loads anyway. Just keep the duration to an acceptable time to wait
     
    angrypenguin and YBtheS like this.
  3. dgoyette

    dgoyette

    Joined:
    Jul 1, 2016
    Posts:
    2,046
    I actually tried that already, and the response was pretty bad. The reason is, there's a lot of dying and reloading in my game, and keeping the Loading scene up artificially long just felt like it was slowing the game down. In other words, these tips/messages aren't so important that I want to slow down the whole game for this. And that was merely ensuring that the message was displayed for at least something like 5-6 seconds. Turns out 5-6 seconds feels like a long time if you have to sit through it a lot.
     
    angrypenguin likes this.
  4. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    9,766
    You could show "Press a key to play" as soon as the new level is loaded. When the player presses a key (or mouse or joystick button), hide the loading screen and show the new level. It's an extra keypress, but the player can move forward as fast as they want. Or if they want to sit on the loading screen and ponder the advice for a while, they can do that without feeling rushed.
     
  5. Joe-Censored

    Joe-Censored

    Joined:
    Mar 26, 2013
    Posts:
    6,692
    I'd do it this way, and add a toggle to your options menu to return to the previous behavior (no key press required).
     
  6. dgoyette

    dgoyette

    Joined:
    Jul 1, 2016
    Posts:
    2,046
    I really like these ideas. Thanks guys, that approach never occurred to me.
     
    angrypenguin and YBtheS like this.
  7. newjerseyrunner

    newjerseyrunner

    Joined:
    Jul 20, 2017
    Posts:
    694
    I agree with the idea of a minimum amount of time but with the ability to skip any i unnecessary time.
     
  8. Socrates

    Socrates

    Joined:
    Mar 29, 2011
    Posts:
    689
    There are a number of games I play who have tips on the loading screen where sometimes it goes too fast to read (and I read quickly). The once I appreciate are the ones who do not delay the loading screen, but then counter this by keeping a limited number of tips and tricks. Sooner or later, I'll get to read them, or even instinctively skip to the end of one I've started before. But the game does not make me wait. My time is too limited to sit at artificially extended loading screens and having to turn off that "feature" would annoy me as well.
     
    Ryiah and dgoyette like this.
  9. dgoyette

    dgoyette

    Joined:
    Jul 1, 2016
    Posts:
    2,046
    I definitely agree that I don't want to force people to wait around on the Loading Screen to ensure it's enough time to read each message. Especially since it's entirely likely that after a certain point, the player will have already read most/all of them anyway, which makes waiting around extra absurd. If a message was too fast, the player can either wait until it comes up again, or they can look in their "Journal", which shows all the messages in one long list if people didn't get a chance to read it fully before.
     
  10. angrypenguin

    angrypenguin

    Joined:
    Dec 29, 2011
    Posts:
    12,138
    Do you know ahead of time which loads are likely to be long or short? You could just omit the tips from ones which are likely to be too short to read them.
     
    Ryiah and Socrates like this.
  11. dgoyette

    dgoyette

    Joined:
    Jul 1, 2016
    Posts:
    2,046
    I don't really know. I can ballpark it, based on how complex each level is, but it also depends on the user's hardware. On worse hardware, even a simpler level might take a while. I'm not aware of any way I can estimate, prior to actually loading a scene on the user's hardware, how long loading the scene is going to take. I'd love to know if there was a way to do this, but I'm assuming it's not knowable beforehand.
     
  12. Lurking-Ninja

    Lurking-Ninja

    Joined:
    Jan 20, 2015
    Posts:
    4,624
    Yes you do. Technique: measure the time to load your main menu (or any other thing you load in the beginning of the game with enough content to generalize with). If you use a proper main menu (with animations, maybe, with images and maybe with 3D objects and whatnot).
    If you measure that in your systems and you calculate relations between loading your menu and your levels, you can estimate how long a load will be on the user's system after you loaded the main menu and measured it (which then can be written on disk or setting). Obviously it's not millisecond-precise, but a good estimation IMHO. (Unless something very unfortunate happens during this load which throws out the measurement, but you can avoid this to measure the first level load as well and check if it's in the ballpark you're expecting)
     
  13. dgoyette

    dgoyette

    Joined:
    Jul 1, 2016
    Posts:
    2,046
    I guess that's worth trying. I'll have to ask myself, "How much more complex, as a multiple of the complexity of the Main Menu, is Level 1, Level 2, etc". It'll be interesting to see if my gut estimates end up reflecting the relative load times. I also don't have a good sense of whether load time scales linearly with scene complexity.
     
  14. Lurking-Ninja

    Lurking-Ninja

    Joined:
    Jan 20, 2015
    Posts:
    4,624
    I mean you can measure your load times and just adjust relative to that. So if you have all of your levels, just measure them.
    If your menu loads on your machine 1 unit average, your first level 1.3 units, your second level 2 units, then when you measure the menu's load time on the user's machine, you take the seconds as 1 unit and you then can estimate how much seconds the level 1 and level 2 will take on average.

    Obviously it does not give you straight, 100% precise answer, but it gives you a good estimate for showing the loading screen tips or not.
     
  15. angrypenguin

    angrypenguin

    Joined:
    Dec 29, 2011
    Posts:
    12,138
    Yeah, all you need to know is which ones are "long" and which ones are "short", and close enough is good enough.

    Honestly, though... this is a lot of effort for a "just in case some people feel like they're missing out on tips". What's the easiest solution? Probably to just show tips on all loading screens if that's what you ideally want, and stick 'em in a menu somewhere for those poor souls who have a computer so fast they can't read them. ;)

    In the grand scheme of making a whole game, you have way bigger things to worry about than this. This is late polish stage stuff.
     
    Socrates likes this.
  16. JoshuaMcKenzie

    JoshuaMcKenzie

    Joined:
    Jun 20, 2015
    Posts:
    822
    One thing you can try is have the loading tip itself linger for a couple seconds even after the scene has loaded, asynchronously from the loading screen plate itself. the loading plate will transition in and out for as long as it needs to, but the tips don't despawn at the same time the loading plate does, only after enough time that the tip can be read.

    so the flow would be that player hits a loading trigger. the loading plate pops up. the tips pop up. loading only took a quarter second and is gone again. Player has control of their character and can move. tips now fade away a fixed number of seconds after they spawned, separate from the loading plate itself.

    Think Castlevania when transitioning from one section of the castle to another. the player can control their character immediately, but a caption can overlay labeling the place they've just entered. Lets the gameplay remain fluid when it needs to and gives the player a choice to seamlessly slow down and absorb the information you've given.