Why ipad games must have texture atlases for both iphone and ipad?

Why ipad games must have texture atlases for both iphone and ipad?
0.0 0


I found that Cocos 2D-X requires me to have both iphone and ipad texture atlases (png + plist) in order to run the game on iPad and Android Tablet. The same for custom fonts. So I need foo.png + foo.plist + foo-ipad.png + foo-ipad.plist even though my game is only playable on big screens.

In the same time Cocos does not require me to provide a special ipad version for standalone background images and localization files . Although Cocos tries to find those files but it can work without them. But Cocos-based game does not work without both iphone and ipad resources for atlases and fonts.
The problems become much worse with iPad Retina: now I have to provide all 4 combinations: iphone plain + iphone retina + ipad plain + ipad retina. That does not seem right for me. I’d rather call this a bug or misfeature.
Why Cocos needs localization with
ipad suffix? Why it needs both iphone and ipad atlases/fonts? If there is no iphone atlases/fonts the game just crashes because Cocos can’t find a sprite although that sprite is inside ipad resources. Why it needs iphone/hd + ipad/hd in order to run game on Retina? If there is no iphone/hd resources then Cocos just crashes because Cocos can’t find a sprite although that sprite is insideipadhd resources.

What am I missing? Maybe I don’t understand how it supposed to work? Maybe this is a real bug?


попробую объяснить на примере айфона. Если мне надо чтобы игра запускалась только на 4 айфоне, то я использую картинки для четвертого айфона, но без суффикса “hd" и в AppDelegae вызываю pDirector>enableRetinaDisplay(true); . Если надо чтобы приложение запускалось на 3 и 4 айфоне, то графику которая для тройки я не трогаю, а в графику для 4-ки добавляю суффикс”hd" и в AppDelegae вызываю pDirector>enableRetinaDisplay(true);. Думаю с айпадами должно быть аналогично, только суффикс будет “~~ipadhd" хотя я не пробовал.
Если я правильно понял то тебе надо чтобы приложение запускалось только на 3-м айпаде, а для остальных разрешений у тебя нету графики. Ты своим ресурсам добавляешь суффиксы "~~ipadhd” и после этого приложение падает. На твоем месте я бы просто убрал суффиксы "ipadhd" и в AppDelegae вызывал pDirector>enableRetinaDisplay(true);

надеюсь я правильно понял вопрос.

кстати поддержка разрешений в новом кокосе теперь выглядит по другому: http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Multi_resolution_support


This is what I was doing when I was still using cocos2d-x-2.0.2. I would need four separate sizes for a single image then everything will work fine. Then came the file size issues as the HD assets were just too big. Though, I don’t think this is a bug and is intended to support HD devices such as those with Retina display.

You could opt to NOT use the HD ones by using the setRetinaEnabled* function. I guess this was already pointed out by the guy above but I can’t read anything he said.
Anyway, another method is to scale your assets accordingly using
setContentScaleFactor()*. This is a good read regarding this issue: http://www.jesusbosch.com/2012/06/cross-platform-and-cross-device-screen.html


@Alexander Belchenko

You can only have one resolution resource if you don’t care the effect. Cocos2d-x support only one resolution resource for all resolutions.
You can read this article for detail information: http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Multi_resolution_support.