html5 canvas game - how to add retina support

Jarrod picture Jarrod · Sep 2, 2012 · Viewed 10.7k times · Source

I'm creating an HTML5 canvas game for iPhone. I would like to support both retina and non-retina displays.

My question is, how do I support both retina and non-retina displays?

I.E., what is the general implementation for doing this? Do I write the game using the iPhone dimension and then add retina support? Or do I create the game retina size and add non-retina support? Is it best to have two images, one retina one non-retina? or just scale the retina image down? Do I have separate canvas sizes for retina and non-retina? Do I need to scale the mouse input?

Basically, I have no idea on the general idea/logic to implementing both.

Cheers, J

Answer

Mikko Ohtamaa picture Mikko Ohtamaa · Sep 2, 2012

You use devicePixelRatio to separate retina displays from normal displays

Your game logic coordinates (sprite positions, etc.) must operate independently from the screen coordinates which will be always 2x multiplied on the retina display.

Your graphics assets must have two versions. High resolution version and 50% scaled down normal version. When you operate on retina display, you draw 2x size canvas, resized with CSS and on this canvas use high resolution assets.