Art by Jim Cooke.
Video games look better and better with every passing year. Just in the last few months alone we've seen gorgeous technical marvels like Horizon: Zero Dawn, Breath of the Wild, and Injustice 2 (yes, seriously).
But while game graphics just keep getting better, loading times — the bane of all impatient players — don't seem to be improving at all. In some cases, they're so heinous that they have got to be beaten into submission with barrages of post-release patches. Will our more powerful, more expensive gaming rigs ever get strong enough to eliminate the wait?
The programmers I've spoken to say that while games can put exponentially more Stuff on screen than ever before, the hardware that stores and loads that Stuff hasn't improved at the same pace."GPU and CPU performance increases have far outstripped hard drive read speed increases," William Armstrong, a programmer who's worked on games like BioShock 2 and Firewatch, said in an email.
Hard drives are constrained by the laws of physics, he said, because the process of reading/writing data always involves converting between pure electrons and some kind of physical apparatus. "That will be slower than pure circuitry," he said. "Everything is slower than light."
Yes, hard drives can load things faster than they did decades ago, and modern gaming machines have significantly more memory than previous generations, but the boost isn't proportionate. Robert Dieterich, a programmer who's worked on games like Elite Beat Agents and Lips, offered texture sizes — which make in-game objects and environments look more detailed — as an example. If a developer brings average texture size up from 1024x1024 to 2048x2048, he said, the data's four times larger. Going up to 4096x4096 means it's 16 times larger.
But, he noted, when you upgrade from the 5400 RPM (rotations per minute) hard drives that were standard a few years ago for today's higher-performance 7200 RPM drives, that's only a 33 per cent boost in read performance. "Switching to solid-state drives offers significantly better read performance — at higher dollar cost per GB — but you're still fighting against dramatic increases in the size of game data," Dieterich said.
And it's not all about texture size, Armstrong notes. "As game scope increases, the amount of setup ... that goes into making a set of data on disk be the video game increases," he said, "things like initialising AI behaviour, settling dynamic physics, registering every bit of loot with save/load managers, etc. As game scope keeps increasing, the amount of setup just keeps getting larger."
If anything, given this discrepancy in advancement between data size and hard drive speeds, it's actually a wonder that load times haven't dramatically increased over the years. This is because developers have created all sorts of techniques to hide or otherwise minimise load times.
Loading screens, Dieterich said, usually aren't where the loading starts — if anything, they are often the tail end of a series of background processes that begin running long before the player careens smack into that progress-stopping, immersion-breaking wall, one that developers look to avoid wherever feasible.
For example, some games begin loading world data during the unskippable company logos at the start of games. Many load the bulk of their worlds before you ever enter them, which is why those initial load screens can be so lengthy. Others stream data in while you're playing, or use a mixture of both those techniques.
Many modern games also procedurally generate some of what you encounter in the game world by taking a small amount of data and using it to build larger things, like high-fidelity textures, during runtime. That wall of bricks might not have come from a .BMP file, but from a mathematical equation.
All of these things, however, come with their own complications. For example, one of the most reliable ways to bring loading times down is by "baking" everything a particular part of a game requires — and only what it requires — into efficient bundles of data, which can then be loaded as needed.
Developers can do this when they know where players are going to be and roughly what they will do from there. Most straightforwardly, you'll often see it happen at the beginning of a game or level.
But it's not always easy to predict what players will do, especially with more and more games embracing open-world design. "The more unpredictable the player's destination, the less likely you are to be able to predict exactly what data the player will need," said Dieterich.
"This is why you'll likely encounter a loading screen in an open-world game if you quick-travel to a distant area, whereas you wouldn't have seen a loading screen if you went there manually."
Oftentimes, developers don't even know their own game well enough to effectively finesse the load times until near the end of a development cycle. Game development is made up of countless moving pieces, each of which is on the verge of catching on fire at any given moment.
It's a series of trade-offs. Implementing one thing over here might cause longer loading times or crashing bugs over there. It depends on the game engine, too. Some engines handle the particularities of certain loading techniques better than others, and most general-purpose game engines are built before developers really know how their particular game will turn out. There's guesswork involved, and those guesses don't always pan out.
To avoid breaking stuff, developers typically like to have the content of their games locked in before they start surgically slicing away at things like load times.
Problem is, that doesn't usually happen until near the end of development, when there's just a pinch of sand left in the hourglass. Developers can only address so many problems before it's time to send a game off to certification and then release. And load times aren't the highest thing on the priority list.
"When you enter the home stretch to ship a game, you take stock of all the problems it has and prioritise each based on the costs and benefits of fixing [or] improving it," JP LeBreton, a designer who has worked on games like BioShock and Spacebase DF-9, said in an email. "For launch, devs often prioritise stability — making sure the game never crashes, and is fully playable/completable — over performance."
"You're kind of betting on what the biggest deal-breakers are for players," LeBreton said. "A game that performs poorly can still be played, but a game that crashes reliably is a lemon."
These days, we're seeing more and more developers patch especially pernicious load times after release, since only after shipping do developers have ample time to take stock of them holistically.
"Sending a game into the wild opens the floodgates, and that's where we started seeing reports of long load times," said game director Rand Miller of his 2016 game Obduction. Some of those reports, Miller explained in an email, stemmed from particular hardware issues, while others were born of specifics the development team just wasn't aware of before the game came out. "We were loading a larger section of the game than we needed at startup," he added. "So we rezoned a piece at the beginning of the game and pushed a hotfix. Rinse. Repeat."
While continuing to update Obduction's engine and optimise the game for various platforms, Miller and company uncovered other small things that they had done either incorrectly or inefficiently.
"We discovered that we were loading all the live action movies when we load a world," said Miller. "That slows down loading, but requires a rewrite of one of the character interaction systems to fix." The art department found some game textures that could be reduced in size, but these too had to be dealt with on individual case-by-case bases. Chisels, not jackhammers.
I spoke with developers behind two other games that received load-time-related updates post-launch, open-world stealth game Ghost of a Tale and fantasy RPG The Dwarves, and they offered similar sentiments. To improve load times, developers have to know their games inside and out. Even then, though, it takes time and precision to target specific issues. For The Dwarves team in particular, they have recently started trying to keep load times in check all throughout development.
The creative director of a fantasy RPG called The Dwarves, which also received significant post-launch loading improvements, now says his studio is trying to keep load times in check throughout their games' development cycles.
"Making clever packages, optimising the memory handling, and reducing the amount of data in the memory is pretty complicated if you do it late during development," said Jan Theysen. "So for our upcoming games we introduced new systems in our workflow that force everybody to think about loading times from the beginning."
But there's only so much developers can do before games are close to completion. With loading times likely to be around at least as long as we're storing data on magnetic, spinning hard drive platters, the fixes will probably keep coming (if they come at all) after release. Load times, says William Armstrong, are "similar to games shipping with a bug in their online features, or quest bugs when you play the game in an unexpected order or very quickly.
These bugs all only show up when the game is completely finished. And games are rarely finished before the last possible minute."