Nintendo and big third-party games have always had a tricky relationship. Sometimes it’s because Nintendo is being a jerk, but more often these days it’s because Nintendo makes hardware so different from the competition that it’s tough to just make the same game work across every machine. Developing a game that both takes advantage of the 4K power of the Xbox One X and runs smoothly on the mobile chips of the Nintendo Switch tablet is quite the challenge.
But it’s a challenge worth attempting as more players fall in love with the Nintendo Switch and thirstily demand more games get ported to it. It’s a task that usually requires outside help, and arguably the best-known studio for high-quality Switch ports is Panic Button who worked on impressive hardcore conversions of Doom, Wolfenstein, Rocket League, and most recently Warframe.
However, as longtime players in the video game outsourcing cottage industry, Singapore studio Virtuos has also quickly built up a solid reputation for Nintendo Switch ports. They handled two of the higher-profile third-party releases this fall: Starlink and Dark Souls. We recently got to talk with Virtuous about its work with the Nintendo Switch and advice for other developers looking to bring games to the platform.
What’s the studio’s background when it comes to porting games to other consoles?
Virtuos has an extensive background with many AAA adaptations for franchises such as Final Fantasy, Assassin’s Creed, and Batman. In 2018 alone, we worked on Hyper Universe Online, Dark Souls Remastered, Starlink, and Vampyr.
How much did the studio know about the Switch and its hardware before working on their first project for it? What were the expectations?
Nintendo had already introduced us to the hardware, and let us see a prototype before we began working on any projects so we knew quite a bit. It was only a few months after this that we began our work on L.A. Noire. By that time, we were already familiar with the hardware manuals and early versions of the SDK.
What has been difficult in porting games to Switch? What has been easy? What new things do you have to consider (like handheld vs. docked performance, technical trade-offs) when porting to Switch versus other consoles?
The power differences posed a challenge, but nothing that can’t be overcome. GPUs are highly scalable, while CPUs can be a little more tricky. For example, when in handheld mode, we try to take advantage of the small screen by reducing post-processing workload and other rendering optimizations.
Other challenges usually come from the games themselves, and the unique ways they were put together. A typical example could be bringing an older 32-bit game to a 64-bit platform, where you need to carefully plan your initial development stage so that you get to something playable as soon as possible.
You also need to consider third party libraries (like Havok, for example), where you need ensure the version you’re using supports Switch. However, that may also require modifications on the game, which may have used a different version. Finally, an interesting feature of the Switch platform is Amiibo support, which seems easy at the beginning, but requires a some engineering and design effort to get right, especially for all the “what if” scenarios.
What kinds of unique challenges have L.A. Noire, Starlink, Dark Souls, and any other(?) specific Virtuous Switch ports posed?
For Dark Souls, performance optimizations were the most challenging. The original game had some unbalanced performance – everyone remembers the choppy frame rate in Blight Town and some boss fights. Our task was clear – make sure the game runs smoothly at all times. It required several rounds of CPU and GPU optimizations, including a dynamic system that detects incoming framerate drops and helps reduce the GPU load to a reasonable level. The first generation of this in-house system was designed for the L.A. Noire Switch port, and we significantly evolved it for Dark Souls.
Our client had specific requests when it came to performance and user experience, so we even invited their small team to join us on-site during the most critical phases of development to reduce time required for approvals & feedback.
What advice would the team give to other studios looking to port games to Switch?
Our best advice: Don’t try to force what worked on other platforms on the Switch. You might need to change your approach to get the most out of the hardware.
Common areas to focus should be data compression, forward vs deferred rendering, vertex processing and a scalable threading model. Teams should also start considering Lotcheck requirements from the beginning, especially for features that involve multiplayer or something non-standard, in order to avoid surprises during the final phase of bug fixing.
Nintendo has a pretty sophisticated online system for creating Lotcheck related documentation, test cases and even automated testing, so take advantage of it. Start preparing these things early, upload a build for automatic test as soon as possible and deal with any issues even before your final crunch. Don’t forget about Amiibo – if you are considering Amiibo, make the decision early so that you have as much time as possible to design and test full support including extreme cases and failure scenarios.
Thanks again to Virtuos for answering our questions!