Crowni Crowni - 5 months ago 20x
Java Question

libGDX : desgin game assets according different size screens

I develop and design assets (background, buttons,... etc) of my game, but when I design any asset I don't know which screen size do I design?. Many screen sizes different in Android devices or

devices. So, if I start design with largest screen, other devices screen's dimensions will be not good and the assets will be too heavy on old devices, and vice if I start design with small screen, other devices screen will be low resolution (if I used for example

for example:

stage = new Stage(new StretchViewport(480, 800));

this line on Galaxy note 3 (1080 x 1920) is low resolution

Is there standard designing for the game assets?

Anyone can help me ?


Well there are many ways to achieve your goal. It depends a lot on the game you create so I can give you only a brief overview what works for me:

Create your assets bigger than the biggest screen you support. F.e. you support 2560x1600 then go with something like 3200x2000.

Create a TextureAtlas for each TEXTURE_SIZE you support. Smartphones have a MAX_TEXTURE_SIZE you can load into the memory. Its usually 1024x1024, 2048x2048, 4096x4096 (Newer phones and desktop graphic cards might even support even more like 8192x8192 or bigger) I create then 3 TextureAtlas: 4096 with 1:1 scaling, 2048 scaled bei 50%, 1024 scaled by 25%.

On the devices read the MAX_TEXTURE_SIZE, this snippet can do that.

public final static int maxTextureSize() {
         * See;wap2
        IntBuffer max = BufferUtils.newIntBuffer(16);
        max.clear();, max);
        return max.get(0);

Then load the TextureAtlas based on the support MAX_TEXTURE_SIZE.

You can even go further. Just some ideas:

  • you can calculate the perfect Texel size for the current device and repack an TextureAtlas having 1:1 screen pixel fitting asset pixel. Then load from that atlas.

  • Some devices may accept an 4096 texture size but their screen is very small so the 2048 version might work aswell, then load the smaller one.