Full HD app playing on all devices, with Corona SDK. Please post your Tips

It’s been about 1,5 week I’m using Corona, and I think that maybe I’m not using it the correct way trying to reach my goals. What are these?:

I want to make an HD app.

I want my app to look the SAME across all Armv7 (and up) devices.

I want to have the lowest loading times, and texture memory load possible.

I want my graphics, like Images and Sprites, to look Crystal clear in ALL devices.

So, having in mind the above goals, I set up my files like this:

config.lua:

-- config.lua for project: zxc -- Managed with http://CoronaProjectManager.com -- Copyright 2013 . All Rights Reserved. application = { content = { width = 320, height = 480, scale = "zoomStretch" }, license = { google = { key = "Your key here" }, }, }

build.lua

-- build.settings for project: BioLab -- Managed with http://CoronaProjectManager.com -- Copyright 2013 . All Rights Reserved. settings = { orientation = { default = "landscapeRight", }, iphone = { plist= { UIStatusBarHidden=true, }, }, android = { --usesExpansionFile = true, usesPermissions = { "android.permission.INTERNET", "com.android.vending.CHECK\_LICENSE", "android.permission.WRITE\_EXTERNAL\_STORAGE" }, }, }

Note that I have commented “usesExpansionFile”. I will need it for Android, but not yet, so I have commented it for future use.

And now how I load my HD images in my storyboard files. For example:

local background = display.newImageRect(main_menu, “images/menu/main_menu/background.png”,  480, 320)

background.x=240

background.y=160

The background.png in my example, is finely nested inside my folders.

It is 1920x1080 with a resolution of 300dpi.

All other images and sprites are high definition as well. Smaller grafics are not 1920x1080 in image size of course, but they are still full HD (their image size is a percentage of an 1920x1080 file, depending of the part of the screen I want them to cover).

AM I OVERDOING IT?

Is 1920x1080 too much? Is 300dpi needed? Remember I want to support all devices with Crystal Report clear graphics. There are Full HD devices like Galaxy s4 and HTC One, getting a big share in the market. Are, in my config.lua, my content width and height settings wrong or right?

The problem is the loading time (which is veeeery long) and Texture Memory usage, which is veeery big.

Please post your TIPS and BEST PRACTICES, fitting my goals.

Thank you.

Gnana sekar

  1. 320x480 as the config resolution is too small.  Better to use at least 640x960.

  2. Zoom stretch will probably look terrible, better to use  “letterbox” and understand the concept of bleed space.  The only reason I can see to use zoom stretch scaling is if you have fixed images that must be displayed in whole on all screens, but then they will look stretched or squished or both.

  3. Honestly, you should make a smally dummy app with dummy images showing us what you’re trying to do.  Its hard to give advice without seeing actual usage that matches the end-goal.  

To me this sound like you simply what to make a slide show or something.

  1. Storyboard?  You’re not using the storyboard library are you?  If so, switch to composer.*

The config.lua defines a virtual content area for your app. It really doesn’t have much to do with high-def/high-resolution.  If you use a 320x480, you can still provide high-res images using Corona’s dynamic image selection (@2x, @4x etc.). There is nothing wrong with a 320x480 content area even on a high-end device, just that each “point” represents multiple pixels.

I concur with @roaminggamer with using “letterbox” instead of “zoomStretch”.  The virtual content area is typically centered on the device’s screen meaning on a 1080x1980 device, the 320x480 content area is scaled up but there is still some area of the screen that’s outside the defined content area.  To give a better example, the iPhone 5, is a device based on the same aspect ratio of a 1080x1920 device, but it’s 640x1136.  A defined config.lua of 320x480 would dynamically pick @2x images and the content area scaled 2x to 640x960. However, there are 176 other pixels or when converted to content points, 88 additional points, 44 on either side of the content area that makes up the physical screen.   

You have to fill that area with content even though it’s outside of the defined area.  This is what @roaminggamer is referring to by bleed space. 

Rob

  1. 320x480 as the config resolution is too small.  Better to use at least 640x960.

  2. Zoom stretch will probably look terrible, better to use  “letterbox” and understand the concept of bleed space.  The only reason I can see to use zoom stretch scaling is if you have fixed images that must be displayed in whole on all screens, but then they will look stretched or squished or both.

  3. Honestly, you should make a smally dummy app with dummy images showing us what you’re trying to do.  Its hard to give advice without seeing actual usage that matches the end-goal.  

To me this sound like you simply what to make a slide show or something.

  1. Storyboard?  You’re not using the storyboard library are you?  If so, switch to composer.*

The config.lua defines a virtual content area for your app. It really doesn’t have much to do with high-def/high-resolution.  If you use a 320x480, you can still provide high-res images using Corona’s dynamic image selection (@2x, @4x etc.). There is nothing wrong with a 320x480 content area even on a high-end device, just that each “point” represents multiple pixels.

I concur with @roaminggamer with using “letterbox” instead of “zoomStretch”.  The virtual content area is typically centered on the device’s screen meaning on a 1080x1980 device, the 320x480 content area is scaled up but there is still some area of the screen that’s outside the defined content area.  To give a better example, the iPhone 5, is a device based on the same aspect ratio of a 1080x1920 device, but it’s 640x1136.  A defined config.lua of 320x480 would dynamically pick @2x images and the content area scaled 2x to 640x960. However, there are 176 other pixels or when converted to content points, 88 additional points, 44 on either side of the content area that makes up the physical screen.   

You have to fill that area with content even though it’s outside of the defined area.  This is what @roaminggamer is referring to by bleed space. 

Rob