VIRTUOS EXPERTS TALKS #3

The third in a series of regular articles highlighting learnings and best practice from Virtuos’ global development, Art and VFX teams.

The team at Virtuos has been making a name for itself over the past few years by both developing original content and remastering existing content for the Nintendo Switch platform. The company has worked on LA NOIRE, with RockStar Games, DARK SOULS with Namco, and of course, STARLINK with Ubisoft. Virtuos has already shown themselves as one of the premier developers working to bring amazing titles such as these to the Switch, with more soon to come.

2.0 starlink 720 1080_0.jpg

Adaptive resolution in different usage scenarios of Starlink: Battle for Atlas

From a developer’s point of view, many people are stating that the Switch is Nintendo’s easiest platform to build games for, ever!

This is based on the whole idea that the Switch does not just offer one singular console experience but a whole range of multi-platform features. As we know, it can be placed in a dock to link to a TV, or be removed from the dock and played as a handheld by utilizing the two detachable Joy-Con controllers, perfect for multi-player sessions at home or on the go.

Many developers were expecting major headaches as they sought to get their games optimized for large TV screens and handhelds alike – but many have credited Nintendo with almost eliminating hours of tedious fine tuning. It’s not quite automated, but it’s not a factor that limits multi-screen success.

Jonathan Boldiga, Senior Technical Director at Virtuos, digs even deeper to share some superb tips on working with the platform.

First and foremost, it’s becoming clear that developing on Switch is getting easier and easier. With such a solid toolchain, easy to understand (and extensive) documentation, and great support staff, it’s rare to come across any real roadblocks thanks in large part to their fantastic dev support.

The handheld screen offers 720p resolution, the screen is bright and its colors are vibrant. When plugged into the TV, it hits 1080p. To optimize performance, a few key observations will help developers maximize the GPU potential. This includes using texture compression and reducing texture sizes to improve performance and reduce the memory footprint.

Vertex processing can also get expensive so mesh geometry should be reduced.  There are many great middleware tools such as Simplygon and InstaLOD that do geometry optimization very well.

If a developer’s rendering pipeline uses deferred rendering, reducing the number of render targets in the GBuffer can help with performance by reducing bandwidth usage.  Virtuos achieved good results, using only two render targets for its GBuffer layout however this may require some rendering feature tradeoffs

Getting deeper into the nuts and bolts – as with all modern consoles, the Switch CPU has a multicore configuration which requires games to be multithreaded in order to get the most out of the hardware.  Engine’s that are predominantly single threaded can pose some optimization challenges.

In Virtuos’ work on Starlink and L.A. Noire, success was derived from the following threading model:

  • Main Thread (1) – Dispatches work to the different job threads.
  • Render Thread (1) – Submits rendering commands.
  • Short Jobs Thread (2) – Jobs that need to be done in one frame
  • Long Jobs Thread (2) – Jobs that can be done over multiple frames

Utilizing a depth pre-pass may be beneficial depending on your pipeline setup.  Virtuos found big gains using it on some titles and less so with others.  It’s recommended to at least give it a try, as it can be implemented rather quickly in most engines.

It’s also recommended that adaptive resolution is adopted as it is very useful for maintaining a constant framerate when the GPU is overloaded.  Experimenting with different resolution “floors” for handheld mode versus TV mode is critical to finding what works best with each specific game.

For streaming, loading, and other I/O operations, a good compression scheme is extremely useful and cannot be overstated.  This is useful for reducing data size so it can fit on smaller cartridges as well as improve streaming performance.  On recent projects, LZ4 was the go-to compression method with a decent compression to decompression ratio.

Experimenting with commercial middleware solutions can often produce better results than LZ4 but the titles in question didn’t really need the additional compression or decompression performance. Testing LZ4, zlib, zstd, and commercial middleware offerings is highly recommended, as results may vary from title to title.

As a conclusion to this overview, there have been a few areas that need to be looked at and topics that the Virtuos team has highlighted about the platform that may be relevant to other developers.

  • When using deferred rendering, Virtuos is finding it’s important to have a compact GBuffer to reduce bandwidth.
  • Compared to other platforms, overall the GPU is weaker, the CPU has less cores, and obviously it has docked and undocked modes. None of this impacted the success (to date) working with Ubisoft.
  • CPU optimization can be challenging due to the limited number of cores.
  • Certain effects and materials need to have custom optimized paths specifically for Switch.
  • While seeming counter intuitive, hitting framerate targets is actually easier in handheld mode.  This is because docked mode has much larger resolution targets.
  • Moving forwards, it’s certainly worth looking into non-deferred rendering models on the platform to see if they might have better performance. Potentially, this could be either traditional forward or forward+ rendering.

L.A. Noire docked and undocked gameplay test

Overall, the Virtuos team has had a lot of enjoyment working on the Switch, and sees many new opportunities for existing IP to come across to the platform. In the coming months, the company hopes to unveil new projects that take advantage of everything the Switch has to offer.

About Virtuos

Founded in 2004, Virtuos Holdings Pte. Ltd. is a leading videogame content production company with operations in Singapore, China, Vietnam, Canada, France, Japan, Ireland, and the United States. With 1,600 full-time professionals, Virtuos specializes in game development and 3D art production for AAA consoles, PC, and mobile titles, enabling its customers to generate additional revenue and achieve operational efficiency. For over a decade, Virtuos has successfully delivered high quality content for over 1,300 projects and its customers include 18 of the top 20 digital entertainment companies worldwide. For more information, please visit: www.virtuosgames.com.

About Jonathan Boldiga

Serving as Senior Advanced Technical Director at Virtuos Games, Shanghai. Jonathan is a seasoned technical director with a demonstrated history of AAA game development. In addition to his solid technical background, over the years Jonathan has directly managed large engineer teams and has accumulated rich HR management, project and business management experience.