Much was learned about porting in the early days of smartphone gaming.
After a stretch that saw straight conversions of console titles clutter touch screens with counter-intuitive virtual buttons, it became apparent that mobile was a very different platform. And when a platform is notably distinct, it's usually a safe bet that designing for the platform - rather than around it - is best.
With the arrival of the still sought-after Nintendo Switch, suddenly there is a new dynamic to address with regard to porting. Many games on PC and console would fit the new platform broadly speaking, but what about making a game work gracefully as a user moves the Switch between its various modes? It's a question the team of three at Art in Heart were keen to explore. The studio's acclaimed, stylised run 'n' gun platformer GoNNER had won an IGF award and another at Nordic Game, but it was isolated on PC. Art in Heart wanted to take their creation to a new audience.
"Why would we port it to the Nintendo Switch?" Art in Heart founder and developer Matius Dittrich asked, addressing an audience at Unite Europe. "First of all, it's an opportunity, and it's Nintendo. I don't know about you, but why would you say 'no' to that? It's like a childhood dream coming true. Finally that's about to happen.
"Also, it's super-cool to be this early on the process. We get to see a lot behind the curtains of what's going on within all these companies, and how the console works, and that's been a really cool ride. It's kind of amazing to be trusted with that - both the technology and the behind the scenes stuff. It's been a really fun challenge."
Porting the game to Switch came about thanks to GoNNER's PC publisher, Raw Fury. It put Dittrich - better known as Ditto in the developer community - in touch with both Nintendo and UK studio Coatsink Software. The latter sent gameplay programmer Marty Green to work with Dittrich on porting and optimising the game for its new home on a Nintendo platform. As Dittrich and Green talked through the process they mentioned "fun" time and again, and are apparently delighted by their first experience with a Switch. But that's not to say the labour was without its difficulties.
"Some of the challenges we had included the inputs, because obviously on a PC we've just got mouse, keyboard and controller, and that's normally it," Green said. "Whereas with a Switch we've got TV mode, and we've also got handheld mode, and we've also got tabletop mode. All those different modes have to be tested. One of them might break, and you might not find out for a few weeks. You need to make sure you're testing all those different modes all the time."
Dittrich and Green quickly discovered that the variation in the Switch's modes didn't stop with its three core arrangements. Different combinations of connected and disconnected Joy-Cons is something the pair recommend testing thoroughly, as they experienced difficulties when just one was connected. Equally, save states were initially a test of Dittrich and Green's skills, prompting crashes when users were interchanged.
"With the Switch, by default there was no player pref support," Green explains. "Nintendo helped us out with all that side, though, and we managed to get all the save system implemented within that. We had to create our own player prefs, but it wasn't a lot of code to write anyway, so it only took a few hours to get working."
It was also deemed important to get GoNNER running at 60FPS, the frantic gameplay demanding silky smooth movement. With some sections of the game boasting 300 enemies on screen at a time, optimising wasn't simple. Thanks to Nintendo's SDK and Unity plug-ins, they said, every hurdle they reached was overcome relatively easily.
"In the end we pooled objects, which means we have a bunch of objects in a big list, and we only instantiate one," Green said. "Then we reuse those objects over and over again."
In fact, getting the game to run in a rudimentary fashion took approximately two days. Optimising it, however, has taken rather longer.
"The couple of days to get GoNNER running on the Switch were because of all the things GoNNER does that are PC specific," Dittrich said. "I made a bunch of super-small multiplayer games for the Switch during this time, just for fun, and that is literally just clicking the 'play' button in Unity. The plug-in made that very easy for us."
Back over on GoNNER, originally conceived as something of a 'Super Meat Boy with guns', input handling and audio presented the last significant thorns in the side of the porting process.
"For me the trickiest part was all the input handling in Unity, but that is usually a pain anyway," Dittrich continued. "A big part of the optimisation side of getting GoNNER to run was audio. I mentioned that out of three people working on the game, two of us are audio people. It's been like a huge part of the whole game. And GoNNER plays a lot of sounds. Because of the codex, or something in Unity with how it works with the plug-ins, at some point we had to limit the amount of sound effects we play."
The solution came almost by chance. Art in Heart had implemented ducking in the PC original - the method that sees background sounds drop in volume for the period a new audible effect kicks in. Ducking is commonly used for the likes of shotgun fire, where it gives the blast of a weapon more punch and presence. Collating GoNNER sound effects that triggered an audio duck in the PC original served as a list of priority sounds, making choosing what made it to the Switch a relatively straightforward task, and demonstrating the creative mindset needed to solve many porting tests.
Ultimately, Dittrich and Green spoke warmly in their deep dive into porting to Switch. This is the experience of a single team, which is too small a data set to claim the Switch is a technical breeze for the many small developers taking PC titles to Nintendo's new platform.
The signs are good, though, and Art in Heart and Coatsink have clearly had fun, whatever the barriers to progress.