The roots of Anomaly Korea reach the time when 11 bit studios concentrated on PC and Xbox and our team had nobody experienced in the area of mobile platforms programming. Nevertheless we were tempted to try them out. The company was young those days, the team was small, so we decided to make a tiny game being 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 will not be able to generate PC class visuals. We decided that the mobile version will be a simple game based on a tactical view.
The first stage of our work was to run our engine on iPhone. PC version was using up my whole daytime, so iPhone porting was made by nights. To provide myself optimal work conditions I was sending my family for a seaside vacations. 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 a game logic based on Lua scripts together with a garbage collector function. When I switched them off it occured 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 simple games filling Appstore up we realised, that we are able to develop something unique. Making of 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 be optimised, was a challenge. So we rewrited the game’s mechanics to C++, and we adjusted several elements so they would fit touch screens specifics. For example, we removed a commander running around. We built levels anew. We took that opportunity to adjust missions to mobile devices conditions – more levels but shorter ones. To get better framerate we optimised assets, reduced triangles number, 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. 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 it writes a whole tile in external memory. That reduces greatly a demand for memory transfer, which is a downside in mobile devices. Very clever solution.
Though 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 units 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 passed since we published AWE. A year in mobile devices development is like ten years in consoles. When iPad2 appeared it became obvious 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 shader allowed us to use real postprocessing. Thus, AK 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 aplied 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 started 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. The 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 a history. New devices have better made drivers and well writen code using OpenGL ES just works.
Today, looking at Anomaly Korea screens, we lough at our ancient thoughts of making it in tactical view only. Underestimated possiblities of mobile platforms allowed us to create a game that Apple placed in a category of „benchmark games” – because of a visual quality of the game. Anomaly Korea takes visuals to 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.