Which Hardware Considerations Matter During Development?
Tom's Hardware: Even game developers trying simplify their business by focusing on a single operating system still struggle with supporting updates and different hardware specifications. For example, Android comes in several versions and supports an array of platforms including OMAP, Snapdragon, Tegra, and Exynos, with Intel and Huawei soon to follow. How do you cope with different hardware and software variables?
Fishlabs: The Android platform is characterized by a very high level of fragmentation. For us, this is particularly relevant because we have to make sure that the texture compression of our titles is always optimized for and adjusted to the capabilities of the devices in question. For the upcoming All Android version of Galaxy on Fire 2, for example, we had to create half a dozen individual texture sets in order to make sure that the game runs as smoothly as possible on each of the 700+ supported devices. If all goes as planned, the app will recognize the corresponding device’s GPU automatically and download the required texture assets during the installation process.
The CPU, on the other hand, does not yet play as important of a role for us because all our games are GPU-bound. That is to say the GPU limits our titles’ performances. So far, all Fishlabs games perform smoothly on single-core devices as well.
Madfinger: Thanks to our Unity 3D engine, different architectures and OS version do not need much consideration. We can pay more attention to the game itself, instead of the hardware. We focus on Tegra devices because Nvidia provides us with a great support. Moreover, all Tegra devices have similar specifications, so we use it as our main development platform right now.
Mediocre: We originally ported Sprinkle for the Tegra platform. After a couple of months, during which we had a chance to get a feel for the Android market, we decided to do a general port. We restricted ourselves to Android 2.3 and ARM v7 to simplify the development, and block-out devices that are not powerful enough to run the complex fluid simulation in Sprinkle.
We set up a beta program where anyone could apply, and we selected about 50 people with different devices to try the game and report issues. The whole process was smooth, and within a few weeks, Sprinkle was stable on most devices. Hardware manufacturers typically make it sound like their product is very different from the competition, while in reality they are all actually similar from a developer point of view.
Vector Unit: Our approach is to get a representative sampling of each platform in-house for testing, cover as many cases as we can, and then respond to specific issues raised by users when new devices come out.
Personally, I think any hardware like Tegra that supports DirectX textures is easiest to work with. PowerVR has many restrictions (like square textures for compression, as an example). But ultimately, they are all fairly similar.
Tom's Hardware: Current mobile benchmarks used to identify the best-performing platforms do not always utilize the latest 3D graphics technologies. How important is it to use the latest 3D capabilities to balance realism and performance in your games?
Fishlabs: Imagination Technology’s PowerVR is one of the best architectures on the market because its overall texture compression is very good. There are still minor issues with the processing of normal maps, but apart from that, the visual quality of PowerVR-encoded textures is among the best you’re going to find, especially in relation to the file size.
GPU-wise, Adreno and Mali are both quite powerful. The same is also valid for Tegra 2, which supports DXT texture compression that's well-suited for the creation of state-of-the-art visuals in PC or console quality. Let’s wait and see if Tegra 3 will be able to up the ante even further.
Madfinger: There is really no impetus to support the latest graphic techniques. Remember, there is always going to be a lag between standards and actual implementation. We know this from our experience on the desktop, but we have been able to find various different ways to render better graphics.
Mediocre: It is hard to say. However, generally, performance tends to depend more on screen resolution and the graphics driver to some extent, rather than which chip or technology being used. As a disclaimer, we haven't done any side-by-side benchmarks between all of the various SoCs.
Vector Unit: All of our games are somewhat high-end 3D games, and for us fill rate and GPU performance are usually the gating factors. We almost never have issues on the CPU side, even with dual-core or fast single-core devices. Quad-core is great, but what we are really looking for, going forward, is increases in GPU performance.