One of the first things you have to understand is that hitting pixel perfect images simply isn’t practical. In the days were screens were 320x480 or 640x960 it was, but today with the endless number of shape and size screens.
Next, understanding this guiding principle of digital imagery: Images scale down better than they scale up (there are exceptions to this rule) but scaling up images get blurry, scaling down tends to retain sharpness.
Once that’s understood, then you have to think about your virtual screen size. Popular ones are 320x480 and 800x1200. And there are basically two to three screen sizes. Low density, medium density and high density screens. If you use 320x480, you will target all three, if you use 800x1200 then you will target two…
You should create 1X, 2X and 4X resolution versions. So if you’re building a card game, you might make your cards 64x96 for the 1X sized image. The 2x version would be 128x192 and the 4x would be 256x384. Since we want to start with the highest resolution graphics, you would actually create the 4x version first, and then resize them in photoshop by 50% to make the 2x and then the 1x version.
Why those odd numbers? Well you can make them whatever size you want, but computers are more efficient when you’re using Power of Two numbers (2, 4, 8,16, 32, 64,128, 256, 512, 1024, 2048 etc.) But todays devices are fast enough and if you art makes sense to be 74px x 213px make it fit.
Normally we use a specific naming convention for artwork. Lets say you’re making a button thats 100x50 and you want to name it button.png, then you would end up with button.png (100x50), button@2x.png (200x100) and button@4x.png (400x200). If you’re using an 800x1200 content area we are only going to have two files: button.png (200x100) and button@2x.png (400x200).
If your config.lua is configured properly and you use display.newImageRect() in your code, Corona will automatically use the right sized image for the screen.
So determine your config.lua’s content area (320x480, 800x1200, etc), build your images 4x bigger than you need them (or 2x bigger with a larger content area) and then downsize to the 2x an 1x images.
Rob