In this week’s update, we’ll be talking about the process we’ve been doing to optimize and stabilize Outer Wilds.
Optimization
Outer Wilds is currently in one of the most tedious and important parts of game development: optimization. The tedium comes from the tasks involved, which usually involve combing through lists, organization of directories, and cleanup of various kinds of files. Everyone on the team contributes to the balancing act between the quality of the assets, improved frame rate, and finding the best user experience possible.
The general balancing act of optimization involves a number of different aspects. There is a constant tug of war is between visual fidelity and frame rate. The push for visual fidelity involves getting the game to run at the highest resolution possible without reducing the quality of textures, models and visual effects. Improving the frame rate (how many times the screen refreshes a second), makes the game respond more immediately to button inputs and how smooth the image is when moving the camera. Both are imperative to a game feeling good to play, so balancing these two aspects is a constant struggle throughout development and especially in the final pass before shipping the game.
When optimizing for various platforms, the specs of each platform become a deciding factor for the priorities of each optimization. At the moment our focus in is on PC (Windows) and Xbox One. For Windows machines there is a huge variety between high and low end PCs, while Xbox One has less than ten out of the box hardware options. While we want to use the additional power provided by higher end platforms, we also want to make sure users with lower spec platforms can enjoy the same core experience. There are also bugs and glitches that are unique to each platform due to differences between processors, graphics cards, memory and hard drive space.
For months now, our team has been hard at work on optimizing a variety of different performance issues. Performance bugs come in many varieties: hitches, spikes, dips, and reliably slow areas. Hitches, spikes and dips are usually caused by a specific error in a script or asset, which needs to be hunted down and cleaned up. Slow areas usually just require tightening the belt of memory usage, reducing quality or number of assets, or being more aggressive with suspending other parts of the game to alleviate resources.
Testers (a combination of HUWIZ and our internal team) go to each corner of the solar system and compile the raw data of each areas frame rate using a counter on screen and testing various behaviors in each area. From here they focus on combing through areas that had unexpected or unstable behavior. The next step is to determine priority of each issue and isolate what the culprit of the performance hit is. This is done with a series of simple tests aimed to answer some of these questions: ‘Does this frame rate drop happen when I look at a specific asset or in a specific direction?’ ‘Is there a visual effect or piece of audio that could be involved?’ ‘How reliably can this frame drop be reproduced?’. Answering these questions makes it easier for the Tech team to begin diagnosing.
When the testing team has collected enough information to reproduce the frame rate drop our Tech team can collect more detailed information with a tool called a profiler. A profiler acts as a log that captures millisecond of what is happening on the backend, displaying a visual graph that shows how much time each script and asset takes in that fraction of a second. From there we can see obvious problems or choose areas to do further research into. For issues that don’t seem to involve our own assets and scripts we send tickets to Unity for feedback, insights ,or bug fixes on their end. The team also has to be extra careful that a new optimization or bug fix doesn’t introduce new bugs to the game.
At this point in development the whole team is in a routine of making a fix, testing to be sure that the fix works, and ensuring the fix doesn’t introduce new problems. We often joke that just like the character in the game, we are stuck in our own time loop of game development, seemingly fixing and polishing the same issues over and over again. Despite how the grind feels, however, every day that we pour into Outer Wilds contributes measurable progress towards our goal of releasing the most polished and fun game we can produce as a studio.
The Game Awards
For those of you looking for something to watch next week, The Game Awards will be on December 6th starting at 5:30 PST.
This is an important evening for video games and we want to encourage all who can to tune in via preferred streaming platforms. As developers we think it’s important to support not only the games that are part of Annapurna’s library, but also those games that have innovated and changed the way we understand the medium in the last year.
For those of you who didn’t catch our post on Twitter about our vanishing product page: