Answers by Dmitry Lisichkin, Skyforge Lead Game Producer
As developers know, game ports are not always straightforward — some games are easier to port from one system to the next, others are not. It all depends on the type of game, the systems you are porting from and to, and so on.
Following the successful port of Warface to the Switch, MY.GAMES’ studio Allods Team tried its hand at porting the MMO Skyforge. Some things went really well, and others were more difficult. Below is a breakdown of the five things that went right, and the five things that proved more challenging — and how we overcame these obstacles.
1. REMOTE DEVELOPMENT: For the Allods Team, the porting of Skyforge to the Switch was one of the first big tasks that they did entirely remotely. We definitely learned a lot in terms of distributed work, not only with each other, but also with the development hardware.
There were a lot of technical difficulties, starting with providing all the necessary access to the repository, infrastructure servers and services, ending with the fact that it was not possible to issue devkits to each developer at home. We had to leave devkits in the office, connect and work with them remotely. At the beginning of lockdown we had challenges with the interactions within the team. For example, if there were any difficulties with the build, devkit, SDK, etc., the first time solving the problem and disseminating information remotely severely hampered the process as compared to what we are accustomed to being together in an open space.
2. FPS: When porting Skyforge for the Switch, we wanted to achieve 30 FPS in 720p, while keeping decent quality graphics and sound. So, the performance of the early versions on the Switch was a pleasant surprise! For the very first build, we expected no more than 15 FPS — but got almost twice this. We did not have the video render implemented yet, but the input, sound and game logic were processed. This first port version ran fine at 25-30 FPS. This stage was vital in assessing the riskiness of the project. There is no point in investing many months in porting rendering if the CPU performance of the undocked version won’t get above 10 FPS. As playing and testing without rendering is quite complicated, we used a client logged from a PC to the same server to see ‘through its eyes’ what the player was doing on the Switch, and make sure everything was working correctly.
3. SWITCHING FROM TV MODE TO PORTABLE: Luckily, this was relatively easy for Skyforge because our interface adapts well to various resolutions, optimizing the appearance of the UI for working on a small screen. To make it comfortable to play and interact with the interface on a small screen, it was necessary to turn it a little and enlarge some elements. There are about 300 different interface elements in the game and editing each one manually just for the switch is labor-intensive both in production and in support, so we decided to do it during the game programmatically.
4. HANDLING EMERGENCY SITUATIONS: There is no Internet connection. There are some problems with the user account. There is no access to some Nintendo services, for example, to the store. These are problems we encountered. Fortunately, the Nintendo SDK has a system for diagnosing such problems and often you don’t need to figure out the cause of the problems or fix them by yourself. For example, if the user has flight mode enabled, instead of the abstract message “failed to connect to the server, try again later”, we can “ask” the console about the network connection and it will “tell” that flight mode is enabled and prompt the user to go to the appropriate settings section to disable it. Very convenient!
5. TOUCH SCREEN SUPPORT: This is a unique feature specifically for the Switch. We managed to support it quite easily. The PC version of the game has a cursor and the game is adapted to control with the mouse, and touch screen is almost the same. Unfortunately, there are still problems with touch screen support and not all interfaces work perfectly with it at the moment, but the basic functionality was supported quickly enough.
1. CPU CONSTRAINTS: By far, the biggest challenge was the resource constraints of the platform. The Switch CPU only has three cores, for example, and during early development one core was completely engaged in audio processing. This was not an optimal way to use limited resources, so we decided to change the audio compression algorithm for this platform. However, this led to a significant increase in the size of the game client, up to 9GB for sound only, which did not suit us either.
Therefore, we decided to use a codec with better compression, but a higher load on the CPU in those parts of the game where the load is not very high, i.e. in situations where there are not a lot of characters, monsters and battles in the scene, such as in game dialogue. This worked well and provided us with the balance we needed.
2. RAM CONSTRAINTS: There were also complications with RAM. The Switch only provides slightly more than 3GB, including video memory. Of course, this is very little for modern PC games. Even on 32-bit systems, you can get more performance with separate video memory. We had to do a lot of work to optimize memory consumption, so that each level in the game would fit in memory with a margin.
3. OPTIMIZATION: The trickiest thing was to optimize what had already been optimized three times in the past for our launches on PC, PS4 and Xbox One. At some point you just run out of creative ideas. To achieve the desired results, we had to reduce the size of the textures and details, and removed some effects that made the picture more attractive and deep.
4. ONLINE STABILITY: Skyforge was originally exclusively online. Stability required a lot of optimizations, both for the content and for the game client. We had to tune down the quality of graphics and abandon some of the engine features that are more “costly” for the processor. We had to significantly simplify the sky and 3D clouds, GOD Rays, DOF (Depth of Field).
5. PLATFORM LIMITATIONS: While porting to the Switch can be challenging, especially for such massive projects as MMO, it is not impossible. By identifying the areas where you expect to have challenges, especially in terms of resourcing, you can save yourself from unhappy surprises later on. But you must ensure you lean into the platform’s strengths as well. A strong portable mode, for example, will help your game stand out among other ports.