Your Loading Screen is Lying to You, aka When 90% isn't 90%

One of the things that’s always fascinated me is progress bars on loading screens. I’m sure we’ve all had that experience of watching a game load to 99% only to suspect it’s frozen as it stays at 99% for 10 seconds, or, watched in agony as it creeped up to 50%, then breathed a sigh of relief as it covers the second half in a tenth of the time.

I’ve never really had an opportunity to check how inaccurate the progress bar is… until I started playing a little-known game called Red Dead Redemption 2. RDR2 doesn’t have a progress bar on its loading screen, but it does pop up a “90%” notification. Perfect!

For the last two weeks, I’ve been timing the load screens and marking the appearance of the 90% icon, and now I’m sharing it here (after I excitedly explained it all to my wife who looked at me like I had two heads. Also, I’m a government statistician who hasn’t been allowed to work in a month and is going a little stircrazy).

All loads are from a clean start, usually with the console (PS4 Pro with a Seagate 2GB SSHD installed) powered off in between. My stopwatch goes to thousandths of a second, but my fingers don’t, so all observations (11 so far) were rounded to tenths.

Appearance of the 90% indicator:
Avg 61.7s
Min 60.6s
Max 62.9s

Total load time :: When 90% should appear
Avg 77.8s :: 70.0s
Min 61.8s :: 55.6s
Max 98.5s :: 88.7s

Distribution of actual load % when 90% icon appeared:
< 75% 4
75% - 85% 5
85% - 95% 0
>95% 2

By far my favorite part is that not once has the 90% indicator appeared anywhere between 85 - 95%.

The “first 90%” always took 61.5s ± 1.5s. The “last 10%” took anywhere between 1.2s and 36.9s. It seems to me like they just have a trigger for the icon to appear once the load goes over a minute.

Anyway, like I said before - stircrazy. I should probably add a discussion topic or something, so…

Have you ever run your own game experiments? Calculated Xcom’s true hit chance? Tried to figure out the weight of all the Doom Guy’s weapons? (As a kid I once figured out Bo Jackson’s running speed in Tecmo Bowl. I remember it being not as fast as I thought it would be.)

7 Likes

An observation on your experiment: When there’s an allusion to ‘progress’, my assumption is that its reference point is the total number of operations required. So, in RDR2’s case, “90%” could be referring to the game loading all the assets necessary for gameplay to be possible. This wouldn’t have to be a linear process (I assume it very likely isn’t), which means the remaining 10% might be much more computationally demanding–or vice versa.

The consistency of the notification does support your conclusion, which would be pretty funny if true. In any case, that’s my view of the more general concept.

(I’m sure I massively oversimplified the process of ‘loading’ as it pertains to video games, and I feel compelled to apologize to any game developer in the audience. Especially those working on open world games. That shit always feels like magic, I swear, and I’m genuinely surprised whenever one isn’t bug-infested. Or loads quickly. What the fuck is that.)

4 Likes

At least in XCOM enemy unknown this was actually precalculated at mission start with a seed. If you repeat the mission and the same exact moves are made the same results will happen. Was done to help discourage save scumming after every bad shot iirc.

2 Likes

Real talk, if Sony and Microsoft really want to wow us next gen, they should design their consoles as SSD standard. If I never have to see another loading screen I’d be a happy camper.

3 Likes

Yeah, I’ve always figured it was based on files loaded or something - it wouldn’t make sense that a game would try to calculate its load time given all the variables involved.

FWIW, I tried to make things somewhat consistent by going to the fence/trapper, returning to camp and manually saving/exiting, but after my first three “last 10s” were 12.6s, 24.8s and 1.2s I decided that wasn’t worth the trouble.

As somebody who has done indie dev, I can say without any hesitation that it is basically impossible to judge how to render a loading bar.

Because, like, if you build a list of things that need to be in place before the level can begin, not every single one of those things takes a proportionate amount of time. Item 28 on that list might be to load the lightmaps, which constitute 500mb of data, whereas item 29 on that list might be to load geometry data, which is 180mb. Ergo, it stands to reason that it will take longer to load the lightmap data than the geometry.

Which, on the player’s end, will mean the progress bar will hang at 28% for a few seconds, tick over to 29%, and then almost immediately go to 30%.

The reason it gets to 90% and then gets stuck there is likely because from 0%-89%, the game is decompressing assets, and the last 10% is dedicated to actually getting them ready to display – placing actors, setting up scripts, getting the texture and audio streaming online, etc.

