Ghost of Tsushima, out now, features some of the fastest loading times I’ve seen in a modern game despite its beautiful, expansive environments. They’re so short, in fact, that it’s often hard to read more than one or two of the gameplay tips the developers included as filler between gameplay. But it was almost even harder.
I’m an impatient person who’s given up on games like Prey and XCOM 2 because they took too long to load between areas or missions. I expected significant downtime in Ghost of Tsushima, but as I played for my review, I was blown away by how little time it afforded me to check my phone or get a drink. Transitioning from gameplay to cutscene and back, or fast travelling between two distant, environmentally diverse biomes, both incurred load times of just a few seconds.
(For context, I played on a base PlayStation 4 loading a digital copy of the game from an external HDD.)
“We really got where we are through focus and substantial team effort,” Sucker Punch Productions lead engine programmer Adrian Bentley told Kotaku via email. “I wrote the foundational code for our fine-grain texture and mesh streaming systems for Ghost. It started as a forward-looking side project and came online just in time as we began running out of memory on PlayStation 4 developer hardware due to the huge amount [of] art the team was adding.”
Ghost of Tsushima is lush as heck. Vast fields of flowers intersected by dusty roads give way to claustrophobic bamboo forests containing secluded Buddhist temples. Leaves, cherry blossom petals, and pollen filter through the air thanks to an ever-present, guiding wind. Waves crash on beaches, hiding rocky pathways to offshore secrets. And while the responsibility for pulling all those disparate assets together was already monumental, Bentley explained that the art team also had to make sure to keep data compact as it ate more and more memory.
“Our art teams did an amazing job pushing their assets to fit in our aggressive performance and memory budgets,” Bentley said. “They accomplished a huge amount especially considering the size of our team. As an example, one of our 200m x 200m terrain tiles only usually takes up around 2 MB (compressed) on disc, including all the terrain and foliage placements. It’s easier to load a lot of data when you keep it compact.”
I was convinced that the Ghost of Tsushima devs employed some sort of fancy, behind-the-scenes trick to reduce these loading times, but Bentley said it was mostly just the hard work of the team that ensured load times remained as short as possible. That said, they did hide some loading times behind prerecorded movies that rendered in-engine, a technique Sucker Punch has utilised since the early inFamous games. Streaming and decoding multiple assets simultaneously in this way requires “somewhat complex code.”
“Our mesh and texturing systems are very fine-grain and fairly conservative,” Bentley added. “We only have one copy of every asset on the disc. During most loads, when not jumping into a close-up, we only load newly required assets and can dial down our streaming density a bit. This usually results in requesting one or maybe two fewer mipmap levels for big textures. Users shouldn’t see pops because we still have the texture data we need to render when jumping into gameplay 99% of the time.”
According to Bentley, a “fundamental part” of the engine’s loading strategy is to put data exactly where it needs to be in memory with as few disk reads as possible. Such precision is mostly only possible on a console, because the hardware (and hence, memory layout) never changes.
Once it’s all loaded up, they can then “spawn” anything in memory into wherever it’s needed in the game world. As the player runs around, further incremental loading occurs as needed, which Bentley describes as a relatively lightweight process.
“When you die,” says Bentley, “we only need [to] re-run this quick ‘spawn’ process with most of the data already loaded. In contrast, many other engines use serialization-based approaches, which require reloading a substantial amount of data to run again.”
Ghost of Tsushima’s largely natural, bucolic setting further contributed to the speediness of its loads.
“It also helps that large portions of Ghost are designed to be a peaceful, meditative environment,” Bentley said. “We have plenty of variety, but it more often comes from overall colour, placement, layering, flavoring, and movement in the world. As opposed to unique baked data on every individual asset (e.g. in a city game like inFamous) which would be too noisy for Ghost’s aesthetic. As such, [in] many wilderness locales, there’s somewhat less pressure on the streaming system, which facilitates loading into them more quickly. Overall, this more broad-brush variety works well with the large scale of our game and our more expensive fine-grain streaming system.”
Like many games, Ghost of Tsushima provides players with tips during loads to both kill time and fill them in on parts of the story or gameplay they might have missed. During development, however, the team at Sucker Punch found that reloading from death, specifically, was so quick that it was impossible for the player to read any of this advice. Late into the project, Bentley said, they decided to artificially extend downtime in these situations so that the tips could be on-screen for “more than a fraction of a second.” Just between you and me, it’s still pretty hard, but I can typically get through one or two before being whisked back to fighting Mongols.
Even so, Bentley still isn’t entirely satisfied with some of the load times, especially when it comes to fast travelling into different biomes or cities. He credits his team’s general optimisation for making extended downtime less noticeable, as well as techniques like deferring the loading of data only used for close-ups on textures and other assets until the player is actually in the game. In my experience, loading times increased as more of the world opened up, but I never found any individual moment too taxing on my patience. Overall, Ghost of Tsushima is a game that never takes you out of the action for too long, which is great when you’re hunting down those last few Mongol camps or scouring the map for the last fox den.
“We realised early on that the scale of Ghost would create challenges,” Bentley said. “We did some maths, and carrying forward our previous streaming approach verbatim would have resulted in either a large memory and disc footprint or constraints too tight for the art team to pack enough content into the world. We really had to be cognisant of all parts of the pipeline when making changes to make sure we could efficiently build, run, and stream Ghost. And do all this while making the game at the same time. In the end, I’m pretty happy with the results and am excited to see what we can improve going forward.”