I’m playing a game and the loading screen shows that the loading is 0% for 10 seconds then jumps to 95% for another 8 seconds, and then the next digits change every second until it reaches 100%.
Computers have been like this forever. Isn’t there a better way to do loading times/completion % so it’s more accurate?
In: 6
I’ve programmed many of these.
Say I want to paint 100 intricate boxes on the screen, which should take several seconds total, and I have a progress bar. That’s easy. For every each box paint, I update the progress bar by 1. The computer’s time to paint each box is fixed, and there a known number of boxes, so my progress bar will be very, very exact.
But real world problems creep in. Say you’re doing 1,000 different tasks in loading a game. Some tasks take a long time, some are quick. You update the progress bar at the completion of each task. The task bar will thus jump a lot as large tasks are completed, and go slower when small tasks are completed. It would be a lot of effort to run completion times on each task and fudge the progress bar logic using that, just to give someone a smooth progress bar. This would be especially useless on PC games where you don’t know the hardware, don’t know anything about completion times on a specific user’s computer. Maybe he’s using an old 5,200 rpm disk instead of basic SSD, so he has a loading bottleneck you don’t know about. Or he has NVME so storage runs faster than you anticipated.
The worst progress bars are with downloading. You know the total amount of data to download, but not the download speed. So you start the download, and after a little bit you check how much data came down. You do the math (data/speed) and update the progress bar to where you are likely in the download percentage wise. But download speeds aren’t constant, they fluctuate widely (due to speeds on your end, the Internet in general, and their end). So a download speeds up, you do your math, and you extend the progress bar by a big jump because you will be done much sooner at this speed. But then the download slows down, you do your math, and you should take the progress bar backwards, but nobody wants to see that, so you keep holding the progress bar there until the amount of data downloaded catches up with its position. Given that, download progress bars are often quite erratic. You can smooth them somewhat by not being too reactionary to new speeds, looking at trends instead, but they’re still going to be a bit erratic.
Basically, real-world unknowns make it hard to provide a nice, smooth, and accurate progress bar.
Latest Answers