Ok so I’ve decided to make a 2d game for ‘big screens’. My device targets are:
Windows
Mac (maybe Linux too at some point)
AppleTV
possibly HTML5 browser at some point
(Not so interested in tablets at the moment due to the user interface)
I ideally wanted to target 1080p across the board, as if this would be a nice clean holy-grail standard i.e. 1920x1080. But looking at Unity hardware stats (http://hwstats.unity3d.com/pc/index.html) I see a much less favorable situation.
AppleTV: its for HD televisions, so that means either 1080p or 720p or even 4k for some people. I couldn’t find stats on the market share of each other than that it sounds like only the cheapest TV’s being sold these days are 720p and most are 1080p with a small % of 4k users. I’ve no idea the percentage but I know AppleTV supports 1080p and 720p and probably… 80% are 1080p? At least they’re all 16:10 aspect ratio.
Windows: 88% of users have a widescreen monitor at mostly 16:10 aspect ratio. However, only 52% of users have 1920x1080 resolution, the other 38% are lower. There are barely any 16:9 aspect displays.
Mac: 95% of users have widescreen but only a meagre 15% have 1080p. There are two other lower resolutions with over 30% market share each (1280x800 and 1440x900, both of which are 16:9). Also there’s a few % of users with 1920x1200.
Linux I have no idea but I imagine its similar to Windows since it runs on PC hardware?
HTML5: Being browser-based, although there is the option of going fullscreen (does HTML5 support that?). Either way, this means opening up to ALL resolutions. The browser display could be forced to 16:10 only with some extra bars when needed, but it still means multiple resolutions.
For 2D, maintaining ‘pixel perfect’ is going to be a challenge. It looks like it would be insane to not support 16:9 (for majority of Mac) and also other lower-res 16:10 modes on Windows, otherwise we’re looking at only 52% windows and 15% Mac market share. That means the game pretty much HAS to support resolutions lower than 1080p. Also since Mac is a bit hell-bent on 16:9, including 1920x1200, that means decisions have to be made about how to fit the display into it. If I design for 1080p (and I have a hud that runs across the bottom of the screen with a fixed width), it probably means adding black strips at the top and bottom of the display in 16:9. Not a huge deal I guess, and better than cropping horizontally.
But supporting these multiple resolutions now means the graphics have to scale down elegantly. And to do this for 2D graphics is a challenge.
The ideal would be to make unique graphics files for every resolution. i.e. ‘native graphics’. This would mean at least several sets of graphics - 1920x1080, 1920x1200, 2560x1440, 1440x900, 1280x800,1280x720, etc. That’s a lot of graphics and probably out of the question.
So likely it means one set of graphics, targeting a 1920 display width. So what’s the option… scale down the graphics. Either nearest neighbor or filtered. Filtered basically blurs the graphics and loses the ‘crisp’ clear look of exact 1:1 pixel matches. Nearest neighbor ‘loses’ columns and rows of data and quite possible will mess up with ‘pixel snap’ because it shifts each vertex independently, resulting in occasional enlarging and shrinking effects, which would ‘pop’ rows and columns in and out noticeably. Is this the only choice? Do I have to settle for less than ideal and just accept it?
I guess the aim is to preserve the quality of pixel art as much as possible, and sometimes a single pixel disappearing can seem to affect shapes and details quite a lot. But maybe it’s just mathematically impossible to deal with this without hand-drawing art for every unique resolution.