More

    Ghost of Yōtei – tech deep dive – PlayStation.Blog


    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.

    Hokkaido has Japan’s most extreme winters, so we wanted to realistically portray the interaction of characters with deep snow. To support that, we built a terrain tessellation system that both increases the amount of detail that can be represented by the terrain, and which can be dynamically deformed at runtime. To achieve this, particles and geometry are rendered to a displacement buffer as characters walk, roll and fight through it. This was flexible enough that we extended it to allow characters to knock snow off of trees and bushes, spawning snow particles in the process. When we combine that with a new snow sparkle effect using stable screen-space noise, it ends up looking like this.

    Tall mountains like Mt. Yōtei are often covered by clouds, so we had to come up with a way of rendering clouds in front of world geometry, which wasn’t possible in Ghost of Tsushima’s engine. We also wanted to give the impression of stormy, unsettled weather by increasing the speed at which clouds could move. To enable faster cloud motion without objectionable artifacts, we store the average visible depth of each texel in the cloud map (measured from the camera), which allows us to use parallax mapping techniques while scrolling each cloud frame. (We also blend three cloud frames instead of just two, which results in even smoother motion.) By also storing the average visible squared depth in the cloud map, we are able to reconstruct a simple statistical distribution of the cloud opacity along each ray, and this lets us compute how much the clouds should obscure world geometry like mountains.

    Fog and atmospheric scattering was an important focus when establishing the art style of Ghost of Tsushima, and for Ghost of Yōtei we wanted to build on that by adding support for local fog volumes. These are computed efficiently by using the PS5’s expanded 16-bit floating point GPU instructions. As a side effect of our cloud optimizations, we compute a light-space cloud shadow map, and this enables crepuscular rays (“god rays”) to be visible in our volumetric fog, even far from the camera. We also let artists place “god ray targets” in the world so that they are more frequently lit by a hole in the clouds.

    Character and movement

    One of our primary goals was to make the world of Ghost of Yōtei feel alive. We want everything on the screen to move with the wind, including all the clothing characters wear, the tassels on weapons, and all of the hanging cloth in settlements. When you roll around and fight, we want to kick up dust and leaves while leaving you muddy and bloody, to really anchor you in the world.

    Atsu’s complex costumes can only move realistically thanks to the new layering support we built into our high-performance GPU compute cloth system. In addition to adding support for multiple layers of simulated cloth (seen below), we support cloth collisions, and use a set of carefully tuned heuristics to simulate large numbers of individual cloth simulations efficiently. Here is an example of Atsu in one of her more complex costumes, surrounded by moving cloth.

    GPU particles have been a strong suit for Sucker Punch since Infamous Second Son. In Ghost of Yōtei we continue to add to our bag of tricks, allowing particles to sample terrain material, deformation and water flow. For example, this shot shows particles landing on and flowing down river.

    In addition to affecting the world, we anchor characters by having the world punch back. We do this by splatting information into a directional grid deformed around the character which we then use to layer in texture effects to make the character wet, bloody, muddy or snowy.

    We also leverage our particle systems to allow the player to swap to the past to explore Atsu’s family history. To swap between past and present, we change the skeleton and geometry of Atsu while keeping her character state and animation consistent. Elements of the background and lighting are also changed instantly thanks to the speed of the SSD with some carefully chosen prefetching. This is done behind a curtain of animating particles which sample a copy of the frame buffer from just before the transition.

    Ray Tracing and PS5 Pro enhancements

    As a native PS5 game, we knew we wanted to improve image quality by leveraging some of the platform’s newer technology. With the release of the PS5 Pro, we also wanted to push in a direction that would help us with future games. Based on the solid support from the PlayStation central technology teams, we invested in two big areas: ray tracing, and image upsampling with PSSR.

    Since Ghost of Yōtei takes place in the wilderness of 17th century Hokkaido, there are few mirror-like surfaces that lend themselves to ray-traced reflections. Instead, we decided to use ray tracing to improve the fidelity of our global illumination solution. We attacked this from two directions: first with a more automated, improved baked lighting model, which we could then augment with short-range ray-traced global illumination (RTGI). This required significant changes to our mesh streaming format, allowing us to dynamically decompress the acceleration structures used by the ray tracing hardware. By using the PS5 Pro’s more efficient ray tracing hardware, players can enable RTGI targeting 60 frames per second on Pro consoles.

    For Ghost of Yōtei we rebuilt our frame to use a more general dynamic resolution algorithm, with upsampling, partly so we could take advantage of PSSR. PSSR works very well for us with only a few tweaks, including running conservative rasterization for small particles. By comparison, our standard upsampling algorithm requires significantly more hinting and authoring help to achieve good results. Here’s a side-by-side look. If you zoom in very close (16x before gif compression), you can see that PSSR does a better job reconstructing fine details on architecture and foliage. It is also more stable under motion.

    Loading speed

    For a long time, Sucker Punch has prided itself on getting players into our games as quickly as possible. In Ghost of Yōtei we continued this tradition by doubling down on fast load times.

    We optimize loading by preprocessing data so that it requires only a handful of SSD reads and patching operations per location or terrain tile to load gameplay-relevant data. We then compute and load only the texture mips and mesh LODs needed to render the first frame, with one read per element. Here’s what loading from the far south to the far north looks like without the screen faded out. (Note that this is somewhat slower than it would be if we didn’t have to render the world the whole time.)

    Throughout development we “dog food” these systems rather than using a different loading model for shipping builds. Dog fooding is programmer-speak for every programmer, artist and designer testing what we ship to improve its quality.

    Conclusion

    This is a small peek into some of the technical work we do at Sucker Punch. Making games is more than that though — it’s a huge team effort with art informing technology and technology informing art throughout.

    When we began this project five years ago, our goal was to build a game world that players would love getting lost in. Many of our technical decisions were anchored around the core fantasy of Ghost of Yōtei — that of a wandering warrior coming to terms with events from her past. We’re thrilled to see this vision coming to life with players sharing their experiences and posting incredible in-game screenshots and videos using Photo Mode.

    We’re certainly proud of the result and we hope everyone enjoys wandering the wilderness in Ghost of Yōtei.

    If you’re interested in more info on Sucker Punch’s technology and development process, take a look at our past presentations at conferences like GDC and SIGGRAPH. We expect to share more in 2026.

    Special thanks to Jasmin Patry, Doug Davis, and Eric Wohllaib who helped me edit and prepare content for this post, as well as all the Sucker Punch folks whose work I am representing here.



    Source link

    Latest articles

    spot_img

    Related articles

    Leave a reply

    Please enter your comment!
    Please enter your name here

    spot_img