Sprite sheets are the “correct” way to add animation into your game/app with Corona SDK.
If you do use sprite sheets, you need to be aware of what's called the "Maximum Texture Size".
Each device has its maximum texture size, a maximum size for a single picture.
With Corona SDK you can get the device’s maximum texture size using the system.getInfo("maxTextureSize"), but that’s obviously for runtime, in order to make sure you are not trying to load an image larger than the maximum.
When creating a new sprite sheet you need to consider its size.
So how big a sprite sheets should be?
Let’s check the details:
(According to
http://www.glbenchmark.com/
and
http://developer.apple.com/library/ios/#documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/OpenGLESPlatforms/OpenGLESPlatforms.html)
Device | Maximum texture size |
iPod Touch | 1024 x 1024 |
iPod Touch (Second Generation) | 1024 x 1024 |
iPod Touch (Third Generation) | 2048 x 2048 |
iPod Touch (Fourth Generation) | 2048 x 2048 |
iPhone | 1024 x 1024 |
iPhone 3G | 1024 x 1024 |
iPhone 3GS | 2048 x 2048 |
iPhone 4 | 2048 x 2048 |
Samsung GT-i9100 Galaxy S2 | 4096 x 4096 |
Google Nexus S | 2048 x 2048 |
HTC EVO 4G+ | 4096 x 4096 |
HTC Vision (Desire Z) | 4096 x 4096 |
LG P990 Optimus 2X | 2048 x 2048 |
HTC G1 | 1024 x 1024 |
Barnes & Noble Nook color | 2048 x 2048 |
As you can see from the table above, most devices built in the last two years are most likely to support 2048 x 2048 but older will require 1024 x 1024.
Conclusion:
As a guideline try to use 1024 x 1024 sheets only.
Use small amount of memory and target most of the mobile devices out there.
Go up to 2048 x 2048 if you don’t have other choice.
Jumping to 4096 x 4096 is not an option (currently not supported by Apple at all), unless you target your software for a specific device.