Ghost of Yōtei has been a labor of love for Sucker Punch, and we’re happy to have it out in the world for everyone to play. Now that players have gotten a taste of the game, we thought this was a good opportunity to talk a little bit about the technology that helped get us here.
Coming off of what we achieved with Ghost of Tsushima, the project vision for Ghost of Yōtei put a stronger emphasis on a player’s sense of freedom in an untamed wilderness. This meant striving for less intrusive ways to guide players, beautiful environments with longer sightlines, more flexible weapon combat, memorable characters with personality, and emotional story moments. Trying to do all this while maintaining a good frame rate is clearly a challenge.
So, let’s dig into a few aspects of the technology we used to create Ghost of Yōtei!
Wandering a wild world
In prototyping our vision for free exploration, we found it most effective if players could gaze across a beautiful landscape and follow their curiosity to find the game. From a technical perspective, landing that feeling required longer sight lines, meaning better rendering for grass, terrain and mountains into the distance.
We improved the appearance of distant mountains by baking models and detailed terrain materials into textures that we could display at higher detail. We also doubled the amount of grass and renderable items our GPU compute renderer is allowed to produce. In this shot, the distant mountains with over one million trees, rocks, and bushes are culled down to about sixty thousand individual items that we render to generate our G-buffers to build the final image.
We use procedural assisted authoring techniques and lean heavily on GPU compute to process all of these instances efficiently without CPU involvement. This involves sequences of compute jobs to perform occlusion culling, memory allocation, fill out draw records before we readback that information on the CPU to stitch into the final command lists for the frame. Here’s an animation of a similar shot with all GPU drawn geometry animating into place to give you a sense of the scale involved. We use these techniques for runtime generated data as well like our broad fields of flowers, and even occasionally for things like ropes and chains.
To give each area of the world a unique flavor, we built interaction systems that help emphasize their themes. Much of the world has grass or small plants, and in addition to deforming with wind and character motion, we added a system that renders weapon sweeps into a “cut buffer.” This buffer is then sampled by cuttable geometry and is used to spawn particles with the geometry above the cut. This allows Atsu to cut most grass, flowers and small plants in the game.