Thursday, 24 May 2012

Retina resolution and lazy developers

This blog has been sitting in my drafts for many weeks and would have been more relevant a while back but I though I'd finish it anyway...

A lot has been said about the new iPad's wonderful Retina resolution. Apple fanboys love it and are, seemingly, running magnifying glasses over every app, counting the pixels. Only full retina resolution is good enough. This is understandable as it is the main difference between it and the iPad2 and does look amazing.

It's also pretty easy to support. For Topia, and I imagine most other 3D universal apps, it 'just worked', the test for Retina that already existed for iPhone just kicked in and doubled the resolution, there were two issues though, one was that the UI was too small (this took an hour to fix), the other is the subject of the rest of this blog...

So, everyone who has bought a new iPad is waiting for stunning new retina-supporting games and excitedly downloading updates for their existing apps (which are all at least several megabytes bigger, but that's another story) and any dev who delivers an app that runs at full speed in 2048x1536 gets a bunch of fresh five star reviews, applauded in forums and called awesome in podcasts while those who don't are considered disappointing at best, lazy at worst.

 Lazy devs

Consider two developers:

Developer A

Imagine a developer aiming to support the first iPad. Rendering terms the new iPad is much more than 8X faster so has no trouble at all filling 4X the pixels. In code terms support for the new iPad might take an hour or so or in some cases, no work at all. 2D graphics redesigns of course take much longer but that depends on the game.

Developer B

Now consider a developer who was making the most of the extra horsepower of iPad2, adding cool shaders to make a game that looks more Xbox360/PS3 than 10-year-old-PC.
It's very likely that when it was first run on the new iPad at Retina res, the frame rate dropped considerably.

At this point they have several options:

  1. Accept the lower frame rate
  2. run at a lower resolution
  3. make the Retina version run full res but use cut down shaders so it doesn't look quite as cool as iPad2
  4. Optimise (and maybe pull a few features from) the 'nice mode' shaders so the Retina version runs full speed and the visual quality of the iPad2 version is slightly compromised
  5. as above but add an optional super-shader mode (possibly even beyond what you're doing for iPad2) that really shows of what the graphics chip can do but at non-retina resolution

Unfortunately, at the moment at least, the first three options would result in complaints and one star reviews from the pixel-counters. Option 4 is the only sane way to go (other than being Developer A).

Option 5 is of course the real solution but I think it would just confuse people and not worth the risk.

The question is of course, who is the lazy developer? A or B? I know who the stupid, time wasting developer is already...