Dex began its journey as a game for Windows, controlled by keyboard and mouse. Although we promised in our Kickstarter campaign to ultimately bring Dex to more platforms, at the beginning we were focused almost solely on this PC version.
One of Dex’s strengths is its vast hand-drawn locations of the city of Harbor Prime. Every corner and every facade is unique. Our intention was to avoid a patterned repetition of the environment so it was necessary to use a high number of sizable textures in the game. Of course, the more of these textures you run through the graphics memory at any one time, the higher the memory demands. This was very much the case with Dex and its intricately designed building facades alongside multiple layers of foreground and background. Most PCs and consoles have no problem coping with these requirements but smaller consoles and mobile devices are fundamentally not powerful enough.
One of the platforms we initially wanted to bring Dex to was OUYA. It’s a small game TV console built on an Android platform and, since it was the least powerful of all platforms we were aiming for, we were forced to get serious with our optimization of the game. Its small size and low specs, especially memory, meant it just couldn’t compete with even low-grade PCs. The easiest solution was just to switch off some of the background layers to reduce memory demands during certain scenes. But we felt this solution was too drastic – it was extremely important to us that we preserved the visual quality of the locations as much as possible. Therefore, as a compromise, we created special versions of the scenic graphics with several layers baked together. With this technique, we would sacrifice some of the spatial effect of independently shifting background layers but preserve the overall visual impact. Unfortunately, however, the OUYA project still ended in failure and was canceled before we released Dex.
During our development of Dex Enhanced Edition for PC, we improved the controls for gamepad. As a classic RPG, Dex contains many actions that a player needs to perform simultaneously. This dynamic needed to be transferred from the keyboard to a gamepad in a way that would feel consistent across all game controls.
We needed to stay as loyal as we could to the deeply-rooted traditions of how other gamepad-controlled games operate (e.g. shooting with a trigger instead of a button); we wanted to make playing ergonomically comfortable (e.g. walking with a gun drawn while crouching and aiming independently); and have it all internally meaningful (e.g. requiring controls for inside AR to be similar to outside).
All of this pulled us through many iterations. For the PC version, we left in the option to customize controller settings, as this would also cater for the many different configurations that exist across the most popular gamepads.
Modern consoles are at least as high-performing as regular PCs so we did not have to worry too much about optimizing performance. There are, however, much higher expectations for the quality of published games, so we felt it necessary to add a user help feature and improved tutorials. We also enabled use of the player’s profile as well as synchronized saved games with the cloud, achievements and so on.
Contrary to our initial plans, we decided to use this opportunity to additionally release Dex on the mobile console, Playstation Vita. This presented new challenges. All existing versions of Dex had been designed for large screens, so the first adjustments we had to make were to the user interface – enlarging texts so they could be easily readable on a smaller screen. Due to the different quantity and layout of buttons, it was also necessary to remap and, in some cases redesign, the control settings.
Similarly to the OUYA, the PS Vita console has less memory available due to its size, and this meant significant adjustments would be needed for performance purposes too. It was at this point we were glad for our past efforts for the OUYA – especially when it came to handling the textures. However, for the Vita, it was still not enough to just bake together layers of textures – we would also have to decrease their size. But luckily we could afford to do that, thanks to the smaller resolution of Playstation’s Vita display. Even when the size of graphics was pushed to a minimum, though, it was still necessary to squeeze out more saved memory for optimal performance. This is when we proceeded to hack the code of the game itself. It was some job, as you can imagine.
Instead of holding all dialogues with game characters in the memory, we just pulled up the text of one character talking at any one time. In the same way, we always only left in the memory the texts and comments of the selected language instead of all eight supported languages (as the game was originally built around). If the scene contained several rooms, the memory would only contain data for the current scene and then would load a new interior only as the player entered the next room. Thanks to tricks like these, we managed to get the game into a fully playable form.
Even though we have mounted Dex onto many different devices and platforms, we used the same source code the entire time, which occasionally contained notes for ourselves on what should behave differently on a different platform. It was supremely helpful that we did not have to make special adjustments across multiple versions of the project while making additive changes. We could always just make the necessary adjustments in one version without causing issues with the others. A big thanks goes to the Unity game engine for making this porting significantly easier than it could have been.