Skip to main content

Xuan Yuan Sword VII

Porting an open-world RPG to Switch.

One of the projects I participated in during my time at Catness Game Studios was the Nintendo Switch port of the video game Xuan Yuan Sword VII. The project was already underway when I joined, and my main tasks involved visually adapting the game for the console without compromising performance as much as possible.

The project presented a significant challenge due to its scale, being an open-world RPG with complex graphics and areas dense with both visual and logical elements. Additionally, we operated with a limited team of two people, and the target hardware—the original Nintendo Switch—presented significant restrictions in GPU power and CPU budget. These limitations forced us to make very careful decisions regarding visual quality and scene complexity to achieve a stable performance.

Introductory scene of the game on its Nintendo Switch version.

To carry out the porting in a way that maintained an acceptable framerate (between 24 and 30 FPS), we had to implement hundreds of adjustments. Furthermore, we did not have access to many of the original assets outside of the engine, so our ability to modify certain elements, such as cloth physics, was quite limited.

Dynamic Resolution

Due to the project’s complexity, dynamic resolution scaling (DRS) was applied to cushion the impact of the huge variability in scene complexity on the framerate. This allowed us to maintain native resolutions during low GPU-load moments and reduce resolution only when necessary.

Final render

Basic functionality of dynamic resolution scaling.

Polygon Count

The game featured areas with an enormous amount of polygons. While this wouldn’t be a major issue on more powerful platforms with modern hardware, it was a severe bottleneck for the Switch. Some areas contained several million polygons, which, combined with a dynamic directional light system, resulted in frame render times between 60 and 80 milliseconds (12-16 FPS). Consequently, we had to adjust the LODs (Levels of Detail) for all geometry in the game. Furthermore, it was necessary to reduce the shadow draw distance, especially in densely vegetated areas, which required manual study to find the appropriate balance between visual quality and performance across most of the map.

Final render

Area with high vegetation density.

Combat

One of the primary challenges of the port was the combat system. It utilized highly complex components and functionalities that put tremendous stress on the console’s CPU when facing multiple enemies simultaneously. To automate the optimization, I designed and programmed a system that reduced the update cost of on-screen characters. This system was built to be versatile, allowing it to be implemented in other projects within minutes. I detail this system in the Significance Manager section.

Final render

Combat scene with one of the game's early bosses.

Gameplay of the game running on Switch at 1080p.