The Ultimate Challenge: Porting Assassin's Creed Shadows to Switch 2
In a fascinating journey, we delve into the world of game development, specifically the ambitious endeavor of bringing Assassin's Creed Shadows to the Switch 2 console. This article explores the behind-the-scenes efforts and the unique challenges faced by Ubisoft engineers, shedding light on what it truly means to create an 'impossible port'.
Our conversation with the Ubisoft team, known for their expertise in game development, revealed a wealth of insights. We discussed their previous coverage of the Switch 2 port, including its lack of ray-traced global illumination (RTGI) and the smooth variable refresh rate (VRR) in portable mode. We also touched on frame-pacing issues in docked mode and the handling of screen-space ambient occlusion (SSAO), among other technical aspects.
But here's where it gets controversial... The team revealed that Switch 2's memory constraints were a significant challenge. Nicolas Lopez, Rendering Technical Architect, explained the difficulty of finding space for RTGI, which led to its removal from the Series S version. He suggested that memory shortages could have caused the game to crash, highlighting the delicate balance between performance and stability.
And this is the part most people miss... The team's innovative use of the Async Compute Queue (ACQ) on Switch 2. Lopez described it as 'very crowded, almost full', requiring aggressive management to overcome 'challenges with shader execution cost'. This approach, while effective, also introduced new complexities, such as the need for 'heavy micromanagement' to spread work across the ACQ.
To optimize the game further, Ubisoft developers utilized a pre-calculated, probe-based GI solution, which provided an easy win. However, they had to replace the ground-truth ambient occlusion (GTAO) variant of SSAO with a 'cheaper' version known as screen-space bent cone occlusion (SSBC) due to Switch 2's limitations.
The team also made concessions in terms of screen-space reflections (SRR), removing them entirely to free up GPU time on Nintendo's T239 hardware. This trade-off, according to Ubisoft, resulted in a gain of approximately 1ms in docked mode and 2ms in portable mode.
When it comes to the subtler cutbacks, Ubisoft focused on AC Shadows' simulation elements. Senior Engine Lead Bruno Champoux explained how they increased the distance between each cloud simulation point to improve efficiency. Similar tweaks were applied to cloth and rope assets, reducing the number of 'bones' in their simulation, while other cloth assets were disabled altogether.
But what about the game's install size? Ubisoft's solution was to remove the largest assets, such as 4K textures and 'level-of-detail (LOD) zero' models, from the default installation package. This reduced the game's size to a more manageable 61GB, ensuring it could fit on a physical cartridge. Local installation, according to Champoux, is crucial as the cartridge's speed cannot keep up with the game's demands.
One of the most intriguing aspects of the port is the use of Nvidia's DLSS technology. AC Shadows' Switch 2 port employs a potentially higher-quality DLSS variant, offering similar stylization to the PC version running with DLSS 3.7. Lead Rendering Programmer Sebastian Daigneault explained that they started with tests of Anvil's built-in TAAU system but switched to DLSS due to its superior upscaling capabilities from lower resolutions to 1080p.
However, the port still faces challenges, particularly with frame-pacing issues while docked. The developers believe this is due to operating within a tight frame-time margin, leading to over-budget frames. Handheld mode, on the other hand, largely avoids this concern thanks to the use of VRR with low frame-rate compensation, achieving a more stable frame-rate.
So, what's the key takeaway for game makers aspiring to port to Switch 2? Start early, advises Daigneault. He emphasizes the importance of planning and leveraging scalability systems, especially on low-spec platforms. Lopez adds that Nintendo has significantly improved its SDK, tool chain, and hardware, making it a pleasure to work with. But he also highlights the unique challenges of understanding the specificities of the GPU architecture, which can make the porting process seem 'impossible' at first.
What are your thoughts on the challenges of porting games to different platforms? Do you think Ubisoft's approach to Switch 2 porting is commendable? Feel free to share your opinions in the comments below!