Think of it in terms of moving in to a new house. 90% is unpacking the boxes to see what’s inside, 10% is actually figuring out where to put everything.

So it’s not that the game is lying to you, necessarily, it’s just measuring things by different metrics than you are.

 

More on topic for my own experiences, one interesting thing is when save states in old games reveal how certain results were rigged to punish you. It came up on Supper Mario Broth last week, but there’s a Mario Party minigame where you choose between one of two doors. One door contains a hazard that makes you lose, the other door gives you a point and lets you advance forward. It’s supposed to be a random chance whether you win or fail, but using save states, you can see there’s no random element to it at all; before the minigame even begins, Mario Party chooses a number of points it will let you earn, and then will automatically force you to fail once you reach that number.

I personally discovered something similar in Yoshi’s Island for the GBA. One of the bonus games you can play at the end of a level is a pair of roulette wheels. You can choose how many 1ups you want to bet, and then spin the wheel to decide how many extra 1ups you’ll earn. One wheel has math symbols on it (plus, minus, multiply, etc.) and the other wheel has numbers on it.

So if you bet five 1ups, and the first wheel lands on plus and the second wheel lands on 2, you’ll receive seven 1ups in return.

If you are so bold, you can bet an entire stock of 1ups in the hopes of winning big by hitting the “multiply” and “3”

The roulette isn’t random; it merely spins very quickly and the player chooses when to stop the wheel. Using save states and other emulator functions, it is then possible to engineer a scenario where the roulette always stops on “multiply by 3.”

Except you’ll very quickly discover that Yoshi’s Island sometimes intentionally makes it impossible to land on those two spaces together. Abuse save states all you want, slow the emulator down so that you can hit the button at the exact right time, it won’t matter – the game decides before the bonus game even loads whether or not it’ll let you get its biggest payout.

8 Likes

To be clear, I don’t actually think games are “lying.” That was just a bit of hyperbole. Well, I do think Red Dead might be lying, but that would be weirdly appropriate for the game.

But I do think surfacing a metric like that when the player has no idea what it actually means is inviting frustration.

2 Likes

After all these years, I’m starting to seriously doubt my computer has ever reticulated a spline…

10 Likes

So watching that new Marie Kondo show is like installing your game to an SSD.

1 Like

Not exactly your topic question, but, as someone whose past includes time in User Experience and research, I can tell you that this is very much a thing (and very much my kind of thing). As @Blaze mentioned, we know that 99% of the time, there’s no good way to give you an accurate progress bar (in terms of an accurate representation of how much time remains before the game is really ready to play). The thing we can measure might be wrong, there might inherent unpredictability, (because the time to load 1MB into memory just isn’t constant for each MB on a given console/device, or, we might need to talk to something on the internet to continue), or it just might not be considered an important use of development time to do.

So, yeah, we (the HCI research world) worked out ways to lie to you, in ways that are designed to make you feel better about your wait (if you aren’t paying too much attention). Here’s a paper/video from Chris Harrison (et al) at CMU who have done a bunch of this work: http://www.chrisharrison.net/index.php/Research/ProgressBars2

This builds on earlier work of his that showed pretty clearly that the most important thing about progress bars is that they don’t stop. Which, as someone who plays games, totally makes sense. A game has good flow, if it always feels like some progress is being made. When a game that throws up a wall, and no goals at all can be achieved until you are over that wall, is now in less of a flow state, and more in a ‘challenge state’. Which can be a good thing, but it’s certainly more stressful.

And you can go pretty deep (rabbit hole alert) into this side of user research if you wanted to, this Atlantic article does a pretty good job of talking the whole idea of “benevolent deception” https://www.theatlantic.com/technology/archive/2017/02/why-some-apps-use-fake-progress-bars/517233/, but the source paper (http://www.cond.org/deception.pdf) is a good read too.

Edit: And just to close off on this: it’d be my guess that PS4 loading bars are lying to you by presenting linear progress with no connection to actual loading progress at all, with a stop a 90%, and they just jump to 100% when done.

7 Likes

Loading bars are like close door buttons on elevators, just the illusion of action a visual distraction at best.

There is no reliable way to know how long a load will take so just time it against the cert limit and be done with it.

3 Likes

Also, attempting to estimate loading times more precisely can have its downsides…

The most noticeable version of this to me is the loading bar on the browser on my phone. It immediately goes to 80% or so, even if there is no internet connection. Then it finishes filling up when the page is actually ready. So it really only has two true states: done and not done. But it pretends to have a whole range to give the illusion of forward motion. Once you see past the illusion it’s super annoying. D:

1 Like