The roots of Anomaly Korea reach back to the time when 11 bit studios concentrated on PC and Xbox and our team had nobody with experience in the area of mobile platform programming. Nevertheless we were tempted to try out the mobile side. The company was young those days, the team was small, so we decided to make a tiny game that was a spinoff of Anomaly's PC version. Nobody knew what the new platform would be capable of, so we took for granted that a phone would not be able to generate PC-class visuals. We decided that the mobile version would be a simple game based on a tactical view.
The first stage of our work was to run our engine on iPhone. The PC version was using up my whole daytime work, so iPhone porting was made during my nights. To provide myself optimal work conditions I sent my family for a seaside vacation. Step by step, I compiled and ran our engine on the new platform. And then a shock came – on loading a level, the game started to work just fine. The framerate was very slow – up to 2 fps – glitches everywhere, but not visuals were a bottleneck. It was game logic based on Lua scripts together with a garbage collector function. When I switched them off it turned out that a scene developed for PC is rendered in about 8 fps on a tiny device that fits in your pocket. No fancy effects, but the efficiency of the device took us all by surprise. Comparing our results with the simple games filling up the App Store we realised that we were able to develop something unique. Making our first game – Anomaly Warzone Earth – started at full speed.
There remained many problems to be solved, however. The game's Lua logic, impossible to optimis, was a challenge. So we rewrote the game's mechanics to C++, and we adjusted several elements so they would fit touchscreen specifics. For example, we removed a commander running around. We built levels anew. We took that opportunity to adjust missions to mobile device conditions – more levels but shorter ones. To get better framerate, we optimised assets, reduced the number of triangles, rebuilt sfxs and particle systems. Lights were a challenge. PC version had fully dynamic lights realised in light prepass method. That was too much for a mobile GPU and not good enough memory transfer. So we rebuilt our render system to use forward lighting.
Later, studying the architecture of a PowerVR chip, I realised the reason it surprised us with its efficiency was a tile-based architecture. The GPU divides a screen into tiles then renders each of them and stores the image in small but very fast internal chip memory. Only when the rendering is finished does it write a whole tile in external memory. That greatly reduces the demand for memory transfer, which is a downside in mobile devices. Very clever solution.
Though the tile-based renderer helps much in displaying a complex level, it does not do much for methods like render to texture. Here, without a good memory transfer and a fast pixel shader, we go no further. We tried to use RTT methods in AWE, we use them intensively on PCs, unfortunately the efficiency of iPad1-class devices allowed us to use them in very limited way. With their help we made a lightmap composition with dynamic unit shadows (we wanted to avoid duplicated shadows) and we displayed units outlines – a characteristic visual feature of our game. For real postprocessing there was no power.
A lot of time has passed since we published AWE. A year in mobile device development is like ten years in consoles. When iPad2 appeared, it became obvious that its GPU efficiency skyrocketed. Next generations were even faster. We decided to take advantage of this while developing Anomaly Korea. Better memory transfer and more efficient pixel shaders allowed us to use real postprocessing. Thus, Anomaly Korea renders a scene not to the screen but to a buffer where various filters are applied. It granted our art director an opportunity to use contrast, saturation and a glow effect, which softens visuals. You can see all that when you compare screens. Colors in Anomaly Korea are deeper, more realistic. Better vertex shaders' output allowed us to animate many additional objects and give them life (skins are applied by GPU). More powerful pixel shader and faster memory granted us zoom blur effect in a tactical view, lens flares and decals. We added many more details that we could not afford just 18 months earlier. Still we had more power at our disposal, so we added antialiasing so that power would not go to waste. The effect is that Anomaly Korea does not compete with its predecessor but with the PC version.
Unfortunately there was a trend in mobile devices that we did not approve. Their makers began to race for a higher resolution. It grew faster than devices' efficiency resulting in less computing power for a pixel. An example of this would be the third generation iPad. It occured that in its native resolution it is not able to carry out all the effects we needed. Very high resolution allowed us to give up the antialiasing but some of the effects like zoom blur remained to hard to be rendered by the device. Fortunately iPad4 was more powerful and its resolution remained – that saved the day.
When it comes to phones with Android system, our experience is similar. New phones and tablets are many times faster than former generations. Although, making a port of AWE for Android I had to cope with devices' incompatibility, it is pretty much history. New devices have better made drivers and well-written code using OpenGL ES just works.
Today, looking at Anomaly Korea screens, we laugh at our ancient thoughts of making it in tactical view only. The underestimated possiblities of mobile platforms allowed us to create a game that Apple placed in a category of „benchmark games” – because of the visual quality of the game. Anomaly Korea takes visuals to a much higher level, because our experience grew together with the mobile devices efficiency. It would be premature to say that mobile devices outran big consoles but the final effect is in many ways similar.