The making of Uncharted: the Nathan Drake Collection
Bluepoint Games discusses PS4's finest remaster with Digital Foundry.
Sony's big first party game for the holiday season is a remaster - but not just any remaster. Uncharted: the Nathan Drake Collection is a beautiful recreation of three of PlayStation 3's finest games, upgraded not just with higher resolutions and smoother frame-rates, but with top-to-bottom improvements of the original artwork, with enhancements made across the board. This works in combination with new gameplay modes along with a comprehensive re-evaluation core gameplay systems. We've previously dissected Drake's Fortune, Among Thieves and Drake's Deception in depth, but we still wanted to learn more about how this exceptional project was put together.
Happily, the developers at Bluepoint Games were more than happy to talk about the efforts they put into the game, and as expected, there's a remarkable story to tell here. Marco Thrush - Bluepoint owner and CTO - talks us through the development, from the firm's efforts to improve the original games so that they're as good as you remember them, through to the techniques employed in improving the original titles.
There are some surprises here. For example, Naughty Dog's work on The Last of Us Remastered could only go so far, as the original game was based on the Uncharted 2 engine, making it unsuitable for the Uncharted 3 port. There are also details on the lighting enhancements that improved the classic Uncharted 2. And we get answers on just how Bluepoint managed to cram three Blu-ray-based PS3 games onto one PS4 disc. It's a unique insight into the creation of a remarkable project and we're happy to share it with you.
Our goal was definitely to do a remaster of these games, meaning that we enhance what we can to present an updated and unified collection. We didn't set out to rebuild any assets from the ground up. When you think about the Uncharted titles, they pushed the boundaries at their individual times on the PS3. We improved and created a bunch of new assets, and focused on art, tech, and gameplay changes that would make the games feel like they play the way you remember playing them, and feel good playing in any order in a collection.
We started the day The Last of Us Remastered shipped in June 2014, so that would make it 15 months from start to release. It was definitely our longest project so far, but it was also three full games.
We had the shipped disk images, access to all source code and all source data that still remained available at this point.
Yeah, we collaborated with Sony and Naughty Dog throughout the whole project. We worked with the leads of different departments over at ND, and when it came to gameplay tweaks we all played and tweaked based upon our interpretation of what felt best while being guided by Naughty Dog's and Sony's feedback. It was pretty cool to get feedback directly from Evan Wells on the UDF grenade throws! All of the enhancements to the music were done by the same awesome sound group at Sony who worked with Naughty Dog on the Uncharted PS3 titles.
We initially unified the games as much as possible to allow us to only change things in one place. To initially get the games running on PS4, we started with Uncharted 2, then Uncharted 1 and finally Uncharted 3. After that came the improvement phase, we focused on Uncharted 2 first and then switched to Uncharted 1, with Uncharted 3 running in parallel to both. Final tweaks continued on all three games until the very end.
At the peak we had 48 people: 13 engineers, 17 artists, four production/design, nine internal QA and lots of other helping hands.
All of the work on the game assets were completed in-house.
It was definitely tricky. A lot changed between U1 and U2 in the ND codebase. ND started from scratch for U1 and built upon it for U2 by rewriting a bunch of systems. U3 was built upon U2 with more improvements to systems and some brand new stuff added in to keep things interesting. U1 used its own collision/physics system, where as U2 and U3 used Havok - just to name one example.
The three games don't run on the same engine, you can't just switch U1 over to use Havok and expect the gameplay to remain the same. Each game has its own version of the engine ported to PS4 and only the parts that are truly the same (or parts we changed to operate the same with thorough testing) are actually shared across the three games.
The TLOU code base itself was actually an evolved version of U2 (not U3), meaning it didn't have some of the functionality required to make U3 work. Still, having access to the TLOU engine for reference helped a lot. Once the PS4 versions were initially running (using all the knowledge the TLOU engine could provide) we were hovering at ~30 fps. At the end of the day each of the games are running in their own engines that have been individually optimised to get to 60fps.
Overall, we tried to get all games as close as possible to the same visual target. Mainly, we didn't want there to be a jarring experience between the first two games given the context of the collection.
We always want players to get the game they remembered. So whenever we were faced with making changes to achieve consistency across the games, we kept that in mind. While adding the ability to throw back grenades would have theoretically been possible we realised it would have the potential to change the gameplay too much. In other cases, such as the dynamic difficulty adjustment in U1 and the "bullet sponginess" we had the benefit of lots of players' time and comments to be comfortable with making adjustments.
U1 definitely needed the most love to get it to the state of "how you remember it" from the PS3 days. Our goal was to spend time to make the earliest game feel at home in the collection with the other two games. Some additions such as SSAO, ambient specular, and object motion blur got us a tiny bit closer. The lighting improvements we made to U1 are essentially the same changes we made to U2. Art had to put a lot more effort into U1, updating world and character textures, adding normal maps, adding more geo detail and replacing particle effects.
Some of the tweaks we made were quite difficult to get right; some of the fundamental player systems between U1 and the other games are quite different, so it wasn't quite as simple as trying to transplant some game code from later games to make them feel the same.
Lots of ideas (such as being able to throw grenades back) were discarded early on, mostly because they would change the way the games are balanced. We tried to shy away from making any changes that alter the game substantially from the original unless the desire from Sony/ND was that it should be changed. Other than that, we look at how we remember the games, and how that memory is different from what you see now if you played it on PS3. Then we figure out what we need to do to get it to look good as a game in the present time.
We've done a significant amount of work, unifying the games and improving aspects of control and aiming. We worked on bringing U1 and U3 closer to U2, but we incorporated some global improvements such as reducing the dead zones, and making analogue aiming more responsive and precise across all three games. We also allow players to increase aiming sensitivity beyond the maximum values in the original PS3 versions. Uncharted: Drake's Fortune had the most drastic set of changes, such as including grenade control and functionality that more closely matches U2.
Almost every system in U1 was touched, from aim assists, switching to cover, toggling weapons, throwing grenades, increasing pick-up radius all the way to improving DDA (Dynamic Difficulty Adjustment) and increasing the size of the collision on enemies' heads, so that headshots feel more fair and satisfying to achieve. We could write pages and pages on how many subtle gameplay tweaks we've made to all three games but in a nutshell we tried to make the games feel like you remember them playing instead of how they functionally were. The goal was to update and improve the systems while still keeping the integrity of the originals.
We're not. Obviously running double-buffered would reduce latency even more, but that gain is significantly less when running at 60fps. Bad order of processing logic such as processing input after letting the player logic update, deferred player movement due to physics or other less obvious things can easily add multiple frames of latency to player response.
For U1 and U2 (U3 being a visual target), our artists opened up every single asset in the game, looked at it and improved the ones that they felt could benefit from improving. We also had a full suite of side-by-sides for all the cinematics in the game that were automatically generated, and we stepped through those frame by frame to find assets we wanted to give extra attention to.
Yes, all assets were improved by hand by our artists.
A lot of the lighting differences are due to the fact that the earlier games used a 'fake' ambient specular term. We essentially replaced that with an IBL [image-based lighting] specular approach that is more common these days, and revamped the specular lighting model on the materials to be more physically correct. Then we went in and created new textures to control the specular lighting for every texture. The result of that is a more realistic looking specular which reflects the environment. This means that in some cases you see more specular lighting than before, and in other cases it means you get less specular because it shouldn't have been there in the first place. On a regular basis we would capture PS3/PS4 side-by-side images to compare the differences in lighting and rein in when things were starting to look too different.
Better compression for both audio and video. Removing video content: S3D movies for U3, bonus content for all games, credits movies (we rendered the credits at runtime to save disk space). Removing multiplayer assets helped as well. Lastly, a lot of streaming games improve load time by reducing seek-time overhead and by duplicating assets to place data physically close on the Blu-ray. With all data being installed onto the hard drive (with much faster seek times), we're able to get away with just storing a single copy of each texture and still have everything load in time (or even faster than the PS3). One question we've seen come up is: Why don't you just render the cinematics in real time? The reality is that all the geometry and texture data required to render the cut-scenes takes up way more room than the movies.
We did indeed use variable bitrate h.264 for all movies.
We made the pipeline more automated and implemented it into our PS4 version. We had a set of build machines connected to dedicated PS4's that would render out the frames. Then we automated the whole process of compositing all the cinematics. We ran this every time we deemed necessary. We ended up with ~20 revisions of each cut-scene movie; might be interesting to look at a time-lapse one of these days to see how the cinematics changed over time.
Since storing multiple movies was obviously out of the question, we opted for the cinematics to not have camera motion blur because that matches the default.
Nothing out of the ordinary was done here and all post runs on GPUs now. Fun fact: the post effects between in Uncharted 1 and the latter two are fairly different in implementation, and we had to maintain that to make sure things behaved somewhat correctly compared to PS3.
We started with simple implementations that would run on PS4, then optimised as necessary.
We use a fairly simple FXAA solution. The best way to avoid aliasing is to make sure the content doesn't create it in the first place!
We used temporal re-projected SSAO. It gives a smoother effect without being crazy expensive. Improvements were made in the 1.01 patch to some ghosting artefacts on moving objects that apparently nobody outside of Bluepoint seems to have noticed yet!
We made sure to unify the look of the characters as much as made sense. Part of that was an art pass to make sure the detail holds up properly up close. A lot of texture clean-up was performed and some details were brought over from the later games. In a lot of cases the cinematics, due to being offline rendered, already had the highest resolution textures available on the PS3, so any improvements you see from textures on PS4 are due to our artists. We stripped lower LOD models and just stuck with the high LODs, then improved them some afterwards based on what you could see in the game (specifically cinematics).
I guess the main challenge was getting six years' worth of Naughty Dog's content and code and making it work on a PS4, and then try to improve all of that while also adding new things - so basically, just the sheer amount of 'everything'. The next most difficult task was probably figuring out how to get all the cinematics to render out again (we had to rely on archived data here), and getting them to look the same compared to the PS3.
We try to always be aware of where the performance is currently going, and know where opportunities for optimisation are. We keep that in mind when implementing systems on top by knowing up front how much time we have to dedicate to something. Then it's just digging in and attacking things towards the end of the projects as things become more stable (especially from an art point of view) to get them to where you need them to be. As you approach GMC [gold master candidate] you need to slow down and keep things a bit safer, so it's nice that you get a second chance with the patch where you get to do some of the things you wanted to do but had to cut off.
Every project is a unique snowflake. Sometimes things just click into place, you get a code/data drop, you compile it and can run it right away (with a mostly working PC version to boot). Other times it can take months just to get the original version of the game compiling and running again. This is mostly due to the very special build environments that are required for a codebase that just evolves over a long time at a developer. Other times it's due to not having proper archives and you have to figure out where you get that missing information/code from. All the people working here have been in the industry for a long time and had to deal with different code bases all the time, so that definitely helps as well.
Yes! And there have definitely been times I've said, "I can't wait to see what's under the hood" of a new project.
It's been great to see the reception of UNDC so far. There was a lot of ground to cover in the three games, and it's not until the collection was released that we could sit back and feel a sense of accomplishment. We're enjoying a short breather and are very excited to get into our next project. It's a bit of a different kind of project this time around, and we're very excited about the new challenges it brings.